{"_id":"@makerportal/mcp","_rev":"2-122bb071cbde25722f53eb072f288711","name":"@makerportal/mcp","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@makerportal/mcp","version":"0.1.0","keywords":["mcp","modelcontextprotocol","dsp","biquad","acoustics","room-modes","llm","vram"],"author":{"name":"MakerPortal"},"license":"MIT","_id":"@makerportal/mcp@0.1.0","maintainers":[{"name":"makerportal","email":"engineer@makersportal.com"}],"homepage":"https://github.com/makerportal/mcp","bugs":{"url":"https://github.com/makerportal/mcp/issues"},"bin":{"makerportal-mcp":"bin/makerportal-mcp.mjs"},"dist":{"shasum":"f6c9c1d0e233ed26cc23f713cd5f557700c48a5e","tarball":"https://registry.npmjs.org/@makerportal/mcp/-/mcp-0.1.0.tgz","fileCount":7,"integrity":"sha512-5jxpGAtkt+NNOdPVm3zX3zuO4bzF/YgoXT/iswxj8PsR/Kh8MOUD9eK85NRtM42IjwF6Iofz5QE8Ul6DpU6L4g==","signatures":[{"sig":"MEUCIQD9+gkKKpKvjTmfR1XOp1++vjpUbN/JBHSCSY1zmyUtewIgMZau+GCocYopShRKvDjaG2sOEj58sA4xk5B5WUbesBw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@makerportal%2fmcp@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":31169},"type":"module","engines":{"node":">=20.10.0"},"exports":{".":"./src/bridge.mjs","./protocol":"./src/protocol.mjs"},"gitHead":"e228be0169a6fee2a85ea4c2f042bbfed09c64e8","mcpName":"ai.makerportal/compute","scripts":{"test":"node --test *.test.mjs"},"_npmUser":{"name":"makerportal","email":"engineer@makersportal.com"},"repository":{"url":"git+https://github.com/makerportal/mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"MCP server for the MakerPortal compute API — biquad filter design, rectangular-room eigenmodes, and LLM VRAM fit, computed by the same functions that render makerportal.ai.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"@modelcontextprotocol/sdk":"1.30.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp_0.1.0_1788553355638_0.4387256235918904","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"_id":"@makerportal/mcp@0.1.1","bin":{"makerportal-mcp":"bin/makerportal-mcp.mjs"},"bugs":{"url":"https://github.com/makerportal/mcp/issues"},"dist":{"shasum":"663f092d0d9b93ae19f1adde3a9e67316f762132","tarball":"https://registry.npmjs.org/@makerportal/mcp/-/mcp-0.1.1.tgz","fileCount":7,"integrity":"sha512-ARNBQJcFYAyQP9o2ucCbPTSCMwMIWOIr9Y8lyTYD5AzCGUKRIcEV5b2zZo9ROURdEShPWhbH+xyBPIJ7uJ9Nmg==","signatures":[{"sig":"MEYCIQDlyZbwu/rEI/vrZDoygDfgBbWSHMUYqvoI7inau6NrcwIhAMYLAW5Y/QSCumh+7/vVaWHEdy2jBESJTdYN2UeOb2es","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCUyS3xAcESsX8QKuXdWcOQNT8LO4dsi2TDCq6AaS+8wwIhAN87oZdJ01f2bFnY6uqn0k//pH0S6m8N3O9RbzG4zkK5"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@makerportal%2fmcp@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":31437},"name":"@makerportal/mcp","type":"module","author":{"name":"MakerPortal"},"engines":{"node":">=20.10.0"},"exports":{".":"./src/bridge.mjs","./protocol":"./src/protocol.mjs"},"gitHead":"f1c6cffb28038f56efba7d87eb84b9c808a0f654","license":"MIT","mcpName":"ai.makerportal/compute","scripts":{"test":"node --test *.test.mjs"},"version":"0.1.1","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:beba2b33-d545-4e84-9419-4810f38f4f25"}},"homepage":"https://github.com/makerportal/mcp","keywords":["mcp","modelcontextprotocol","dsp","biquad","acoustics","room-modes","llm","vram"],"repository":{"url":"git+https://github.com/makerportal/mcp.git","type":"git"},"_npmVersion":"11.19.1","description":"MCP server for the MakerPortal compute API — biquad filter design, rectangular-room eigenmodes, and LLM VRAM fit, computed by the same functions that render makerportal.ai.","directories":{},"maintainers":[{"name":"makerportal","email":"engineer@makersportal.com"}],"_nodeVersion":"22.23.2","dependencies":{"@modelcontextprotocol/sdk":"1.30.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp_0.1.1_1788554559830_0.23816857902071864"}}},"time":{"created":"2026-09-04T20:22:35.439Z","modified":"2026-09-04T20:42:40.234Z","0.1.0":"2026-09-04T20:22:35.786Z","0.1.1":"2026-09-04T20:42:39.910Z"},"bugs":{"url":"https://github.com/makerportal/mcp/issues"},"author":{"name":"MakerPortal"},"license":"MIT","homepage":"https://github.com/makerportal/mcp","keywords":["mcp","modelcontextprotocol","dsp","biquad","acoustics","room-modes","llm","vram"],"repository":{"url":"git+https://github.com/makerportal/mcp.git","type":"git"},"description":"MCP server for the MakerPortal compute API — biquad filter design, rectangular-room eigenmodes, and LLM VRAM fit, computed by the same functions that render makerportal.ai.","maintainers":[{"name":"makerportal","email":"engineer@makersportal.com"}],"readme":"# @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","readmeFilename":"README.md"}