🤖 Drafted by Claude Code (an AI coding agent) on behalf of @tadasant. The substance was reviewed by a human before filing.
Summary
docs/discovery.md mandates that every MCP Catalog entry set mediaType to application/mcp-server+json, and states that Server Cards themselves use that media type. The AI Catalog spec — which discovery.md explicitly cites as the standard MCP Catalog entries are a subset of — consistently uses application/mcp-server-card+json (with -card).
Evidence
MCP side — discovery.md uses application/mcp-server+json (no -card):
Catalog Entry table (discovery.md#L52-L59):
| Member | Type | Required | Description |
| :------------ | :----- | :------- | :------------------------------------------------------------------------------- |
| `identifier` | string | Yes | A URN identifying this server (e.g., `urn:mcp:server:com.example/weather`) |
| `displayName` | string | Yes | A human-readable name for the server |
| `mediaType` | string | Yes | The media type of the referenced artifact. MUST be `application/mcp-server+json` |
| `url` | string | Yes | URL where the full Server Card can be retrieved |
And the "MCP Server Cards" section (discovery.md#L135-L137):
An **MCP Server Card** is a JSON document that describes a single MCP server — its
identity, capabilities, and connection details. Server Cards use the media type
`application/mcp-server+json`.
AI Catalog side — uses application/mcp-server-card+json (with -card):
The registered media-type values list (ai-catalog.md#L204-L210):
- `application/ai-catalog+json` — a nested AI Catalog
- `application/a2a-agent-card+json` — an A2A Agent Card
- `application/mcp-server-card+json` — an MCP Server Card
…and every MCP example uses the same string, e.g. (ai-catalog.md#L124-L129):
{
"identifier": "urn:example:mcp:weather",
"displayName": "Weather Service",
"mediaType": "application/mcp-server-card+json",
"url": "https://api.example.com/.well-known/mcp/server-card.json"
},
Why it matters
discovery.md's headline promise is that MCP Catalog entries are a drop-in subset of AI Catalog (discovery.md#L20-L23 and #L161-L162):
The MCP Catalog format is a minimal, MCP-scoped subset of the
[AI Catalog](https://github.com/Agent-Card/ai-catalog) specification. This alignment
ensures that MCP Catalog entries can be used as-is within a full AI Catalog document…
2. MCP Catalog entries can be included directly in an AI Catalog document without
modification
But AI Catalog consumers route on mediaType without parsing the artifact — its design goal #2, "Media Type Identification" (ai-catalog.md#L65-L67):
2. **Media Type Identification**: Each catalog entry MUST declare its
artifact type using a media type, enabling clients to select,
filter, and route entries without parsing artifact content.
An entry tagged application/mcp-server+json will not be recognized by a client expecting application/mcp-server-card+json — so the "without modification" claim does not actually hold against the current AI Catalog text. This is the single field the subset-compatibility story depends on most.
Two related sub-points:
-
No media type is formally registered on the MCP side. SEP-2127 registers the .well-known URI suffix mcp-server-card, but does not register a content media type. discovery.md is currently the only place in the MCP ecosystem that defines one — and it disagrees with the AI Catalog, which is the consumer.
-
-card vs no-card also hints at a shape question. In schema.ts#L12-L26, the slim discovery document is ServerCard, while Server is the superset that adds locally-runnable packages (the server.json shape):
* The companion {@link Server} shape is a strict superset that adds local
* package metadata for use cases like the MCP Registry's `server.json`.
A type literally named application/mcp-server+json reads like the Server superset, whereas application/mcp-server-card+json reads like ServerCard. We should pin down which shape a catalog url resolves to and tag it accordingly.
Proposed resolution
Settle one canonical media-type string and use it in both specs — either change discovery.md to application/mcp-server-card+json to match the AI Catalog, or align the AI Catalog to application/mcp-server+json. Whichever wins, document whether the catalog url points at the ServerCard or Server shape, and consider registering the media type alongside the SEP.
cc the Server Card WG — this likely wants a quick confirmation against the Server Card WG discussion (#2563) to decide the canonical direction.
Summary
docs/discovery.mdmandates that every MCP Catalog entry setmediaTypetoapplication/mcp-server+json, and states that Server Cards themselves use that media type. The AI Catalog spec — whichdiscovery.mdexplicitly cites as the standard MCP Catalog entries are a subset of — consistently usesapplication/mcp-server-card+json(with-card).Evidence
MCP side —
discovery.mdusesapplication/mcp-server+json(no-card):Catalog Entry table (
discovery.md#L52-L59):And the "MCP Server Cards" section (
discovery.md#L135-L137):AI Catalog side — uses
application/mcp-server-card+json(with-card):The registered media-type values list (
ai-catalog.md#L204-L210):…and every MCP example uses the same string, e.g. (
ai-catalog.md#L124-L129):{ "identifier": "urn:example:mcp:weather", "displayName": "Weather Service", "mediaType": "application/mcp-server-card+json", "url": "https://api.example.com/.well-known/mcp/server-card.json" },Why it matters
discovery.md's headline promise is that MCP Catalog entries are a drop-in subset of AI Catalog (discovery.md#L20-L23and#L161-L162):But AI Catalog consumers route on
mediaTypewithout parsing the artifact — its design goal #2, "Media Type Identification" (ai-catalog.md#L65-L67):An entry tagged
application/mcp-server+jsonwill not be recognized by a client expectingapplication/mcp-server-card+json— so the "without modification" claim does not actually hold against the current AI Catalog text. This is the single field the subset-compatibility story depends on most.Two related sub-points:
No media type is formally registered on the MCP side. SEP-2127 registers the
.well-knownURI suffixmcp-server-card, but does not register a content media type.discovery.mdis currently the only place in the MCP ecosystem that defines one — and it disagrees with the AI Catalog, which is the consumer.-cardvs no-cardalso hints at a shape question. Inschema.ts#L12-L26, the slim discovery document isServerCard, whileServeris the superset that adds locally-runnablepackages(theserver.jsonshape):A type literally named
application/mcp-server+jsonreads like theServersuperset, whereasapplication/mcp-server-card+jsonreads likeServerCard. We should pin down which shape a catalogurlresolves to and tag it accordingly.Proposed resolution
Settle one canonical media-type string and use it in both specs — either change
discovery.mdtoapplication/mcp-server-card+jsonto match the AI Catalog, or align the AI Catalog toapplication/mcp-server+json. Whichever wins, document whether the catalogurlpoints at theServerCardorServershape, and consider registering the media type alongside the SEP.cc the Server Card WG — this likely wants a quick confirmation against the Server Card WG discussion (#2563) to decide the canonical direction.