MCP 2026-07-28 goes fully stateless: the initialize handshake is gone and every server MUST implement server/discover
The finalized spec removes the `initialize`/`notifications/initialized` handshake and protocol-level sessions entirely; each request now carries its protocol version and client capabilities in `_meta` (`io.modelcontextprotocol/protocolVersion`, `clientCapabilities`), with mismatches returning `UnsupportedProtocolVersionError`. Servers MUST implement a new `server/discover` RPC advertising supported versions, capabilities, and identity, and servers needing cross-call state must mint explicit handles passed as ordinary tool arguments. This is the migration that lets remote MCP servers sit behind a plain round-robin load balancer — but any server holding per-connection state has to be rewritten around server-minted handles.
↳ Follow the thread