docs: drop references to the MCP initialization handshake (SEP-2575)#37
Merged
Merged
Conversation
MCP is moving to stateless-by-default via SEP-2575, which removes the mandatory initialization handshake. Reword the Server Card docs and schema doc-comment so they no longer describe themselves in terms of the handshake / lifecycle initialization step. - README: a Server Card lets clients discover and connect to a server (drop "before initialization") - docs/discovery.md: discovery answers _where_ to connect before any protocol exchange (drop "complements the lifecycle handshake") - schema.ts: supportedProtocolVersions lets clients select a compatible protocol version "before connecting" (drop "before initialization"); schema.json regenerated from schema.ts Wording/schema-comment cleanup only; no schema fields change. Co-Authored-By: Claude Opus 4.8 <[email protected]>
SamMorrowDrums
approved these changes
Jun 27, 2026
tadasant
pushed a commit
that referenced
this pull request
Jul 13, 2026
Adapt the MCP Catalog Entry to AI Catalog PR #37 / ADR 0014, which renames the CatalogEntry `mediaType` member to `type` and reframes its description as an open-text type identifier rather than a strict IANA media type. Scoped to the field rename only. The value remains `application/mcp-server-card+json` (this repo's deliberate choice per issue ADR 0014's known-type `application/mcp-server+json`. The Server Card's own HTTP media type (Accept/Content-Type) is unchanged. Co-Authored-By: Claude Opus 4.8 <[email protected]>
SamMorrowDrums
pushed a commit
that referenced
this pull request
Jul 13, 2026
…14) (#32) ## What Adapts the **MCP Catalog Entry** in `docs/discovery.md` to [AI Catalog PR #37](Agent-Card/ai-catalog#37) / ADR 0014, which renames the `CatalogEntry.mediaType` member to **`type`** and reframes its description as an open-text *type identifier* rather than a strict IANA media type. Changes (docs-only, `docs/discovery.md`): - Renames the `mediaType` member to `type` in the Catalog Entry table. - Updates the member description to mirror ADR 0014: "An identifier specifying the type of the referenced artifact." - Updates the `type` key in all four example catalog entries. - Updates the client-validation prose (`type` set to … / "ignore entries with unrecognized types"). ## Rebase / conflict resolution This branch was rebased onto the current `main` to resolve a merge conflict in `docs/discovery.md`. The conflict came from changes that landed on `main` after this branch was cut: - **#31** — `urn:air:` identifier adaptation (ADR 0015). **Preserved.** - **#39 / #14** — removal of the `displayName` field from MCP Catalog entries. **Preserved** — this PR does **not** reintroduce `displayName`; it only renames the field `mediaType` → `type` on top of main's current structure. The resolved diff is exactly the `mediaType` → `type` rename (table row, four examples, validation prose) applied on top of main — nothing from either side's intent was dropped. ## Scope decision — value deliberately kept as `application/mcp-server-card+json` This PR renames the **field only**. The value stays `application/mcp-server-card+json` and is **not** changed to ADR 0014's known-type `application/mcp-server+json`. Rationale: - ADR 0014 explicitly makes `type` an **open-text** format ("any string value is accepted"); `application/mcp-server+json` is a non-binding "known type," and ecosystem types are "governed externally" (i.e., by MCP). So keeping a more precise MCP-governed value is compatible with ADR 0014, not a contradiction. - This repo **deliberately** chose `application/mcp-server-card+json` over `application/mcp-server+json` (issue #9 / PR #18) to avoid colliding with the MCP Registry's `server.json` concept — a distinction the README documents in "Relationship to the MCP Registry." **Flag for maintainers:** AI Catalog's ADR 0014 known-types list uses `application/mcp-server+json` for MCP. Whether this repo should also adopt that value (reversing issue #9 / PR #18 and re-introducing the `server.json` naming collision) is a separate, more consequential decision and is intentionally **out of scope** here. Happy to file a cross-repo issue if maintainers want to pursue it. ## What is intentionally NOT changed - The **Server Card document's own HTTP media type** (`Accept` / `Content-Type` negotiation, the reserved `/server-card` location prose). That is a genuine IANA media type, not the renamed catalog field, and ADR 0014 does not touch it. - `schema.ts` / `schema.json` — the Server Card schema has no `mediaType`/`type` member; this convention lives only in the discovery doc. ## Verification - [x] Rebased onto latest `main`; merge conflict in `docs/discovery.md` resolved, preserving both #31 (`urn:air:`) and #39 (`displayName` removal). PR now reports `MERGEABLE`. - [x] `npm run check` — `schema.json` up to date, `tsc --noEmit` clean - [x] `npm run validate` — all 7 examples pass - [x] `npm run format:check` — `docs/discovery.md` clean, including markdown table re-alignment - [x] Verified zero `mediaType` field tokens remain (`git grep mediaType` → no matches) - [x] Verified the Server Card HTTP media-type prose was left intact (no over-reach) - [x] **CI green** — `build`, `Analyze (actions)`, and `CodeQL` all pass on the rebased head ([run](https://github.com/modelcontextprotocol/experimental-ext-server-card/actions/runs/29278815978)) - [x] Independent fresh-eyes subagent review: **APPROVE** (rename complete & correct; no `displayName` reintroduced; value unchanged; Server Card media-type prose intact; no stray `mediaType`; no conflict markers) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: tadasant <[email protected]> Co-authored-by: Claude Opus 4.8 <[email protected]>
6 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
MCP is moving to stateless-by-default via SEP-2575 ("Make MCP Stateless", modelcontextprotocol/modelcontextprotocol#2575), which removes the mandatory initialization handshake and replaces it with stateless alternatives (per-request protocol version,
server/discover, per-request client capabilities,messages/listen).Since the initialization handshake is going away, the Server Card docs/schema should stop describing themselves in terms of it. This PR is purely wording / schema-comment cleanup — it reword the handshake-dependent phrasing and changes no schema fields or semantics.
Changes
README.md— a Server Card "describes a remote MCP server enough for clients to discover and connect to it" (dropped "before initialization").docs/discovery.md— discovery "answers where to connect, before any protocol exchange establishes how to communicate" (dropped "complements the lifecycle handshake").schema.ts—supportedProtocolVersionsdoc-comment now reads "Allows clients to select a compatible protocol version before connecting" (dropped "before initialization").schema.json— regenerated fromschema.tsvianpm run generate; the only diff is the doc-comment text above (never hand-edited).A fresh
grepforinitiali,handshake, andlifecycleacross the tracked repo confirms no remaining handshake-dependent references.Verification
npm run check—schema.jsonis in sync withschema.tsand TypeScript compiles cleanly.npm run validate— all 7 examples pass (valid examples validate, invalid examples are rejected).npm run format:checkon the changed files (README.md,docs/discovery.md,schema.ts,schema.json) — all use Prettier code style.schema.jsondiff matches theschema.tsdoc-comment change exactly (no other generated drift).Proof —
npm run validateProof — generated
schema.jsondiff"supportedProtocolVersions": { - "description": "MCP protocol versions actively supported by this remote endpoint. Allows\nclients to negotiate a compatible protocol version before initialization.", + "description": "MCP protocol versions actively supported by this remote endpoint. Allows\nclients to select a compatible protocol version before connecting.",Notes for reviewers
🤖 Generated with Claude Code