The official Model Context Protocol (MCP) Registry is a preview metadata repository for publicly accessible MCP servers. It stores server.json records that point to public packages or remote endpoints, not package code or binaries. Its main downstream readers are aggregators and marketplaces, which expose curated or extended data to MCP host applications. To list a server, publish the underlying package or public endpoint, add its ownership marker, create and validate server.json, authenticate its namespace, and run mcp-publisher publish.
Key facts about the MCP Registry
- On 2025-09-08, the MCP project launched the official registry in preview at
registry.modelcontextprotocol.io. - On 2025-10-24, the Registry API entered an API freeze at
v0.1. - On 2026-10-06,
GET https://registry.modelcontextprotocol.io/v0.1/versionreturned service version1.8.1. Thev0.1part is the API path;1.8.1is the version in the live response. - On 2026-10-06, the official publishing guide still marked the registry as preview and warned that breaking changes or data resets could occur before general availability.
- The
server.jsonexamples use the schema athttps://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json. - The public registry does not support private servers. The package or remote installation method must be publicly available.
What the MCP Registry stores
The MCP Registry is a metaregistry. npm, PyPI, Docker and other package registries host code or binaries. The MCP Registry stores metadata that points to those packages. A server can also publish a public remote endpoint in the remotes array.
The metadata format records a server name, version, repository, package or remote location, and execution details. A minimal package entry looks like this:
{
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"name": "io.github.example/weather",
"version": "1.0.0",
"packages": [
{
"registryType": "npm",
"identifier": "@example/weather-server",
"version": "1.0.0",
"transport": { "type": "stdio" }
}
]
}The official registry preserves publisher metadata only under _meta["io.modelcontextprotocol.registry/publisher-provided"], with a 4KB limit. The API response has a separate registry-managed _meta object for lifecycle fields such as status, publishedAt, updatedAt, and isLatest. Publishers cannot set those lifecycle fields.
Who reads the MCP Registry
The official documentation says downstream aggregators are the primary consumers. The public API is unauthenticated and read-only for this use. Aggregators fetch it on a regular but infrequent schedule, persist their own copy, and add curation, ratings, download counts, or security results. The official registry does not provide uptime or data durability guarantees.
Host applications are not intended to consume the official registry directly. They can consume downstream registries that implement the official OpenAPI interface. That gives a host application one API shape while letting each marketplace choose its own curation and security checks.
The live API uses cursor pagination. On 2026-10-06, this query returned two records and a cursor for the next page:
curl -sS "https://registry.modelcontextprotocol.io/v0.1/servers?limit=2" | jq '{count: .metadata.count, nextCursor: .metadata.nextCursor}'{
"count": 2,
"nextCursor": "ac.inference.sh/mcp:1.0.1"
}An aggregator can pass that value as cursor for the next page or use updated_since with an RFC 3339 timestamp for incremental updates.
How to list a server in the MCP Registry
1. Publish the package or endpoint and prove ownership
The official registry accepts public package registries and public MCPB releases. It checks an ownership marker before accepting a listing. The marker must name the same server as server.json.
Package type | Ownership proof |
|---|---|
npm |
|
PyPI or NuGet |
|
Cargo | Visible Markdown containing |
Docker or OCI |
|
MCPB | A package URL containing |
Cargo needs visible Markdown because crates.io strips HTML comments before the registry checks the rendered README. A hidden <!-- mcp-name: ... --> marker therefore fails for Cargo.
2. Create and validate server.json
Install the mcp-publisher CLI, then run:
mcp-publisher init
mcp-publisher validateinit creates a template. Edit the server name, version, package or remote details, and transport. validate checks the document without publishing it.
3. Authenticate the namespace
GitHub authentication uses names such as io.github.username/server-name. Publishing under io.github.orgname/* requires the GitHub organization Owner role. The CLI flow is:
mcp-publisher login githubDomain authentication uses a reverse-DNS prefix tied to a verified domain, such as com.example/server. Ownership can be proved with a signed DNS TXT record at the domain apex, example.com, or with https://example.com/.well-known/mcp-registry-auth. A selector record such as _mcp-auth.example.com is not the required location.
4. Publish the metadata
From the directory containing server.json, run:
mcp-publisher publishGitHub Actions can use OIDC instead of a stored registry token:
- name: Authenticate to MCP Registry
run: ./mcp-publisher login github-oidc
- name: Publish server to MCP Registry
run: ./mcp-publisher publishRemote entries should use Streamable HTTP. SSE is deprecated and remains only for compatibility with existing clients. The remote URL must be publicly accessible.
Sources
- Introducing the MCP Registry: https://blog.modelcontextprotocol.io/posts/2025-09-08-mcp-registry-preview/ (read 2026-10-06)
- MCP Registry Repository: https://github.com/modelcontextprotocol/registry (read 2026-10-06)
- MCP Registry Live API Version: https://registry.modelcontextprotocol.io/v0.1/version (read 2026-10-06)
- MCP Registry overview: https://modelcontextprotocol.io/registry/about (read 2026-10-06)
- MCP Registry Publisher Quickstart: https://github.com/modelcontextprotocol/registry/blob/main/docs/modelcontextprotocol-io/quickstart.mdx (read 2026-10-06)
- MCP Registry Ecosystem Vision: https://github.com/modelcontextprotocol/registry/blob/main/docs/design/ecosystem-vision.md (read 2026-10-06)
- MCP Registry Aggregators Guide: https://github.com/modelcontextprotocol/registry/blob/main/docs/modelcontextprotocol-io/registry-aggregators.mdx (read 2026-10-06)
- Generic
server.jsonformat: https://github.com/modelcontextprotocol/registry/blob/main/docs/reference/server-json/generic-server-json.md (read 2026-10-06) - Official Registry Server.json Requirements: https://github.com/modelcontextprotocol/registry/blob/main/docs/reference/server-json/official-registry-requirements.md (read 2026-10-06)
- MCP Package Types Specification: https://github.com/modelcontextprotocol/registry/blob/main/docs/modelcontextprotocol-io/package-types.mdx (read 2026-10-06)
- MCP Publishing Remote Servers: https://github.com/modelcontextprotocol/registry/blob/main/docs/modelcontextprotocol-io/remote-servers.mdx (read 2026-10-06)
- MCP Publisher Authentication Guide: https://github.com/modelcontextprotocol/registry/blob/main/docs/modelcontextprotocol-io/authentication.mdx (read 2026-10-06)
- MCP Publisher GitHub Actions Guide: https://github.com/modelcontextprotocol/registry/blob/main/docs/modelcontextprotocol-io/github-actions.mdx (read 2026-10-06)
- Live pagination query: https://registry.modelcontextprotocol.io/v0.1/servers?limit=2 (read 2026-10-06)
Last verified: 2026-10-06.