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

@mcpolyglot/cli

v0.4.3

Published

mcpolyglot command-line interface. Initializes config, serves the MCP server (stdio or HTTP), and validates connectivity.

Readme

@mcpolyglot/cli

The mcpolyglot command-line interface. Scaffolds a config, validates connectivity, lists tools, and serves the MCP server over stdio or Streamable HTTP.

npx @mcpolyglot/cli init       # interactive wizard
npx @mcpolyglot/cli doctor     # validate config, ping sources, list tools
npx @mcpolyglot/cli tools      # list tools mcpolyglot would expose
npx @mcpolyglot/cli serve      # start the MCP server (stdio)
npx @mcpolyglot/cli serve --http --port 7337   # start over Streamable HTTP

Commands

| Command | Purpose | | -------- | -------------------------------------------------------------------------- | | init | Interactively scaffold an mcpolyglot.config.ts in the current directory. | | doctor | Load + validate config, resolve secrets, ping each source, list tools. | | tools | Print every tool mcpolyglot would expose for the current config. | | serve | Start the server. --http flips to Streamable HTTP with bearer auth. | | token | token create <agentId> mints a per-agent token; token hash hashes one. |

serve --http prints the bearer token, MCP URL, and /healthz URL on stderr. Pin the token in your config (transport.auth.token) for stable deployments; omit it to mint a fresh token on each start.

Multiple agents over HTTP

Give each agent its own token, sources and scopes. Tokens are stored only as sha256 hashes:

mcpolyglot token create analyst       # prints the token once, its hash, and a config snippet
echo -n "$TOKEN" | mcpolyglot token hash
agents: [
  {
    id: 'analyst',
    tokens: [{ hash: '<sha256 hex>', label: '2026-09' }],
    scopes: ['schema:read', 'tables:read', 'query:raw'],
    sources: { 'pg.main': { policy: { tables: { users: 'none' } } } },
  },
],
  • An agent sees only tools of the sources listed under it, and only tools its scopes fully cover. scopes defaults to, and is capped at, the union of those sources' scopes.
  • A per-agent policy can only narrow the source's policy: per table the most restrictive access wins, deny lists are combined, and caps take the smaller value. An agent can't re-open a table the source hides or gain writes the source doesn't grant. The reverse also holds: a table the agent's policy doesn't list falls to its defaultAccess (at most read), so an agent that should keep a source's write access must list that table as write again. It gets its own connector, so its own DB connection; sources listed without a policy share the main one.
  • The token decides the audit agentId; the x-mcpolyglot-agent header is ignored when agents is set. Unknown or revoked tokens get 401.
  • Rotate: add the new hash, move the client over, set revoked: true on the old one (or delete it), restart serve. There is no hot reload.
  • agents needs bearer auth (not OAuth) and is ignored under stdio (single local user). doctor lists what each agent can and can't use.

Stdio servers must keep stdout clean, so all CLI output goes to stderr.

Docs

  • Full README → https://github.com/ishay60/mcpolyglot
  • Architecture → https://github.com/ishay60/mcpolyglot/blob/develop/ARCHITECTURE.md
  • Examples → https://github.com/ishay60/mcpolyglot/tree/develop/examples

MIT licensed.