We currently have a stateful MCP server that leverages stateful features like elicitations and are facing the following migration deadlock:
- To support our existing clients and legacy elicitation flow, we must keep HttpServerTransportOptions.Stateless = false.
- In the C# SDK, a stateful endpoint refuses requests using the latest sessionless protocol revision (2026-07-28) with UnsupportedProtocolVersion (-32022).
- Therefore, even after upgrading to the latest C# SDK, our server cannot actually serve clients using the latest MCP protocol revision. Those clients must downgrade to an initialize/session-based revision.
- We cannot switch the entire endpoint to stateless mode until all our existing clients support the latest sessionless protocol and our elicitation flows have migrated to the modern multi-round-trip request mechanism.
- Waiting for every client to migrate means we cannot progressively adopt the latest protocol. Conversely, switching off statefulness early would break clients and functionality that still depend on sessions.
Could the SDK instead support both protocols on one endpoint?
- legacy clients: continue using stateful sessions,
initialize, Mcp-Session-Id, GET, and DELETE.
- 2026-07-28+ clients: use a fresh, sessionless server/transport for each POST, without
Mcp-Session-Id.
- 2026-07-28+ GET/DELETE: continue returning
405 Method Not Allowed.
This could be opt-in to preserve the existing fallback behavior. The elicitation API would use MRTR for newer clients or fallback to session based support based on the client protocol version.
Essentially a solution could look like:Add hybrid mode: serve 2026-07-28+ clients statelessly alongside legacy stateful sessions on a single endpoint- #1
A current work around from @halter73 Add hybrid Streamable HTTP sample
We currently have a stateful MCP server that leverages stateful features like elicitations and are facing the following migration deadlock:
Could the SDK instead support both protocols on one endpoint?
initialize,Mcp-Session-Id, GET, and DELETE.Mcp-Session-Id.405 Method Not Allowed.This could be opt-in to preserve the existing fallback behavior. The elicitation API would use MRTR for newer clients or fallback to session based support based on the client protocol version.
Essentially a solution could look like:Add hybrid mode: serve 2026-07-28+ clients statelessly alongside legacy stateful sessions on a single endpoint- #1
A current work around from @halter73 Add hybrid Streamable HTTP sample