The Model Context Protocol shipped its largest revision since launch on July 28, 2026. MCP 2026-07-28 removes the stateful session layer, replaces elicitation with request/response exchange, and adds HTTP headers so load balancers can route MCP traffic without parsing JSON. The protocol now logs 400M monthly SDK downloads—4x growth in one year—driven by ecosystem pressure to run servers on standard HTTP infrastructure.

MCP SDK monthly downloads grew 4× year-over-year, reaching 400 million by July 2026.
FIG. 02 MCP SDK monthly downloads grew 4× year-over-year, reaching 400 million by July 2026. — blog.modelcontextprotocol.io, 2026
AspectPrevious MCPMCP 2026-07-28
Session modelStateful — initialize/initialized handshake + Mcp-Session-Id headerStateless — protocol version, client identity, and capabilities inline per request
Elicitation / mid-request inputServer holds stream open until user respondsMulti Round-Trip Requests (MRTR): server returns input_required, client retries with input attached
Load balancingSticky sessions required; body inspection to routeStandard HTTP routing via Mcp-Method and Mcp-Name headers; HeaderMismatch on mismatch
CachingNo protocol-level supportttlMs and cacheScope fields on list and resource responses
Distributed tracingCustom instrumentation requiredW3C Trace Context in fixed _meta keys; OpenTelemetry-compatible out of the box
Tasks extensionExperimental; tasks/list exposedOfficial; tasks/list removed (unsafe without sessions); tools/call returns task handle
AuthorizationUnspecifiedOAuth 2.0 + OIDC alignment; iss validation per RFC 9207 (mix-up attack mitigation)
FIG. 03 MCP protocol: key changes from old (stateful) to MCP 2026-07-28 (stateless) — blog.modelcontextprotocol.io, 2026-07-28

The core change: removal of the initialize/initialized handshake and Mcp-Session-Id header. Six Specification Enhancement Proposals converged on a single design: each request carries protocol version, client identity, and capabilities inline. Any server instance can handle any request. Sticky sessions, session stores, and stream-hold logic are gone at the protocol layer. Cloudflare's Agents SDK shipped support immediately; the new primitive is createMcpHandler running in a plain Worker. Amazon Bedrock AgentCore Gateway (enabled via a single UpdateGateway API call), the .NET C# SDK v2.0, and updated TypeScript, Python, and Go SDKs shipped alongside the spec.

Three infrastructure upgrades follow statelessness. Routability: new Mcp-Method and Mcp-Name headers let load balancers route traffic without body inspection; header/body mismatch returns HeaderMismatch error. Cacheability: list and resource responses carry ttlMs and cacheScope fields modeled on HTTP Cache-Control. Traceability: W3C Trace Context propagates through fixed key names in _meta, enabling OpenTelemetry-compatible distributed tracing across SDKs and gateways without custom instrumentation.

CapabilityMechanismWhat Changes
RoutabilityMcp-Method and Mcp-Name HTTP headersLoad balancers route MCP traffic without body inspection; header/body mismatch returns HeaderMismatch error
CacheabilityttlMs and cacheScope fields on list/resource responsesResponses declare their own cache lifetime, modeled on HTTP Cache-Control
TraceabilityW3C Trace Context in fixed _meta key namesOpenTelemetry-compatible distributed tracing across SDKs and gateways without custom instrumentation
FIG. 04 Three statelessness-enabled infrastructure upgrades in MCP 2026-07-28 — blog.modelcontextprotocol.io / blog.mcpservers.org, 2026

Elicitation poses the harder migration. When an MCP server needs input mid-request—approval before a deploy, billing confirmation, design choice—the old protocol held open a stream. The new spec introduces Multi Round-Trip Requests (MRTR): the server returns input_required with what it needs, the client collects the answer, and the operation retries with that input attached. No session is preserved between rounds. Teams using server-initiated elicitation cannot upgrade with an SDK bump; the interaction model requires code rewrite.

MRTR replaces stream-held elicitation: the server returns input_required, the client collects the answer, and the call retries with that input.
FIG. 05 MRTR replaces stream-held elicitation: the server returns input_required, the client collects the answer, and the call retries with that input. — blog.modelcontextprotocol.io, 2026
Multi Round-Trip Request (MRTR) flow replacing stream-held elicitation in MCP 2026-07-28
FIG. 06 Multi Round-Trip Request (MRTR) flow replacing stream-held elicitation in MCP 2026-07-28 — blog.modelcontextprotocol.io, 2026-07-28

The Tasks extension moved from experimental to official. Lifecycle is stateless by design: tools/call returns a task handle, and clients drive progress via tasks/get, tasks/update, and tasks/cancel. The tasks/list method is removed—without sessions, enumerating active tasks is unsafe to expose. MCP Apps, a second new extension, adds server-rendered UIs as sandboxed iframes; tools declare UI templates up front so clients can prefetch and security-review before rendering.

Authorization hardening rounds out the release. Six SEPs align MCP auth with OAuth 2.0 and OpenID Connect. Clients must now validate the iss parameter on responses per RFC 9207, closing a class of mix-up attacks. Roots, Sampling, Logging, and SSE transport enter a 12-month deprecation clock starting July 28—earliest removal July 28, 2027.

FeatureDeprecation StartEarliest Removal
RootsJuly 28, 2026July 28, 2027
SamplingJuly 28, 2026July 28, 2027
LoggingJuly 28, 2026July 28, 2027
SSE TransportJuly 28, 2026July 28, 2027
FIG. 07 MCP features entering 12-month deprecation as of July 28, 2026 — blog.modelcontextprotocol.io, 2026
FeatureDeprecation StartEarliest Removal
RootsJuly 28, 2026July 28, 2027
SamplingJuly 28, 2026July 28, 2027
LoggingJuly 28, 2026July 28, 2027
SSE transportJuly 28, 2026July 28, 2027
FIG. 08 MCP 2026-07-28 deprecation clock: features entering 12-month removal window — blog.modelcontextprotocol.io, 2026-07-28

Migration risk lies not in the stateless default but in hidden session state in application logic. Teams that threaded implicit connection state through transport metadata must make it explicit—a basket_id or browser_id returned by a tool and passed back as an ordinary argument on later calls. Teams running remote MCP servers behind load balancers get immediate horizontal scaling without infrastructure changes. Teams with streaming elicitation flows face real code migration—the 10-week window between May 21 release candidate and July 28 final spec was the window to find those dependencies before production breaks.