AI Agent - Aug 6, 2026

MCP Stateless vs Session-Based Compatibility

Quick answer

Stateless MCP and session-based MCP are materially different wire contracts. The 2026-07-28 revision removes initialization and Mcp-Session-Id, places version and capabilities on every request, and adds server/discover. Do not point an untested older client at a new-only server and assume negotiation will repair the mismatch.

Compatibility comparison

ConcernSession-based protocolStateless 2026-07-28 protocol
Connection setupInitialization handshakeIndependent requests
RoutingMay require session affinityAny compatible instance can handle a request
StateOften coupled to sessionExplicit handle and application storage
Failure recoverySession loss can interrupt workRetry can reach a healthy instance, subject to idempotency
Capability exchangeStartup negotiationPer-request metadata and optional preflight discovery
List behaviorMay vary by connectionList endpoints no longer vary per connection

Stateless routing improves infrastructure flexibility, but a retried mutation can still duplicate work unless the application enforces idempotency.

Mixed-version rollout

  1. Record every client and server protocol version.
  2. Use server/discover where supported and preserve a documented older probe path only where required.
  3. Route old and new traffic to explicit compatibility surfaces.
  4. Test list results, tool calls, resources, prompts, notifications, errors, auth, retries, and long-running tasks.
  5. Compare semantic results, not only successful HTTP status.
  6. Remove the older path only after observed traffic and rollback criteria are satisfied.

Use the migration guide for the implementation sequence and the HTTP governance guide for gateways.

Frequently asked questions

Is it automatically backward compatible?

No. Removed handshake and session fields require explicit detection and tested compatibility behavior.

Is all state gone?

No. Only protocol-level session state is removed. Application state remains explicit.

Why is load balancing easier?

Self-describing independent requests do not require an in-memory protocol session on one pinned instance.

Official sources

Source check: August 6, 2026. Verify final spec and SDK compatibility before changing production routing.