Background
The Model Context Protocol (MCP) is an open protocol designed to standardize communication between AI applications and external systems such as tools, resources, and prompts.
Rather than requiring every AI platform to implement its own integration mechanism, MCP defines a common protocol that enables clients and servers from different vendors to communicate using the same set of messages.
At a high level, an MCP interaction consists of three components:
Client
│
▼
MCP Server
│
▼
Tools / ResourcesThe client is responsible for initiating requests, while the server exposes capabilities such as tool execution, prompt templates, and resource access.
How Earlier Versions Worked
Prior to the 2026-07-28 specification, the Streamable HTTP transport relied on server-managed sessions.
Communication began with an initialize request. During this exchange, the client and server negotiated protocol capabilities, exchanged metadata, and established a session that persisted across subsequent requests.
Client
│
initialize()
│
▼
ServerAfter initialization, the server generated a session identifier (Mcp-Session-Id) and retained information associated with that client.
Typical session state included:
- Client metadata
- Negotiated capabilities
- Runtime context
- Execution state
- Protocol information
Future requests referenced this existing session rather than carrying all execution context themselves.

Because the server maintained session information, requests were no longer completely independent. Infrastructure components such as load balancers had to ensure that subsequent requests reached the same server instance that owned the session.
Limitations of Server-Managed Sessions
Although server-managed sessions simplify certain workflows, they introduce several operational constraints, particularly in distributed environments.
Session Affinity
Once a session had been established, every subsequent request had to be routed to the same server instance.
Request 1 → Server 1
Request 2 → Server 1
Request 3 → Server 1This behavior, commonly referred to as session affinity or sticky sessions, prevents requests from being distributed freely across all available server instances.
Horizontal Scaling
Stateless systems scale effectively because every server can process every request. Session-based architectures, however, introduce additional routing constraints.

Although additional servers can be added, requests associated with an active session must continue to reach the original server.
This leads to:
- Uneven resource utilization
- Reduced load-balancing efficiency
- Increased infrastructure complexity
Fault Tolerance
Session state also affects system availability.
If the server maintaining a session becomes unavailable, the associated session is lost. Depending on the implementation, clients may need to reconnect, perform the initialization handshake again, and recreate any required execution context.
Stateless Request Processing
The 2026-07-28 specification removes server-managed sessions from the Streamable HTTP transport.
Instead, every request is treated as an independent unit of work.
The processing lifecycle becomes straightforward:
- The client constructs a complete request.
- A load balancer routes the request to any available server.
- The server processes the request.
- The server returns a response.
- Temporary execution state is discarded.

Because no request depends on information retained from previous interactions, any server instance can process any request. This aligns MCP with the stateless communication model commonly used by modern HTTP services and cloud-native applications.
Request Format
MCP continues to use JSON-RPC 2.0 as its messaging protocol.
{
jsonrpc: "2.0";
id: string | number;
method: string;
params?: {
[key: string]: unknown;
};
}Each field has a specific purpose:
jsonrpc— Specifies the JSON-RPC protocol version.id— Uniquely identifies the request and allows responses to be correlated.method— Specifies the operation the client wants to invoke.params— Contains the arguments required by that operation.
Unlike previous implementations, the request does not rely on an existing server-side session. Every request contains the information required for execution.
Response Format
Responses follow the same JSON-RPC structure.
{
jsonrpc: "2.0";
id: string | number;
result: {
resultType: string;
[key: string]: unknown;
};
}The response includes the same id that appeared in the request, allowing the client to associate the returned result with the correct operation.
Once the response has been sent, the server retains no request-specific state.
Operational Advantages
Removing server-managed sessions simplifies both server implementations and production deployments.
Horizontal Scalability
Any request can be processed by any available server instance, allowing capacity to grow simply by adding more servers.
Improved Load Balancing
Because requests are no longer tied to a specific server, standard load-balancing algorithms such as round-robin or least-connections can be used without requiring sticky sessions.
Better Fault Tolerance
If a server becomes unavailable, subsequent requests can be routed immediately to another healthy instance. No session migration or recovery is required.
Simpler Infrastructure
Removing session management also eliminates several operational requirements:
- Sticky-session configuration
- Distributed session stores
- Session replication
- Server affinity management
The resulting architecture is easier to deploy, maintain, and scale.
Migration Considerations
Developers maintaining existing MCP server implementations should review components that depend on session management.
Typical migration tasks include:
- Removing server-managed session storage.
- Eliminating dependencies on
Mcp-Session-Id. - Designing request handlers to operate independently.
- Retrieving persistent data from durable storage instead of relying on in-memory session state.
The protocol continues to use JSON-RPC, so most request-processing logic can remain unchanged. The primary architectural change is that servers should no longer assume previous requests have established reusable state.
Conclusion
The transition to a stateless request-response architecture represents a significant evolution in the Model Context Protocol.
By eliminating server-managed sessions, MCP becomes easier to scale horizontally, simpler to deploy behind standard load balancers, and more resilient to infrastructure failures.
Rather than maintaining long-lived server-side state, each request is now processed as an independent unit of work that can be handled by any compatible server instance. This architectural change aligns MCP with modern distributed systems and cloud-native deployment practices while reducing operational complexity.
