← Все новости

MCP C# SDK 2.0: HTTP без состояния по умолчанию и многошаговые запросыMCP C# SDK 2.0: stateless HTTP by default and multi round-trip requests

Официальный SDK Model Context Protocol для .NET перешёл на ревизию спецификации от 28 июля 2026: HTTP-серверы теперь по умолчанию работают без сессий, а запросы к клиенту посреди вызова заменены многошаговыми запросами. Много ломающих изменений.The official Model Context Protocol SDK for .NET moved to the 2026-07-28 spec revision: HTTP servers are now sessionless by default, and mid-call requests to the client are replaced by multi round-trip requests. Lots of breaking changes.

InfoQ подробно разобрал MCP C# SDK 2.0 — официальную реализацию Model Context Protocol для .NET. Сам релиз 2.0 вышел раньше (с августа по октябрь уже были 2.1–2.3), но изменения затрагивают любого, кто пишет MCP-серверы на .NET.

Главное

  • Реализована ревизия спецификации MCP от 2026-07-28.
  • HTTP без состояния по умолчанию (HttpServerTransportOptions.Stateless = true): рукопожатие initialize и заголовок Mcp-Session-Id больше не используются. Клиенты сначала вызывают server/discover, а со старыми серверами откатываются к прежней схеме.
  • Вызовы инструментов несут заголовки Mcp-Method и Mcp-Name; атрибут [McpHeader] превращает параметры в заголовки Mcp-Param-* — удобно для маршрутизации на прокси.
  • Multi Round-Trip Requests: вместо запросов сервера к клиенту посреди вызова инструмент бросает InputRequiredException, а клиент повторяет вызов с inputResponses.

Ломающие изменения

  • Серверам, которым нужны сессии, — явно выставить Stateless = false.
  • Tasks вынесены в пакет ModelContextProtocol.Extensions.Tasks.
  • Строже OAuth: проверка issuer по RFC 9207 и обязательный PKCE S256.
  • API roots, sampling и logging помечены устаревшими.

Перед обновлением прогоните интеграционные тесты: долгие обработчики без промежуточных сообщений теперь могут упираться в таймауты.

InfoQ took a detailed look at MCP C# SDK 2.0, the official Model Context Protocol implementation for .NET. The 2.0 release itself came earlier (2.1–2.3 shipped between August and October), but the changes affect anyone writing MCP servers on .NET.

Highlights

  • Implements the MCP spec revision dated 2026-07-28.
  • Stateless HTTP by default (HttpServerTransportOptions.Stateless = true): the initialize handshake and Mcp-Session-Id header are gone. Clients call server/discover first and fall back to the old flow for older servers.
  • Tool calls carry Mcp-Method and Mcp-Name headers; the [McpHeader] attribute turns parameters into Mcp-Param-* headers — handy for proxy routing.
  • Multi Round-Trip Requests: instead of server-to-client requests mid-call, a tool throws InputRequiredException and the client retries the call with inputResponses.

Breaking changes

  • Servers that need sessions must set Stateless = false explicitly.
  • Tasks moved to the ModelContextProtocol.Extensions.Tasks package.
  • Stricter OAuth: RFC 9207 issuer validation and mandatory PKCE S256.
  • The roots, sampling and logging APIs are deprecated.

Run integration tests before upgrading: long-running handlers that send nothing may now hit timeouts.

Источники