Skip to content

Adopt MCP protocol revision 2026-07-28 (SDK bump + header validation) #28

Description

@wiverson

The server currently speaks 2025-11-25, via @modelcontextprotocol/[email protected] (LATEST_PROTOCOL_VERSION = "2025-11-25"). That is fully compliant with the revision it implements, and clients negotiate down, so nothing is broken today. This is currency rather than a defect — filed so it does not become one quietly.

What 2026-07-28 changes

Mostly by removal, which is why the upgrade is smaller than it sounds:

  • Sessions removed. No Mcp-Session-Id, no minting or echoing. Already stateless here — a fresh server and transport per request — so this costs nothing.
  • GET stream endpoint removed. GET/DELETE should answer 405. Already the behaviour, and correct on both revisions.
  • Last-Event-ID resumability removed. Not implemented here.

The genuinely new work is header validation:

  • Every POST MUST carry MCP-Protocol-Version, and it must match _meta.io.modelcontextprotocol/protocolVersion in the body.
  • Mcp-Method is REQUIRED on all requests; Mcp-Name on tools/call, resources/read, prompts/get.
  • Mismatched or missing headers MUST be rejected with 400 and JSON-RPC error -32020 (HeaderMismatch), after Base64-decoding any =?base64?…?= sentinel values.
  • An unimplemented method MUST return HTTP 404 with -32601, which distinguishes it from a legacy HTTP+SSE server.
  • Optional: x-mcp-header annotations to mirror tool parameters into Mcp-Param-* headers. Servers MAY use it; clients MUST support it.

Blocked on

The SDK shipping 2026-07-28 support. Most of the above lives in the transport layer, so the bulk should arrive with a version bump rather than hand-written code. Worth re-reading the spec at that point rather than trusting this summary.

When to do it

Not urgent, but it is a dated liability: as clients adopt the revision, a server two behind gets negotiated down or refused. Revisit when the SDK releases support.

References

Found during the client-compatibility research that also produced the Origin validation fix (d93d425).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions