npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@makerportal/mcp

v0.1.1

Published

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.

Readme

@makerportal/mcp

Three deterministic engineering solvers as MCP tools, from makerportal.ai.

| Tool | What it answers | |---|---| | 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 | | 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 | | 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 |

Every tool runs the identical function that renders the published page. Not a port of it, not a re-derivation — the same function, reached by reference through one registry. So an answer from this server and the answer on makerportal.ai cannot disagree, and a check in that repository re-computes every published page through the registry and fails the build if one ever does.

Nothing is fetched from a third party and nothing is recalled by a language model. The same inputs always produce the same answer.

Licence, and what it does and does not cover

The code in this repository is MIT (see LICENSE) — a transport shim, roughly 400 lines of JavaScript.

It does not cover the answers the package retrieves. Results from makerportal.ai carry license: "free-with-attribution" and a provenance.canonicalUrl; use them, and cite that URL.

This note lives here rather than at the foot of LICENSE, and that is not cosmetic. GitHub classifies a licence by matching its TEXT, so six lines appended after the MIT body dropped the file below the detector's similarity threshold and the repository reported NOASSERTION — no licence at all, on a package asking to be trusted. The same mistake was made and fixed in makerportal/reference-vectors the same day. Keep LICENSE verbatim; put every clarification somewhere else.

Where this lives, and what it does not contain

This repository is the source for @makerportal/mcp. It is public on purpose: the package's whole claim is that it is a transport shim holding no answers of its own, and that claim is only worth anything if you can read it.

boundary.test.mjs is what makes it a claim rather than a promise — it packs the real tarball and greps every packed byte for solver symbols, so a filter design or an eigenmode solve cannot be added here without failing CI.

Releases are published from .github/workflows/publish.yml. Every publish is OIDC trusted publishing: the workflow exchanges a short-lived GitHub-issued credential (bound to this repository, the publish.yml workflow file and the npm-publish environment) for the publish itself, and npm generates the provenance attestation automatically. No npm token can publish this package, and no long-lived write credential exists anywhere in the pipeline.

Install

Nothing to install. Point your MCP client at it.

Claude Code

claude mcp add makerportal -- npx -y @makerportal/mcp

Claude Code also speaks HTTP directly, in which case this package is not involved at all:

claude mcp add --transport http makerportal https://makerportal.ai/api/mcp

Cursor, Claude Desktop, and anything else reading mcpServers

~/.cursor/mcp.json (or .cursor/mcp.json for one project; claude_desktop_config.json takes the same block):

{
  "mcpServers": {
    "makerportal": {
      "command": "npx",
      "args": ["-y", "@makerportal/mcp"]
    }
  }
}

ChatGPT and other clients that take a remote URL

Add https://makerportal.ai/api/mcp as a remote MCP server. It is stateless streamable HTTP, so there is no session to establish and nothing to keep warm.

Configuration

Both variables are optional. The keyless free tier is the default path and needs no configuration at all.

| Variable | Effect | |---|---| | MAKERPORTAL_LICENSE_KEY | Sent as Authorization: Bearer …. Never logged, never written to disk, never included in an error message | | 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 |

What comes back

Every result is the same envelope the HTTP API returns:

{
  "inputs":  { /* your inputs, parsed, with defaults filled in */ },
  "result":  { /* the solved analysis */ },
  "provenance": {
    "method": "…how it was computed and what its inputs are…",
    "canonicalUrl": "https://makerportal.ai/lab/biquad/lowpass/1000-hz"
  },
  "license": "free-with-attribution"
}

provenance.canonicalUrl is the published page stating exactly this answer when your inputs are on the published grid, and the lane hub when they are not. Cite it. That is the whole deal: the compute is free, and the attribution is the price.

Two things worth knowing before you parse a result:

  • Numbers that are not finite come back as the strings "Infinity", "-Infinity" and "NaN". These are real answers — a notch is −∞ dB at its centre frequency, a low-pass is −∞ dB at Nyquist. JSON has no numeric literal for them, and null would be a different claim.
  • Bad arguments come back as JSON-RPC -32602 with every valid value. Ask for type: "bogus" and the error names all eight filter types. That list is there so an agent can fix its own next call.

What this package is

A transport shim, and deliberately nothing more: it translates stdio JSON-RPC into HTTP POSTs. There is no filter design, no eigenmode solve and no VRAM arithmetic in this package — a local copy would drift from the site the moment either side changed, and you would have no way to tell which of the two answers you were reading.

Trust boundary

This bridge forwards makerportal.ai's answers verbatim, which includes the tool descriptions and instructions your agent may show the user. Installing this package extends your agent's trust to that one host. Concretely:

  • Every request is a POST to https://makerportal.ai/api/mcp (or your MAKERPORTAL_API_URL); no other network destination exists in this package, and nothing executes at install time.
  • Responses are size-capped and time-capped, and a credential in MAKERPORTAL_LICENSE_KEY never appears in an error message or a log.
  • Tool descriptions and instructions come from the server, like every MCP server. If that matters for your threat model, pin the version and read the changelog.

API without MCP

The same three solvers are plain GET endpoints, described by an OpenAPI 3.1 document:

  • https://makerportal.ai/api/v1/biquad-design?type=lowpass&freq=1000
  • https://makerportal.ai/api/v1/room-modes?width=12&length=16&height=8
  • https://makerportal.ai/api/v1/llm-vram-fit?model=llama-3-1-8b-instruct&gpu=rtx-4090
  • https://makerportal.ai/api/openapi.json

Licence

MIT for this package. free-with-attribution for the answers — see LICENSE.