--- a/base/rendered.txt +++ b/head/rendered.txt @@ -248,6 +248,8 @@ application/a2a-agent-card+json — an A2A Agent Card application/mcp-server-card+json — an MCP Server Card + +application/mcp-server+json — an MCP Registry server.json document application/agent-skills+json — Agent Skill Metadata json file @@ -1924,7 +1926,8 @@ A Server Card is a static discovery document for a single HTTP-based MCP server (its identity and connection details). It is distinct from the MCP Registry's server.json, an installable-package descriptor — a separate -artifact type that this appendix does not address. +artifact type mapped in +Mapping to MCP Registry server.json. Overview @@ -2141,6 +2144,210 @@ Composability: MCP servers can be packaged with related artifacts (A2A agents, datasets) in nested catalogs. + +Mapping to MCP Registry server.json + +This appendix describes how the MCP Registry server.json format +(see modelcontextprotocol/registry) +maps to AI Catalog as a first-class cataloged artifact type, enabling +installable MCP servers to be discovered alongside other AI artifacts +through a unified catalog. + +Two MCP server artifacts, two types. The MCP ecosystem defines two +distinct documents for a server, and AI Catalog gives each its own known +type: + +MCP Server Card (application/mcp-server-card+json) — a static +discovery document for a connectable HTTP server (identity, transport, +capabilities, auth). See Mapping to MCP Servers. + +MCP Registry server.json (application/mcp-server+json) — an +installable package descriptor (package coordinates, transports, +environment variables, CLI arguments). + +These are different artifacts, so they use different media types. The +Server Card deliberately uses application/mcp-server-card+json (not +application/mcp-server+json) to leave the unqualified mcp-server +name for the Registry server.json document +(modelcontextprotocol/experimental-ext-server-card issue #9 / PR #18). +A catalog entry references whichever artifact fits the use case — a +server.json for installable packages, a Server Card for connectable +endpoints — and a domain MAY list both. + +Overview + +The MCP Registry defines a server.json format for describing MCP +servers. Each server.json document captures everything needed to +install, configure, and connect to a single MCP server: package +coordinates (npm, PyPI, NuGet, OCI), remote endpoints (streamable-http, +SSE), transport configuration, environment variables, and CLI arguments. + +In AI Catalog terms, a server.json document is the artifact +content — the native metadata that a Catalog Entry references, declared +with the known type application/mcp-server+json. AI Catalog does not +duplicate or redefine server.json fields; it provides the discovery and +trust layer that server.json does not address. + +Conceptual Mapping + +MCP server.json + +AI Catalog Equivalent + +server.json document (whole file) + +Artifact content via entry url (type application/mcp-server+json) or data + +name (reverse-DNS identifier) + +Entry identifier (mapped to the urn:air:{publisher}:{namespace}:{name} URN form — e.g. registry name com.pulsemcp/remote-filesystem → urn:air:pulsemcp.com:mcp:remote-filesystem). The mapping is not a mechanical transliteration: publisher is the publisher's actual domain (e.g. pulsemcp.com) and namespace is a chosen category (e.g. mcp), independent of the registry name's reverse-DNS segments. + +title + +Stays in the artifact (server.json carries its own title); entry displayName is omitted unless the artifact lacks a name + +description + +Entry description + +version + +Entry version + +repository + +Entry metadata.repository + +packages[] (npm, pypi, nuget, oci) + +Inside the artifact — not surfaced in the catalog + +remotes[] (streamable-http, sse) + +Inside the artifact — not surfaced in the catalog + +environmentVariables[] + +Inside the artifact — not surfaced in the catalog + +_meta + +Entry metadata for catalog-level hints; otherwise stays in the artifact + +(not in server.json) + +Entry publisher + +(not in server.json) + +Entry trustManifest (identity, attestations, provenance) + +(not in server.json) + +Entry tags for cross-artifact discovery + +MCP Server as Catalog Entry + +An MCP server published as a Registry server.json maps to a Catalog +Entry whose url points to the server.json document and whose type +is the known type application/mcp-server+json: + +{ +"identifier": "urn:air:pulsemcp.com:mcp:remote-filesystem", +"version": "0.1.5", +"type": "application/mcp-server+json", +"url": "https://registry.modelcontextprotocol.io/v0/servers/com.pulsemcp%2Fremote-filesystem/versions/0.1.5", +"description": "MCP server for remote filesystem operations on cloud storage", +"tags": ["filesystem", "storage"], +"publisher": { +"identifier": "did:web:pulsemcp.com", +"displayName": "PulseMCP" +}, +"trustManifest": { +"identity": "urn:air:pulsemcp.com:mcp:remote-filesystem", +"attestations": [ +{ +"type": "publisher-identity", +"uri": "https://trust.pulsemcp.com/certs/publisher.jwt" +} +], +"provenance": [ +{ +"relation": "publishedFrom", +"sourceId": "https://github.com/pulsemcp/mcp-servers", +"registryUri": "https://registry.npmjs.org" +} +] +}, +"metadata": { +"repository": "https://github.com/pulsemcp/mcp-servers" +}, +"updatedAt": "2026-03-15T10:00:00Z" +} + +The url resolves to the server's server.json. In the MCP Registry, a +specific version is addressed as +/v0/servers/{name}/versions/{version} — where {name} is the server's +reverse-DNS registry name, URL-encoded (the / between namespace and +name becomes %2F) — and the response carries the server.json document +in its server field alongside registry _meta. A client fetches the +catalog entry for discovery and trust evaluation, then retrieves the +server.json for operational details (packages, transports, env vars). + +MCP Registry as AI Catalog + +The MCP Registry — a centralized index of MCP servers — can be +represented as an AI Catalog. This lets clients that understand +application/ai-catalog+json discover installable MCP servers alongside +A2A agents, skills, and other artifacts: + +{ +"specVersion": "1.0", +"host": { +"displayName": "MCP Server Registry", +"identifier": "did:web:modelcontextprotocol.io", +"documentationUrl": "https://modelcontextprotocol.io/docs" +}, +"entries": [ +{ +"identifier": "urn:air:pulsemcp.com:mcp:remote-filesystem", +"version": "0.1.5", +"type": "application/mcp-server+json", +"url": "https://registry.modelcontextprotocol.io/v0/servers/com.pulsemcp%2Fremote-filesystem/versions/0.1.5", +"description": "MCP server for remote filesystem operations on cloud storage", +"tags": ["filesystem", "storage"] +}, +{ +"identifier": "urn:air:pulsemcp.com:mcp:pulse-fetch", +"version": "0.2.14", +"type": "application/mcp-server+json", +"url": "https://registry.modelcontextprotocol.io/v0/servers/com.pulsemcp.servers%2Fpulse-fetch/versions/0.2.14", +"description": "MCP server that extracts clean, structured content from web pages", +"tags": ["fetch", "web"] +} +] +} + +Relationship to MCP Server Cards + +A Registry server.json and an MCP Server Card describe the same kind of +thing at different lifecycle stages, and they layer naturally: + +server.json (application/mcp-server+json) + +How do I install and configure this server? What packages, +transports, arguments, and environment variables does it need? + +Server Card (application/mcp-server-card+json) + +How do I connect to and use this running server? What transport +endpoint, capabilities, tools, and authentication does it expose? + +A domain MAY publish both as separate catalog entries — one entry of each +type pointing at the respective artifact — so clients can pick the +representation that matches what they are doing (provisioning vs. +connecting). AI Catalog provides the trust and cross-ecosystem indexing +layer over both; each artifact carries its own protocol-specific detail. Mapping to Claude Code Plugins Marketplace