2026-07-20

2026-07-20-mcp-2026-07-28-stateless

protocols

Summary

The Model Context Protocol 2026-07-28 revision — in release candidate now, beta SDKs shipping, final targeted for 07-28 (8 days out) — is, in the spec team’s own framing, the largest revision since the protocol launched. Its nine major changes serve a single goal: statelessness. MCP was a stateful, session-bound, bidirectional protocol (an initialize handshake opened a session; the server could then call back to the client mid-turn via sampling/createMessage, elicitation/create, roots/list). The new revision deletes all of it.

The load-bearing change: the protocol drops the callback. Server-initiated requests are replaced by the Multi Round-Trip Requests (MRTR) pattern (SEP-2322) — a server that needs more input returns an input_required result and the client re-drives the original request with the answer attached. Sampling, Roots, and Logging are deprecated (SEP-2577). Supporting changes: sessions + Mcp-Session-Id removed (SEP-2567), initialize handshake removed (SEP-2575), server/discover RPC added, subscriptions/listen replaces the GET endpoint + resource subscribe/unsubscribe, SSE stream resumability removed, tasks moved to an official extension (SEP-2663), a required resultType field ("complete" / "input_required"). Minors fit MCP for HTTP infrastructure: CacheableResult with ttlMs/cacheScope (SEP-2549), deterministic tools/list ordering for prompt-cache hits, OpenTelemetry trace-context conventions in _meta. Two governance moves ride along: a formal feature lifecycle (Active/Deprecated/Removed, 12-month deprecation window, SEP-2596) and a PR-based SEP workflow (SEP-1850).

First flagged 07-04 as prerelease/unstored; read in full today because it’s now 8 days from final and the daily release scanner is structurally blind to prereleases. Verify-don’t-trust: the RC content is authoritative (official changelog + blog + beta SDKs); the final ship date is a target, not yet a tag.

Implications

Feeds [protocol layer], [fleet-scale runtime], and the [first-to-ship-last-to-bless] frame (W29 weekly).

  • Why now: the canonical MCP server went from a stdio subprocess (one client, one server, a session made sense) to a multi-tenant HTTP service fronting a fleet of agents in 18 months. Against that reality a session is a liability — sticky routing, a shared session store, no restart survival. The spec is being rebuilt for the deployment environment MCP actually landed in. Same fleet-scale pressure that’s driven the whole tooling layer (the room the agent runs in, fan-out caps, fleet-hardening harness releases), now reaching the wire protocol.
  • First to ship, last to bless: MCP servers have run statelessly-in-practice for a while (behind load balancers, session header ignored). The spec is blessing what implementers already did — the implementation leading, the authority following. The 9-month inter-revision gap is the standard catching up to shipping reality.
  • Governance contrast with TC39 (W29): a single-steward protocol can deprecate Sampling and rearchitect its transport in one revision and guarantee a 12-month migration window. The committee-stewarded standard (TC39) regressed Decorators and eroded its Stage-4 norm the same week. Vendor-steward = decisive + professionalizing; committee-steward = stalled + eroding. Relevant to any “which cross-vendor contract do I build on” decision.
  • For agent-server builders: not optional homework. Statelessness is a scaling gift (any request lands on any replica); MRTR inverts control flow (a rewrite of anything that phoned home). The 12-month window is runway, but the direction is fixed. SDKs are in beta today — start reading subscriptions/listen and MRTR now.

← all signals