Skip to content

change(mcp): advertise protocol revision 2025-11-25, negotiate older versions#109

Merged
jdevalk merged 1 commit into
mainfrom
mcp-protocol-2025-11-25
Jul 16, 2026
Merged

change(mcp): advertise protocol revision 2025-11-25, negotiate older versions#109
jdevalk merged 1 commit into
mainfrom
mcp-protocol-2025-11-25

Conversation

@jdevalk

@jdevalk jdevalk commented Jul 16, 2026

Copy link
Copy Markdown
Owner

Why

The daily standards scan flagged MCP revision drift: the Worker and discovery docs pinned 2025-06-18 while 2025-11-25 has been stable since November 2025.

What changed between the revisions, and what it means for us

The 2025-11-25 changelog is almost entirely additive, and most of it (OIDC discovery, incremental scope consent, URL elicitation, sampling tools, OAuth client ID metadata, experimental tasks) touches surfaces this server does not have — it is stateless, read-only, unauthenticated, tools + prompts only. So the upgrade is cheap, but three items are real:

  • Version negotiation done properly. initialize previously always answered 2025-06-18 regardless of what the client asked for. It now echoes the client's requested version when supported (2025-11-25, 2025-06-18, 2025-03-26 — the feature surface is identical across them for this server) and answers with our latest otherwise, per the lifecycle spec.
  • SEP-1303: tool execution errors now come back as isError: true tool results instead of -32603 protocol errors, so a calling model can read the message and self-correct. (The existing /admin/stats error logging already keys off result.isError, so error rows keep flowing.)
  • serverInfo metadata: the new description, websiteUrl, and icons fields, pointing at the site icon.

Drift fixed along the way

  • The static server card claimed "96 spec pages" (there are 163) and, like the Worker landing page, was missing the get_changes tool. Both now list all six tools; the card drops the hardcoded count.
  • mcp-and-tool-discovery described the remote transport as "HTTP plus Server-Sent Events" — that transport is deprecated; the sentence now names Streamable HTTP. Both it and webmcp now cite the 2025-11-25 spec URL.
  • SKILL.md protocol revision + digest resynced via npm run sign:skill.

What is deliberately NOT done

The next revision (draft, expected 2026-07-28) is a breaking rework: removes the initialize handshake, adds a mandatory server/discover RPC, required resultType on results, removes ping/logging/setLevel. Adopting a draft would violate our own ship-it-first honesty bar; revisit once it is stamped stable. Worth a scan watch.

Verified

Ran wrangler dev and confirmed: requested 2025-06-18 → echoed; requested unknown 2026-07-28 → answered 2025-11-25; tool throw → isError result; server card and landing page list get_changes. tsc --noEmit, eslint, prettier --check, and check:skill all pass.

No changelog entry: this is plumbing plus a citation/transport-wording touch-up on two pages — flagged as borderline in the session summary for Joost to call.

🤖 Generated with Claude Code

…versions

The Worker pinned 2025-06-18 while 2025-11-25 has been stable since
November. Nothing in the new revision changes this server's feature
surface (no auth, elicitation, sampling, tasks, or SSE here), so the
upgrade is advertisement plus three real fixes:

- initialize now does spec-correct version negotiation: echo the
  client's requested version when supported (2025-11-25, 2025-06-18,
  2025-03-26), answer with our latest otherwise.
- Tool execution errors return isError tool results instead of -32603
  protocol errors (SEP-1303), so calling models can self-correct.
- serverInfo gains the 2025-11-25 description, websiteUrl, and icons
  fields.

Drift fixed along the way: the static server card claimed "96 spec
pages" (there are 163) and both it and the Worker landing page were
missing the get_changes tool. The mcp-and-tool-discovery page no longer
describes HTTP+SSE as the remote transport (deprecated; Streamable HTTP
replaced it), and both citing pages now reference the 2025-11-25 spec
URL. SKILL.md revision + digest resynced via sign:skill.

The next revision (draft, expected 2026-07-28) is a breaking rework
(removes initialize, adds server/discover, required resultType) and is
deliberately not adopted while still in draft.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying specification-website with  Cloudflare Pages  Cloudflare Pages

Latest commit: e5129ae
Status: ✅  Deploy successful!
Preview URL: https://b1a48412.specification-website.pages.dev
Branch Preview URL: https://mcp-protocol-2025-11-25.specification-website.pages.dev

View logs

@jdevalk
jdevalk merged commit 1e8d95c into main Jul 16, 2026
8 checks passed
@jdevalk
jdevalk deleted the mcp-protocol-2025-11-25 branch July 16, 2026 11:24
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