Production migration guidance for the MCP 2026-07-28 specification started circulating in earnest this week, and the SDK situation explains why: the Python SDK's 2.x line reached 2.2.0 on 7 September, shipping alongside a 1.30.0 maintenance release for the legacy line. Two supported lines means the rewrite is now scheduled work for anyone running a remote server, not a spec you skim.
The headline change is a stateless protocol core, with header-based routing, cacheable list responses, and multi round-trip requests. Google's developer blog framed its own push here plainly: it needed MCP decoupled from stateful transport constraints to handle millions of concurrent queries on Google Cloud. If you run a knowledge connector — a Confluence bridge, a document index, an internal search façade — statelessness is what lets you put N identical server replicas behind a load balancer without sticky sessions or a session store keyed to a long-lived SSE connection.
The tradeoff is that the state doesn't disappear, it moves to you. Pagination cursors over a large corpus, per-request auth context, and anything you were quietly keeping in a session object now have to be encoded into requests or externalized into your own store. Cacheable list responses are a real win if your server exposes hundreds of tools or resources, but caching a resource list against an ACL-filtered corpus is a correctness problem: the cache key has to include the identity the list was computed for, or you leak document titles across permission boundaries.
Auth is where the deadline bites. Dynamic Client Registration is formally deprecated in favor of client ID metadata documents, with no reuse across authorization servers. DCR still works for backward compatibility but the blog says it will be removed in a future version. If you ship a remote MCP server that enterprises point at their own IdP, this is the migration to scope now rather than when removal lands.
Two additions are worth building against. Tasks, one of the first official extensions and contributed by AWS, covers long-running work — which is exactly the shape of reindexing, crawls, and batch ingestion that teams have been faking with poll-this-tool patterns. And W3C trace context propagation in `_meta` fixes the `traceparent`, `tracestate`, and `baggage` key names, so a trace that starts in a client correlates through a gateway into your retrieval backend. For debugging why an answer was wrong, being able to attribute latency and the actual retrieved set across that boundary is more valuable than most eval tooling.
On the roadmap, the Server Card working group is defining `.well-known` metadata so a server can be discovered and reasoned about without connecting to it. For organizations with dozens of internal connectors, that's the difference between a catalog and a spreadsheet.
Separately worth a look: mem0 published a state-of-agent-memory report this week arguing memory is now a distinct architectural component with its own benchmark suite — LoCoMo, LongMemEval, BEAM — rather than a RAG configuration. And AWS released Strands, an open-source agent harness whose pitch is reducing token consumption. Both point the same direction as the MCP work: the interesting engineering has moved from the model call to everything around it.