envpact-registry-publisher
Publish once, appear everywhere — programmatically submit an MCP server to every public MCP registry on every npm publish, so you never hand-fill six web forms again.
Programmatic submission of MCP servers to every public MCP registry — on every npm publish, automatically.
Links: Repo · Live docs · envpact umbrella
Replaces the manual MCPREGISTRYSUBMISSION.md checklist with a single CLI + GitHub Action that runs at the tail of envpact-mcp's publish workflow (or anyone else's).
⭐ If this is useful, please star the repo — it helps other developers find it.
How it works
flowchart LR
pub[npm publish] --> cli[[envpact-registry-publisher<br/>CLI / GitHub Action]]
cli --> official[Official MCP Registry<br/>required]
cli --> smithery[Smithery]
cli --> glama[glama.ai]
cli --> mcpso[mcp.so]
cli --> awesome[awesome-mcp-servers PR]
server[server.json] --> cliWhy this exists
The MCP-registry ecosystem in 2026 is split across:
| Registry | Submission method | | :--- | :--- | | Official MCP Registry (registry.modelcontextprotocol.io) | mcp-publisher CLI + server.json | | Smithery (smithery.ai) | API endpoint + bearer token (Playwright fallback if API rejects) | | glama.ai | Passive — auto-indexes from the official registry | | PulseMCP | Passive — same | | mcp.so | Web form only (Playwright drives it) | | punkpeye/awesome-mcp-servers | Pull request (driven by gh CLI) |
Doing six different things by hand on every release does not scale.
Install
npm install -g envpact-registry-publisherOr run as a GitHub Action:
- uses: chirag127/envpact-registry-publisher@v0
with:
server-json: ./server.json
env:
SMITHERY_API_KEY: ${{ secrets.SMITHERY_API_KEY }}
MCP_PUBLISHER_TOKEN: ${{ secrets.MCP_PUBLISHER_TOKEN }}
GH_PAT: ${{ secrets.GH_PAT_FOR_PR }}Use
envpact-registry-publish ./server.json