Ground Truth.
AI, checked against the source.

News · 2026-08-09

MCP dropped the handshake, and the plumbing went with it

The Model Context Protocol's July 28 release deletes the session. Where a tool call previously required a handshake to open a session and a second request to actually do the work, it is now one self-contained HTTP request that any server instance behind a plain load balancer can answer. The maintainers describe it as MCP "transforming from a bidirectional stateful protocol into a request/response stateless protocol," and it is the largest change to the standard since it launched.

Key facts

MCP is the standard way to hand an AI agent a new capability - a database it can query, an API it can call, a service it can act on. Anthropic introduced it in late 2024, it became ubiquitous through 2025, and it acquired a reputation for being heavier to run than the job warranted. The reason was the session. Every client-server pair had to open a connection, negotiate, and keep that connection pinned to one particular backend machine for its lifetime, because the state lived in the transport.

That constraint cascades in unpleasant ways at any real scale. You cannot put an MCP server behind an ordinary round-robin load balancer, because the second request has to reach the same instance as the first. You cannot run it serverless. A client configured with five servers holds five live connections whether or not it ever uses them, and pays the initialization cost before it can do anything at all.

The new design makes every request self-describing. Protocol version, client identity, and capabilities ride along inside a _meta field on the request itself, so nothing needs to be remembered between calls. Method and tool names travel in Mcp-Method and Mcp-Name HTTP headers, which means a gateway can route and authorize a request by reading its headers rather than parsing the body. List responses now carry cache hints and a deterministic order, so a client can cache a server's tool catalog and keep prompt caches stable across reconnects.

The comparison is between a phone call and a letter. Under the old design, using a tool meant dialing, waiting for someone to pick up, establishing who you are, and only then asking your question - and staying on the line the whole time. Under the new one you write down everything the recipient needs and drop it in the post, and whichever clerk opens it can answer.

State did not become impossible, it became visible. The maintainers' guidance is that a server needing continuity across calls should hand out an explicit handle from one tool and have the model pass it back as an argument to the next. Their stated reason is interesting on its own terms: "We found this works better than session state hidden in the transport - the model can see the handle and thread it between tools." The thing the model can read, the model can reason about.

The other structural change is that server-to-client requests no longer need a held-open stream. When a server needs something back from the client mid-call - a sampling request, a prompt for user input - it now returns resultType: "input_required" and the client retries the original call with the answers attached. The release also hardens authorization, adding RFC 9207 issuer validation and shifting away from Dynamic Client Registration toward client metadata documents.

The clearest signal that this matters is who it brought back. Simon Willison, who had publicly written MCP off in favor of simply giving agents a terminal, called this "the most significant change to the MCP spec since it first launched" and said it "reignited my personal interest in the protocol." His reasoning is a security argument, not a convenience one: handing an agent a shell with internet access is risky and needs a strong model to drive it, whereas "MCP tools are easier to audit and control, and simple enough that smaller models that run on a laptop can still drive them reasonably well." He built and shipped mcp-explorer the same week, a stateless CLI for probing MCP servers - the sort of thing that only gets built when the barrier drops.

The honest caveat is compatibility, and it is not small. This is a breaking change to a protocol with an enormous installed base, and "supports MCP" no longer tells you enough - both ends have to agree on which revision they mean. The TypeScript SDK's migration guide is explicit that connecting still speaks the 2025 handshake unless you opt in, with an automatic mode that probes for the new discovery call and falls back. The guide also carries a warning worth heeding: the request state a server now receives from the client is untrusted input and should be integrity-protected, which is the same lesson role-confusion research keeps delivering about anything an agent reads. The protocol got much easier to run. The ecosystem still has a year of upgrade work in front of it, which is presumably why the release also introduces a twelve-month minimum deprecation window.


Primary source, verified: read the paper →

Key questions

What concretely changed in the 2026-07-28 spec?

The initialize and initialized exchange and the Mcp-Session-Id header are gone. Each request now carries its own protocol version, client identity, and capabilities in a _meta field, so a tool call is one HTTP request instead of a handshake followed by a call.

Does stateless MCP mean my server cannot keep state?

No. The maintainers' guidance is to mint an explicit handle from a tool and have the model pass it back as an argument, rather than hiding state in the transport - which they say works better because the model can see the handle and thread it between tools.

Will my existing MCP setup break?

Not immediately, but it will not upgrade by itself either. The TypeScript v2 SDK still speaks the 2025 handshake by default; you have to opt into the new wire format, and the release adds a formal deprecation policy with a twelve-month minimum window.
Cite this

APA

Ground Truth. (2026, August 9). MCP dropped the handshake, and the plumbing went with it. Ground Truth. https://groundtruth.day/news/mcp-dropped-the-handshake-and-the-plumbing-went-with-it.html

BibTeX

@misc{groundtruth:mcp-dropped-the-handshake-and-the-plumbing-went-with-it,
  title  = {MCP dropped the handshake, and the plumbing went with it},
  author = {{Ground Truth}},
  year   = {2026},
  month  = {aug},
  url    = {https://groundtruth.day/news/mcp-dropped-the-handshake-and-the-plumbing-went-with-it.html}
}

Topics: mcp · agents · protocols · tool-use · infrastructure · open-source · anthropic

Comments are replies to this story on Bluesky — reply with any Bluesky account to join in.