The Model Context Protocol published its 2026-07-28 specification on July 28 — the largest revision since launch, per the MCP maintainers' own framing. Two weeks in, the ecosystem writeups have caught up enough to say what it actually costs you. If you run a retrieval server, an enterprise search connector, or anything that exposes a corpus to an agent, this is the migration you should be scoping this month.
What was deleted
The `initialize`/`initialized` handshake is gone. So is the `Mcp-Session-Id` header. Under the old model a client opened a session against one server instance and every subsequent request had to land on that same instance, which meant sticky routing, a shared session store, or both. That was the single biggest reason a remote MCP server was harder to operate than it looked.
Now every request is self-contained. Any instance behind a plain round-robin load balancer can serve any request. Equixly's security analysis notes the direct consequence: serverless and edge deployment become viable, and the cost of running a remote server drops. Frank's World reports Cloudflare's position that Durable Objects are no longer required for MCP to function, and that servers can scale to zero on Cloud Run or Workers. Capability discovery moved to a new `server/discover` RPC — optional to call, mandatory to implement. Long-lived streams survive only as an opt-in `subscriptions/listen` channel per notification type; nothing in the request path depends on one.
Google's developer blog says its teams led the stateless push after hitting a wall deploying MCP across cloud-native infrastructure, and co-founded the MCP Transports Working Group with Hugging Face and others. Google's Go SDK shipped v1.7.0 on launch day; the official TypeScript, Python, Go and C# SDKs all support the new revision.
What this means for retrieval specifically
Three changes matter most if your server is a knowledge surface.
Tool list responses are now cacheable, so clients stop refetching your catalog on every reconnect. If you generate tool definitions dynamically per tenant or per index, you need to think about cache keys deliberately rather than relying on reconnect churn to refresh them.
State doesn't disappear — it becomes explicit. The recommended pattern is for a tool to mint a handle and have the model pass it back as an argument. Cursors over large result sets, scoped search sessions, and multi-hop retrieval all move from implicit transport state to handles you now have to scope and expire yourself. Forkast's read is the honest one: the stateless core solves sticky sessions, but it pushes OAuth 2.1, handle scoping and cross-tenant isolation entirely onto the implementer.
Mid-call interaction replaces server-initiated elicitation and sampling with `InputRequiredResult`, so a tool can ask for confirmation without holding a stream open. Useful for write-capable connectors; check whether your framework still assumes the old path.
Also on the migration list: hardcoded `-32002` errors become `-32602`, and Roots, Sampling and Logging are on 12-month deprecation clocks. The authorization core adds issuer validation, binds client credentials to their authorization server, and starts moving off Dynamic Client Registration toward Client ID Metadata Documents. An Enterprise-Managed Authorization extension lets an org gate MCP access through Okta or Entra ID — but only when client, server, authorization service and IdP all support the flow. That is not automatic SSO, and treating it as such is how you end up with a connector nobody can audit.

