The 2026-07-28 MCP Specification Release Candidate
The release candidate for MCP 2026-07-28 is now available. It is the largest revision of the protocol since launch and delivers on the 2026 roadmap:
- a stateless core that scales on ordinary HTTP infrastructure
- extensions including server-rendered UIs through MCP Apps and long-running work through the Tasks extension
- authorization that aligns more closely with OAuth and OpenID Connect deployments
- a formal deprecation policy so the protocol can evolve without breaking what you’ve built,
and many other changes.
The practical effect on a production deployment is immediate. A remote MCP server that previously needed sticky sessions, a shared session store, and deep packet inspection at the gateway can now run behind a plain round-robin load balancer, route traffic on an Mcp-Method header, and let clients cache tools/list responses for as long as the server’s ttlMs permits.
The release candidate is available today and the final specification ships on July 28, 2026. This release contains breaking changes; see Release Timeline and Validation for the details.
A Stateless Protocol
The headline change is that MCP is now stateless at the protocol layer. Six Specification Enhancement Proposals (SEPs) work together to get there, completing the plan we laid out in The Future of MCP Transports in December.
Before and after
In 2025-11-25, calling a tool over Streamable HTTP means establishing a session first:
POST /mcp HTTP/1.1
Content-Type: application/json
{"jsonrpc":"2.0","id":1,"method":"initialize",
"params":{"protocolVersion":"2025-11-25","capabilities":{},
"clientInfo":{"name":"my-app","version":"1.0"}}}
The server responds with an Mcp-Session-Id that every subsequent request must carry, pinning the client to whichever instance issued it:
POST /mcp HTTP/1.1
Mcp-Session-Id: 1868a90c-3a3f-4f5b
Content-Type: application/json
{"jsonrpc":"2.0","id":2,"method":"tools/call",
"params":{"name":"search","arguments":{"q":"otters"}}}
In 2026-07-28, the same call is a…