Skip to content

docs: add server.json as a first-class catalog type (application/mcp-server+json)#54

Draft
tadasant wants to merge 10 commits into
docs/update-server-json-mappingfrom
docs/server-json-first-class
Draft

docs: add server.json as a first-class catalog type (application/mcp-server+json)#54
tadasant wants to merge 10 commits into
docs/update-server-json-mappingfrom
docs/server-json-first-class

Conversation

@tadasant

@tadasant tadasant commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

⚠️ AI-assisted draft. This PR's content (spec prose and description) was drafted by an AI assistant working on Tadas's behalf. Tadas will review, vet, and rewrite as needed, and will remove this disclosure once he has done so. Until then, treat this as a steered placeholder, not Tadas's finished position.

Stacked on #53

This PR is stacked on top of #53 (docs/update-server-json-mapping). Its base branch is docs/update-server-json-mapping, not main — review/merge #53 first. The diff against its base is just the server.json-as-first-class change below.

What this does

Reintroduces the MCP Registry server.json mapping that #53 removed, but as a first-class cataloged artifact type rather than an experimental footnote.

Key changes

  • New known media type application/mcp-server+json for an MCP Registry server.json document, registered in both the spec's known-types list and ADR 0014 (under "Integrated Ecosystem & Third-Party Types").

  • New appendix Mapping to MCP Registry server.json describing the first-class mapping: a Catalog Entry whose url points to the server.json document with type application/mcp-server+json. Includes a conceptual mapping table, an entry example, an "MCP Registry as AI Catalog" example, and a "Relationship to MCP Server Cards" section.

  • Two-types framing. The appendix is explicit that the MCP ecosystem has two distinct server artifacts, each with its own type:

    • MCP Server Cardapplication/mcp-server-card+json (runtime discovery / connection details)
    • MCP Registry server.jsonapplication/mcp-server+json (installable package descriptor)

    A catalog entry references whichever fits; a domain MAY list both.

  • Examples use real MCP Registry URLs. Every server.json example url uses the actual registry API form https://registry.modelcontextprotocol.io/v0/servers/{url-encoded-name}/versions/{version} (the / in the reverse-DNS name encoded as %2F), with verified-real servers/versions (com.pulsemcp/remote-filesystem 0.1.5, com.pulsemcp.servers/pulse-fetch 0.2.14). The appendix also explains how a registry name maps to the urn:air:{publisher}:{namespace}:{name} identifier per ADR 0015.

Note on the naming distinction (issue #9 / PR #18)

ext-server-card issue #9 / PR #18 deliberately chose application/mcp-server-card+json for the Server Card so it would not collide with the Registry server.json concept. This PR is the other half of that decision: it allocates the unqualified application/mcp-server+json to the Registry server.json document itself. The two types are complementary, not competing.

Verification

  • Spec builds locally with the exact CI command (python tools/build_spec.py), exit 0, dist/index.html produced.
  • New type registered in both placesapplication/mcp-server+json appears in the spec known-types list and ADR 0014 (verified the HTML renders it; 11 occurrences in built output across the new appendix + lists).
  • Cross-reference resolves — the appendix's link to #mapping-to-mcp-servers matches the generated heading id (verified in built HTML).
  • No new broken anchors — built-HTML link/id audit shows the only unresolved anchors (metadata-extensibility, resolving-an-artifacts-display-name, version-handling) are pre-existing on main; none are introduced or referenced by this change.
  • All JSON examples valid and use type: "application/mcp-server+json" with urn:air: identifiers.
  • Example URLs verified against the live registry — both example URLs (com.pulsemcp%2Fremote-filesystem/versions/0.1.5, com.pulsemcp.servers%2Fpulse-fetch/versions/0.2.14) return HTTP 200 from registry.modelcontextprotocol.io, with response server.name/version/repository matching the example values; the prose's /v0/servers/{name}/versions/{version} + server/_meta envelope description was confirmed against that response.
  • Fresh-eyes review performed in-process on the diff vs. the base branch; feedback addressed.
  • CI green on the latest commit (confirmed via wait-for-CI after the final push).

Status

Draft — do not merge. Stacked on #53; awaiting Tadas's review and rewrite.

…rver+json)

Register application/mcp-server+json as a known type for the MCP Registry
server.json document (distinct from the Server Card's
application/mcp-server-card+json), and add a 'Mapping to MCP Registry
server.json' appendix describing the first-class mapping.

Stacked on docs/update-server-json-mapping.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

Preview: https://ai-catalog.io/pr/54/

This comment is updated automatically while the pull request preview is available.

github-actions Bot added a commit that referenced this pull request Jun 26, 2026
…example

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
github-actions Bot added a commit that referenced this pull request Jun 26, 2026
…mples

Replace placeholder registry URLs (.../servers/{name}/server.json) with the
real MCP Registry API form .../v0/servers/{url-encoded-name}/versions/{version},
and use verified-real server names/versions (com.pulsemcp/remote-filesystem,
com.pulsemcp.servers/pulse-fetch). Reconcile the urn:air identifiers with the
reverse-DNS registry names per ADR 0015.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
github-actions Bot added a commit that referenced this pull request Jun 26, 2026
…literation

Add an ADR 0015 link and note that publisher/namespace in the urn:air form
are the publisher domain and a chosen category, not a transliteration of the
registry name's reverse-DNS segments (so .servers does not appear in the URN).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
github-actions Bot added a commit that referenced this pull request Jun 26, 2026
tadasant and others added 2 commits June 26, 2026 22:26
On the stacked branch the server.json appendix exists, so the Server Card
scope note links to it rather than disclaiming coverage.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
github-actions Bot added a commit that referenced this pull request Jun 26, 2026
github-actions Bot added a commit that referenced this pull request Jun 26, 2026
tadasant and others added 2 commits June 26, 2026 22:33
github-actions Bot added a commit that referenced this pull request Jun 26, 2026
github-actions Bot added a commit that referenced this pull request Jun 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant