A remote MCP server on revision 2026-07-28 must scale out to many identical instances behind a load balancer. What does the protocol require to keep protocol state consistent across instances?
Select an answer to reveal the explanation.
Short Explanation
Stateless MCP is like a call center where any rep can pick up your call, because you read out your account number every time. The trap is the old sticky-session setup, built for a handshake that no longer exists.
Full Explanation
In revision 2026-07-28 there is no initialize handshake and no protocol session. Every request carries io.modelcontextprotocol/protocolVersion and clientCapabilities in _meta, and should carry clientInfo, so an instance needs nothing from earlier requests to process the current one. The specification states that servers must not rely on prior requests over the same connection to establish context, which lets a load balancer send any request to any instance without affinity. Sticky routing on Mcp-Session-Id assumes legacy sessions created during initialize; both are gone, and modern servers ignore that header. A shared store of negotiated capabilities solves a problem that no longer exists, because capabilities arrive with each request. Routing by IP to the instance holding a GET stream is also legacy: the standalone GET stream was removed, and change notifications now flow on the response stream of a subscriptions/listen request. Exam caveat: application state still needs a home; long-running work or carts should use explicit handles and shared application storage, which is separate from protocol state. Operational check: send consecutive requests from one client through the balancer, confirm they land on different instances and all succeed, and confirm the Mcp-Method header lets the balancer apply per-method policies.