The Model Context Protocol's biggest revision since launch finalizes tomorrow, 2026-07-28, and the headline is subtraction. It deletes the session, the initialize handshake, and the Mcp-Session-Id header. If you run an MCP server, the change you feel first isn't a new feature — it's that your deploy gets simpler.

The one-line answer: MCP 2026-07-28 makes the protocol stateless. SEP-2567 removes the Mcp-Session-Id header and SEP-2575 removes the initialize/initialized handshake — protocol version, client info, and capabilities now travel in _meta on every request. So any request can hit any instance behind a plain round-robin load balancer, with no sticky routing and no shared session store. Nothing you run today breaks tomorrow — deprecated features keep working for ~12 months, and new clients fall back to the old handshake against old servers.

We covered what the spec changes and why it got smaller. This is the other half: the checklist. Here is what a server author actually touches, in the order the work bites.

1. Make the deploy stateless (the easy win)#

This is the change most people can adopt with almost no code and immediate payoff.

The payoff is real: horizontal scaling stops being a distributed-state problem. A cold instance is as good as a warm one because there's no session to warm.

2. Move the handshake into _meta#

The initialize/initialized round-trip is gone. Read the protocol version, client info, and client capabilities from _meta on each incoming request instead of from a one-time handshake you cached.

3. Migrate long-running work to Tasks (the real rework)#

This is where 2025-11-25 code needs actual surgery. Live SSE streams that held a connection open for a long-running tool don't fit a world where any request can land anywhere. The replacement is the poll-based Tasks extension (SEP-2663):

The consequence for your architecture: persist task state in a shared, durable store, because a poll for a given task id can hit any instance. The task's identity moves into your storage layer, where it belongs, instead of living in a connection.

4. Delete Sampling and Roots#

Two client-facing capabilities are deprecated, and both hand responsibility back to the host:

What you get for free (and can ignore for now)#

The same release ships MCP Apps (SEP-1865) — a server can now ship an interactive HTML UI as a ui:// resource, rendered by the host in a sandboxed iframe, with every UI action routed back over the same audited JSON-RPC path as a normal tool call. It's additive. Adopt it when you want a richer surface; nothing forces it.

The honest timeline#

Finalization is tomorrow, but "final" is not "flag day." The deprecation policy keeps removed features working through every spec version published within a year of the one that deprecated them — a ~12-month floor — and the handshake fallback means new and old peers keep talking. So treat this as a migration you schedule, not a rewrite you rush. Do step 1 this week for the free scaling win. Book step 3 — the Tasks rework — as a real project, because that's the one that changes how your server thinks about time.