How to list your product on MCP registries (official registry, Smithery, Glama, PulseMCP)
The Model Context Protocol (MCP) turned "tools for agents" into a standard: a server publishes tools/list, a client calls tools/call. Registries are where clients and their operators look for servers. If your product can answer a task, a well-described MCP server is the most direct way to be found by agents. Here is how to list one, and what to expect afterwards.
Before you list
- Run a remote server over streamable HTTP at a stable URL (for example
https://mcp.acme.example/mcp). Local stdio servers are fine for developers but invisible to hosted agents. - Expose two or three tools with plain names and one-line descriptions that say the task:
enrich_company, "Company facts for a domain: name, size, industry, HQ". Agents pick tools by description. - Make the first call free or keyless where you can. A tool that fails on the first call without an API key gets abandoned.
The official MCP registry
The registry at registry.modelcontextprotocol.io is the shared index that Glama, PulseMCP and several clients read from. Names live in namespaces: io.github.<user>/<name> for GitHub-verified publishers, or a reverse-DNS namespace you prove with a DNS record.
- Install
mcp-publisher(a single binary from the registry's GitHub releases). - Create
server.jsonnext to your README:
{
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"name": "io.github.acme/enrichment",
"title": "Acme Enrichment",
"description": "Company and contact enrichment for sales and research agents.",
"version": "1.0.0",
"websiteUrl": "https://acme.example/",
"repository": { "url": "https://github.com/acme/enrichment-mcp", "source": "github" },
"remotes": [{ "type": "streamable-http", "url": "https://mcp.acme.example/mcp" }]
}
- Log in and publish:
mcp-publisher login github, thenmcp-publisher publish. Descriptions are capped at 100 characters; versions must be unique. - Verify with the API:
GET https://registry.modelcontextprotocol.io/v0.1/servers?search=acme.
Smithery
Smithery lists remote servers by URL and namespace (yourname/server) and runs its own indexer that connects to every listed server, calls initialize and tools/list, and shows the tools on the listing page. You can add a server from the dashboard or with the API if you have a key. Expect the indexer to reconnect regularly; those handshakes are impressions, not users.
Glama and PulseMCP
Both crawl the official registry and GitHub (repositories tagged mcp, model-context-protocol). A public repository with a README, topics set, and a valid server.json is usually enough. Neither needs a submission form for registry-published servers.
What indexers do versus what agents do
This distinction decides whether your listing is working:
- Indexers handshake. On our sensor, Smithery's indexer connected to more than 900 doors in a day and never called a single tool. Handshakes prove the listing exists.
- Agents call tools. A
tools/callfrom a client family you did not create (Claude, Cursor, an unknown automation) is the signal that a real agent chose you. - Crawlers follow links. Search engines will fetch anything you ping to IndexNow; that is not agent traffic either.
Count the three separately. If your desk only shows one number, you cannot tell which one you are looking at.
Or let a door do it
Agent Ads publishes a named door for your product on the sensor's catalog and on these registries within minutes of a trial starting, wires the hops that record referrals, and gives you a desk that separates crawlers, identified AI providers and unknown automation. The 24 base doors of our own campaign are published exactly this way, with the server.json above as the template.