MCP C# SDK: Per-Request Client Capabilities Replace Session-Level Negotiation
The MCP protocol update dated 2026-07-28 eliminated session-based initialization handshakes, making every HTTP request fully self-contained with its own client capabilities declared inside the request's _meta field. In the C# SDK, this means request.Server.ClientCapabilities is intentionally null for stateless handlers, and developers must read capabilities from JsonRpcMessageContext.ClientCapabilities on each individual request. Caching or reusing capability values from earlier requests can cause incorrect behavior, especially when different clients or concurrent calls declare different extension support within the same server process. The ModelContextProtocol.AspNetCore 2.2.0 package exposes the correct per-request value via RequestContext.JsonRpcRequest.Context, which the official SDK documentation designates as the authoritative source. This design supports stateless, horizontally scalable deployments where any server instance can handle any request without sticky routing or a shared session store.
This is an AI-generated summary. ShortSingh links to the original source for the complete article.
Discussion (0)
Log in to join the discussion and vote.
Log in