{
  "markdown": "# @makerportal/mcp\n\nThree deterministic engineering solvers as MCP tools, from\n[makerportal.ai](https://makerportal.ai).\n\n| Tool | What it answers |\n|---|---|\n| `biquadDesign` | RBJ-cookbook biquad coefficients at any sample rate, pole/zero geometry, the real −3 dB crossings, a Q sweep, a gain sweep, and what 16/24/32-bit word lengths do to stability and in-band error |\n| `roomModes` | Every eigenmode of a rectangular room below a cutoff, axial/tangential/oblique, pile-ups, the Bolt-area proportion test, and Schroeder crossovers at two assumed RT60 values |\n| `llmVramFit` | Whether a given model fits a given accelerator at every quantization — weight bytes, KV cache, headroom, the largest context that fits, and the bandwidth-limited decode ceiling |\n\n**Every tool runs the identical function that renders the published page.** Not\na port of it, not a re-derivation — the same function, reached by reference\nthrough one registry. So an answer from this server and the answer on\n`makerportal.ai` cannot disagree, and a check in that repository re-computes\nevery published page through the registry and fails the build if one ever does.\n\nNothing is fetched from a third party and nothing is recalled by a language\nmodel. The same inputs always produce the same answer.\n\n## Licence, and what it does and does not cover\n\nThe code in this repository is **MIT** (see [`LICENSE`](LICENSE)) — a transport\nshim, roughly 400 lines of JavaScript.\n\n**It does not cover the answers the package retrieves.** Results from\nmakerportal.ai carry `license: \"free-with-attribution\"` and a\n`provenance.canonicalUrl`; use them, and cite that URL.\n\n> This note lives here rather than at the foot of `LICENSE`, and that is not\n> cosmetic. GitHub classifies a licence by matching its TEXT, so six lines\n> appended after the MIT body dropped the file below the detector's similarity\n> threshold and the repository reported `NOASSERTION` — no licence at all, on a\n> package asking to be trusted. The same mistake was made and fixed in\n> `makerportal/reference-vectors` the same day. Keep `LICENSE` verbatim; put\n> every clarification somewhere else.\n\n\n## Where this lives, and what it does not contain\n\nThis repository is the source for [`@makerportal/mcp`](https://www.npmjs.com/package/@makerportal/mcp).\nIt is public on purpose: the package's whole claim is that it is a transport\nshim holding no answers of its own, and that claim is only worth anything if\nyou can read it.\n\n`boundary.test.mjs` is what makes it a claim rather than a promise — it packs\nthe real tarball and greps every packed byte for solver symbols, so a filter\ndesign or an eigenmode solve cannot be added here without failing CI.\n\nReleases are published from `.github/workflows/publish.yml`. Every publish is\nOIDC **trusted publishing**: the workflow exchanges a short-lived GitHub-issued\ncredential (bound to this repository, the `publish.yml` workflow file and the\n`npm-publish` environment) for the publish itself, and npm generates the\nprovenance attestation automatically. No npm token can publish this package,\nand no long-lived write credential exists anywhere in the pipeline.\n\n\n## Install\n\nNothing to install. Point your MCP client at it.\n\n### Claude Code\n\n```bash\nclaude mcp add makerportal -- npx -y @makerportal/mcp\n```\n\nClaude Code also speaks HTTP directly, in which case this package is not\ninvolved at all:\n\n```bash\nclaude mcp add --transport http makerportal https://makerportal.ai/api/mcp\n```\n\n### Cursor, Claude Desktop, and anything else reading `mcpServers`\n\n`~/.cursor/mcp.json` (or `.cursor/mcp.json` for one project;\n`claude_desktop_config.json` takes the same block):\n\n```json\n{\n  \"mcpServers\": {\n    \"makerportal\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@makerportal/mcp\"]\n    }\n  }\n}\n```\n\n### ChatGPT and other clients that take a remote URL\n\nAdd `https://makerportal.ai/api/mcp` as a remote MCP server. It is stateless\nstreamable HTTP, so there is no session to establish and nothing to keep warm.\n\n## Configuration\n\nBoth variables are optional. **The keyless free tier is the default path and\nneeds no configuration at all.**\n\n| Variable | Effect |\n|---|---|\n| `MAKERPORTAL_LICENSE_KEY` | Sent as `Authorization: Bearer …`. Never logged, never written to disk, never included in an error message |\n| `MAKERPORTAL_API_URL` | Endpoint override, for development against a local server. Must be `https://` — plain `http://` is accepted only for `localhost`, `127.0.0.1` and `[::1]`. Defaults to `https://makerportal.ai/api/mcp` |\n\n## What comes back\n\nEvery result is the same envelope the HTTP API returns:\n\n```jsonc\n{\n  \"inputs\":  { /* your inputs, parsed, with defaults filled in */ },\n  \"result\":  { /* the solved analysis */ },\n  \"provenance\": {\n    \"method\": \"…how it was computed and what its inputs are…\",\n    \"canonicalUrl\": \"https://makerportal.ai/lab/biquad/lowpass/1000-hz\"\n  },\n  \"license\": \"free-with-attribution\"\n}\n```\n\n**`provenance.canonicalUrl` is the published page stating exactly this answer**\nwhen your inputs are on the published grid, and the lane hub when they are not.\nCite it. That is the whole deal: the compute is free, and the attribution is\nthe price.\n\nTwo things worth knowing before you parse a result:\n\n- **Numbers that are not finite come back as the strings `\"Infinity\"`,\n  `\"-Infinity\"` and `\"NaN\"`.** These are real answers — a notch is −∞ dB at its\n  centre frequency, a low-pass is −∞ dB at Nyquist. JSON has no numeric literal\n  for them, and `null` would be a different claim.\n- **Bad arguments come back as JSON-RPC `-32602` with every valid value.** Ask\n  for `type: \"bogus\"` and the error names all eight filter types. That list is\n  there so an agent can fix its own next call.\n\n## What this package is\n\nA transport shim, and deliberately nothing more: it translates stdio JSON-RPC\ninto HTTP POSTs. There is no filter design, no eigenmode solve and no VRAM\narithmetic in this package — a local copy would drift from the site the moment\neither side changed, and you would have no way to tell which of the two answers\nyou were reading.\n\n## Trust boundary\n\nThis bridge forwards makerportal.ai's answers **verbatim**, which includes the\ntool descriptions and `instructions` your agent may show the user. Installing\nthis package extends your agent's trust to that one host. Concretely:\n\n- Every request is a POST to `https://makerportal.ai/api/mcp` (or your\n  `MAKERPORTAL_API_URL`); no other network destination exists in this package,\n  and nothing executes at install time.\n- Responses are size-capped and time-capped, and a credential in\n  `MAKERPORTAL_LICENSE_KEY` never appears in an error message or a log.\n- Tool descriptions and instructions come from the server, like every MCP\n  server. If that matters for your threat model, pin the version and read the\n  changelog.\n\n## API without MCP\n\nThe same three solvers are plain GET endpoints, described by an OpenAPI 3.1\ndocument:\n\n- `https://makerportal.ai/api/v1/biquad-design?type=lowpass&freq=1000`\n- `https://makerportal.ai/api/v1/room-modes?width=12&length=16&height=8`\n- `https://makerportal.ai/api/v1/llm-vram-fit?model=llama-3-1-8b-instruct&gpu=rtx-4090`\n- `https://makerportal.ai/api/openapi.json`\n\n## Licence\n\nMIT for this package. `free-with-attribution` for the answers — see `LICENSE`.\n",
  "bytes": 7285,
  "sha": "71d75e24a95f0cc018879a6f3d7e22cc109264be4e028098e21120c3f241edb8",
  "repo_slug": "makerportal/mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_ai_makerportal_compute_01001507/readme"
}