Skip to content

docs: refactor MCP mapping appendix to Server Cards + align with MCP spec#53

Draft
tadasant wants to merge 8 commits into
mainfrom
docs/update-server-json-mapping
Draft

docs: refactor MCP mapping appendix to Server Cards + align with MCP spec#53
tadasant wants to merge 8 commits into
mainfrom
docs/update-server-json-mapping

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.

What this does

Refreshes the MCP mapping appendix of the spec (live: https://ai-catalog.io/#mapping-to-mcp-registry-server-json), which was very outdated, and does a broader clean-up pass to align the spec's MCP examples with the current MCP spec.

Key changes

  • Heading renamed Mapping to MCP Registry server.jsonMapping to MCP Servers. (No internal cross-references targeted the old anchor, so nothing else in the spec breaks; the public-page anchor changes accordingly.)
  • The mapping is now Server-Card-centric. A remote MCP server maps to a Catalog Entry whose url points to the server's Server Card (SEP-2127) with the known type application/mcp-server-card+json. The conceptual table, the entry example, the "MCP Servers as an AI Catalog" example, the discovery flow, and "What AI Catalog Adds" were all rewritten around Server Cards.
  • Server Card location aligned with the current MCP spec. Stale example URLs of the form https://…/.well-known/mcp/server-card.json are replaced with realistic example URLs the catalog entry can point at (the Server Card WG dropped the .well-known requirement for the card itself). This touches four examples elsewhere in the spec (the Top-Level Structure example and a few OCI/entry examples) in addition to the appendix — hence the broader "clean up to align with MCP spec" scope. The AI Catalog's own discovery file (/.well-known/ai-catalog.json) is unchanged — that's the catalog, not the card.
  • Overview kept high-level, hosting detail deferred to the SEP. The appendix Overview previously restated SEP-2127's precise hosting rule (a reserved <streamable-http-url>/server-card default), which is the kind of technical detail that drifts from the SEP over time. It now gives a high-level, example-led description and links out to SEP-2127 for the card's schema, fields, and hosting conventions.
  • type aligned with ADR 0014 (mediaTypetype, open-text with recommended known types) throughout.
  • Dropped the stale MCP initialization-handshake reference. MCP is removing the mandatory initialize handshake (modelcontextprotocol/modelcontextprotocol#2575, stateless MCP), so the Server Card description no longer frames itself as "mirroring the initialization handshake response" — it just states the fields the card carries. Relatedly, the card is now described consistently as a static discovery document (it had been called both "static" and "runtime") — the SEP-2127 framing, and accurate now that the static card is the replacement for the removed runtime handshake.

Scope note: server.json

The previous version of this appendix centered on the MCP Registry server.json format. That mapping is removed here and will be reintroduced as a first-class cataloged artifact type in a follow-up PR stacked on this one (giving server.json its own known media type rather than treating it as a footnote). This PR is intentionally Server-Card-only.

Assumptions / premise notes

Verification

  • Spec builds locally with the exact CI command (python tools/build_spec.py), exit 0, dist/index.html produced.
  • Experimental section cleanly removed — no dangling in-page link to the deleted section remains (grep "experimental-mapping" → none).
  • All stale server-card URLs gonegrep "well-known/mcp/server-card" → none; replaced count 4→0. The catalog's own /.well-known/ai-catalog.json URLs were verified unchanged (not wrongly rewritten).
  • 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 (verified by building main's version); none are introduced or referenced by this change.
  • All JSON examples valid and use the correct type (application/mcp-server-card+json) and urn:air: identifier form.
  • Fresh-eyes review performed in-process on the final diff; came back clean (no issues).
  • CI green on the latest commit (confirmed via wait-for-CI after the final push).

Status

Draft — do not merge. Awaiting Tadas's review and rewrite. A stacked follow-up PR adds first-class server.json cataloging.

… ext-server-card PR #32

Reconcile the server.json mapping appendix with the current ADRs and the
landing state of modelcontextprotocol/experimental-ext-server-card PR #32:

- Fix the self-contradictory `type` note: examples for entries pointing at
  a Registry server.json now use the generic `application/json` (no known
  type exists for server.json), consistent with the note's own rationale.
- Explain the open-text `type` model (ADR 0014) and the deliberate
  `application/mcp-server-card+json` vs `application/mcp-server+json`
  distinction (ext-server-card issue #9 / PR #18; PR #32 keeps the
  card value while renaming the field to `type`).
- Correct SEP reference SEP-1649 -> SEP-2127 (heading, links, anchors).
- Correct Server Card location prose: any unreserved URI, reserved
  default `<streamable-http-url>/server-card` (not `.well-known`).
- Note the urn:air identifier form (ADR 0015) in the conceptual mapping.

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

Copy link
Copy Markdown
Contributor

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

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
Use anonymous.modelcontextprotocol.io publisher in the name-row example to
match the brave-search entries rendered elsewhere in the appendix.

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

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 tadasant changed the title docs(spec): update Mapping to MCP Registry server.json (ADR 0014 + ext-server-card PR #32) docs: refactor MCP mapping appendix to lead with Server Cards; demote server.json to experimental Jun 26, 2026
…ith MCP spec

- Remove the 'experimental' MCP Registry server.json mapping (server.json
  gets a first-class treatment in a follow-up PR).
- Replace stale .well-known/mcp/server-card.json example URLs with the
  current <streamable-http-url>/server-card convention (the Server Card WG
  dropped the .well-known requirement for the card itself).

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 tadasant changed the title docs: refactor MCP mapping appendix to lead with Server Cards; demote server.json to experimental docs: refactor MCP mapping appendix to Server Cards + align with MCP spec Jun 26, 2026
…pendix

PR #53 alone does not add a server.json appendix (that lands in a stacked
follow-up). Acknowledge server.json exists as a distinct artifact type without
claiming this PR provides guidance on it.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
github-actions Bot added a commit that referenced this pull request Jun 26, 2026
MCP is removing the mandatory initialize handshake (modelcontextprotocol/
modelcontextprotocol#2575, stateless MCP). The Server Card description no
longer frames itself as mirroring that handshake response; it simply states
the fields the card carries.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
github-actions Bot added a commit that referenced this pull request Jun 26, 2026
The scope note called the card a 'runtime discovery document' while the
Overview called it 'static'; align on 'static' (the SEP-2127 framing and the
accurate one now that the card is the static replacement for the removed
initialize handshake). The connection/runtime nuance stays in the parenthetical.

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

The overview repeated SEP-2127's precise hosting rule (reserved
<streamable-http-url>/server-card default), which can drift from the SEP.
Replace it with a high-level, example-led description and link out to
SEP-2127 for the card's schema, fields, and hosting conventions.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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