Skip to content

docs: drop references to the MCP initialization handshake (SEP-2575)#37

Merged
SamMorrowDrums merged 1 commit into
mainfrom
chore/drop-handshake-references
Jun 27, 2026
Merged

docs: drop references to the MCP initialization handshake (SEP-2575)#37
SamMorrowDrums merged 1 commit into
mainfrom
chore/drop-handshake-references

Conversation

@tadasant

Copy link
Copy Markdown
Member

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.tssupportedProtocolVersions doc-comment now reads "Allows clients to select a compatible protocol version before connecting" (dropped "before initialization").
  • schema.json — regenerated from schema.ts via npm run generate; the only diff is the doc-comment text above (never hand-edited).

A fresh grep for initiali, handshake, and lifecycle across the tracked repo confirms no remaining handshake-dependent references.

Verification

  • npm run checkschema.json is in sync with schema.ts and TypeScript compiles cleanly.
  • npm run validate — all 7 examples pass (valid examples validate, invalid examples are rejected).
  • npm run format:check on the changed files (README.md, docs/discovery.md, schema.ts, schema.json) — all use Prettier code style.
  • Confirmed the schema.json diff matches the schema.ts doc-comment change exactly (no other generated drift).
  • CI green on this PR (see checks below).
  • Independent fresh-eyes review performed in-session and feedback addressed.

Proof — npm run validate

✓ ServerCard/valid/minimal.json — validated cleanly
✓ ServerCard/valid/templated-remote.json — validated cleanly
✓ ServerCard/invalid/bad-name-pattern.json — rejected (1 error(s))
✓ ServerCard/invalid/date-versioned-schema.json — rejected (1 error(s))
✓ ServerCard/invalid/missing-name.json — rejected (1 error(s))
✓ ServerCard/invalid/missing-schema.json — rejected (1 error(s))
✓ ServerCard/invalid/wrong-schema-name.json — rejected (1 error(s))

All 7 example(s) passed.

Proof — generated schema.json diff

         "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

  • This is intentionally tightly scoped to handshake-dependent phrasing — no unrelated refactors.
  • SEP-2575 is still an open draft; this change is conservative wording cleanup and does not pre-empt the schema decisions under SEP-2127.

🤖 Generated with Claude Code

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]>
@tadasant
tadasant requested a review from SamMorrowDrums June 26, 2026 22:37
@SamMorrowDrums
SamMorrowDrums merged commit 92999cb into main Jun 27, 2026
3 checks passed
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]>
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.

2 participants