Files
tai/research/mcp-client-support/spec-versioning-policy.md
T
retoor 251c3dc2ba research: mcp-client-support subject (106 sources, 3 conclusions)
- wire spec: lifecycle, stdio + Streamable HTTP transports, tools,
  utilities, legacy SSE, versioning, changelog (14 Tier 1)
- client ecosystem: Claude Code/VS Code/Cursor/Codex configs,
  mcp-remote, Smithery, registries, Glama (12 Tier 1)
- security/ops: authorization draft, trust model, poisoning,
  rug pulls, production hardening (12 Tier 1) + 68 Tier 2 cards
- conclusions: minimal stdlib client on 2025-11-25, normalizer +
  resolver agent for pasted configs/GitHub URLs, untrusted-until-
  consent trust model; nothing built yet
- audit PASS (14 subjects, 797 sources, 32 conclusions)
2026-10-18 19:23:02 +02:00

54 lines
3.4 KiB
Markdown

# Versioning policy + current revision
## Metadata
| Field | Value |
|---|---|
| Institute | Molodetz Institute - Research & Retrieval Division |
| Subject | mcp-client-support |
| Document type | Source Dossier |
| Tier | 1 |
| Source title | Versioning (MCP docs, current) |
| Source URL | https://modelcontextprotocol.io/docs/learn/versioning |
| Source publisher / author | Model Context Protocol authors (Anthropic-donated open project; site docs) |
| Source type | standard |
| Source date (published) | Unknown - not stated (content served from /docs/2026-07-28/learn/versioning.md; references 2026-07-28 as current) |
| Date researched | 2026-10-18 |
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
| Research method | gather-subagent direct page fetch, parent synthesis from evidence pack |
| Confidence | High |
| Status | Active |
## Summary
This page states the versioning policy: versions are `YYYY-MM-DD` strings bumped only on backwards-incompatible change, with Draft / Current / Final revision states, and "The **current** protocol version is **2026-07-28**." In 2026-07-28 every request declares its protocol version via the `io.modelcontextprotocol/protocolVersion` key in `_meta`, the server accepts or rejects each request independently, and clients may optionally call the mandatory `server/discover` RPC for up-front version selection. It points at a Backward Compatibility section for the handshake-based revisions (2025-11-25 and earlier).
## Key findings
- "The **current** protocol version is **2026-07-28**." Versions are `YYYY-MM-DD` strings, bumped only on backwards-incompatible change.
- Revisions: Draft / Current / Final.
- In 2026-07-28: "Every request declares the protocol version… via the `io.modelcontextprotocol/protocolVersion` key in its `_meta` field, and the server accepts or rejects each request independently"; "Clients MAY call `server/discover`, a mandatory RPC," for up-front version selection; "Calling it is optional."
- "For interoperability with… handshake-based protocol revisions (`2025-11-25` and earlier), see Backward Compatibility."
## Pros / strengths
- Date-stamped versions with bump-only-on-breakage give clients a simple compatibility rule: same version string means same wire contract.
- The per-request versioning model in 2026-07-28 (version in `_meta`, independent accept/reject) is stateless and probe-friendly compared to the handshake.
- Explicitly preserves the handshake-based line (2025-11-25 and earlier) as an interop target with a dedicated Backward Compatibility section, rather than orphaning it.
## Cons / limitations / caveats
- No publish date is stated on the page (only the 2026-07-28 current-version reference and the serving path), per the pack's Uncertainty notes; no explicit author names either.
- Two wire worlds now coexist (handshake-based 2025-11-25 and earlier vs stateless 2026-07-28), so a compatibility-maximizing client must eventually speak both.
- The Backward Compatibility section itself was not among the opened sources, so its exact guidance is not captured in this dossier.
## Relevance to tai
Flags that the newest spec is stateless/per-request, but handshake-based 2025-11-25 remains the interop baseline a minimal client should target first. Sets the upgrade path: ship 2025-11-25 (handshake, sessions, ping), then add 2026-07-28 (per-request `_meta` version, `server/discover`) later.
## Changelog
| Date | Change |
|---|---|
| 2026-10-18 | Initial dossier created. |