Why Stateless Matters
Kurtis Van Gent manages MCP at Google. Google’s managed MCP servers attach to Spanner, Cloud SQL, Bigtable. Last month, those projects handled over 20 million tool calls. Shaun Smith’s Hugging Face deploys over 2,500 MCP servers for inference access. They measured over 100 protocol messages per tool call. That chattiness makes scaling hard. Stateless design fixes that.
The Stateless Protocol: Removing Initialization
SCP 1442 removes the initialization handshake. Every request carries its own protocol version and capabilities. The server responds with support or an error. No session ID is needed. This allows load balancers to route any request to any server. Google needs this for 99.999% reliability. Kurtis noted that stateful protocols bind application lifetime to connection lifetime. With HTTP, each request might hit a different server. Stateless eliminates that coordination.
Multi-Round Trip Requests
Today’s elicitation requires server-to-client requests on SSE. A load balancer can route those to different servers, splitting state. With SCP 2322, the server returns an incomplete result. The client includes that result in a new tool call. The server reconstitutes state from the request alone. This eliminates the multi-server sync problem. Shaun’s attempt to implement elicitation in fast agent highlighted these quirks. The new pattern is a traditional request-response cycle.
Application Sessions
Shaun described sessions as a “side effect of the transport”. Hugging Face used session IDs for analytics, but that created state. The initial proposal added sessions to the data layer. Community feedback led to a session-free design. Explicit resource handles in tool calls carry application state. Sessions become an optional extension. Kurtis noted that a session-free protocol does not lose capabilities for server authors.
HTTP Standardization and Pluggable Transports
JSON-RPC payloads hide routing info. Every proxy must parse JSON to forward. SCP 2243 moves tool names and parameters into HTTP headers. A Spanner instance’s region and project become envelope fields. Future work adds ETags, TTLs on tool lists, and pluggable transports like WebSockets and gRPC. The data layer is now decoupled from transport. This reduces latency and overhead for large-scale deployments.
Q&A
Will the stateless changes break standard IO parity? The SDKs abstract the changes; features like elicitation will work across all transports. ▶ Watch (22:05)
When will the SCPs be finalized? They aim for June spec release, with SCPs landing in April for validation. ▶ Watch (25:15)
Notable Quotes
over 100 MCP protocol messages per tool call Shaun Smith · ▶ Watch (3:32)
every request can be understood in isolation Kurtis Van Gent · ▶ Watch (5:02)
we’re going to remove the initialization Kurtis Van Gent · ▶ Watch (8:10)
the ability for a server to say this parameter needs to be copied into this payload Kurtis Van Gent · ▶ Watch (16:59)
Key Takeaways
- Google and Hugging Face need stateless MCP to scale beyond 20M monthly tool calls.
- SCP 1442 removes initialization; every request carries its own version and capabilities.
- SCP 2322 enables stateless elicitation by including incomplete results in subsequent tool calls.
About the Speaker(s)
Shaun Smith leads Open Source MCP at Hugging Face. He is an MCP Steering Committee member, serving as a Community Moderator and within the Transports Working Group.
Kurtis Van Gent is a MCP Core Maintainer and leads the MCP Transports Working Group. By day, he leads AI Ecosystems and Integrations for Google Cloud Databases and helped create MCP Toolbox for Databases.