← All notes
Web dev

MCP 2026-07-28: the protocol goes stateless and ditches sessions

DV
Daan VisserJuly 29, 2026 · 3 min read

The biggest revision to the Model Context Protocol since it launched arrived yesterday as a release candidate: MCP 2026-07-28. The headline change is architectural — the protocol is now stateless. The initialize handshake is gone, the session header is gone, and the sticky-routing infrastructure that horizontal deployments have had to maintain is no longer part of the spec.

The handshake is gone — and sticky routing with it

Until now, every MCP connection began with an initialize/initialized exchange to agree on protocol version and share client capabilities. Each subsequent request was tied to that session, which meant horizontally scaled servers had to use sticky load balancers to pin clients to the right instance. The new spec eliminates all of that. Each request now carries the protocol version and client metadata in a _meta field, so any server instance can handle any incoming request. Round-robin load balancers just work. This is the change that unblocks horizontal scaling for everyone who has ever hit the stickiness wall.

State moves to the application layer

Stateless transport does not mean stateless tools. The protocol simply stops holding state invisibly. The new pattern is explicit handles: your server returns an identifier — a basket_id, a session_handle, whatever fits — and the model passes it back as an argument on subsequent calls. State becomes a visible part of the tool interface rather than something buried in transport metadata. It is a cleaner design and easier to debug, but it requires migration from the older pattern if your tools currently depend on server-held session context.

What else ships

The stateless core is the headliner, but the release candidate packs more. Multi round-trip requests let servers ask for missing user input by returning an InputRequiredResult instead of holding an SSE stream open — compatible with the stateless model. An Extensions framework introduces formal governance with reverse-DNS identifiers and independent versioning. MCP Apps lets servers ship interactive HTML interfaces that host clients render in sandboxed iframes. Cacheable tool lists (ttlMs and cacheScope fields) and W3C Trace Context support round out the release. Tasks graduates from an experimental core feature to an official extension, but brings a redesign that requires migration.

Our take

Sessions at the transport layer were always a leaky abstraction: invisible state that is hard to debug, impossible to scale horizontally, and a poor fit for the distributed systems MCP now runs inside. Making state explicit and application-owned is the right call. The ten-week review window before the final spec ships gives SDK maintainers and implementers the runway to validate the changes against real workloads. If you maintain an MCP server today, read the spec and start your migration plan now — the SDK betas are already available.

Thinking about a build?Compile your idea →