Перейти к содержимому
Выберите тему

C# SDK 2.0: HTTP без состояния по умолчанию

28 июля 2026 вышел C# SDK для MCP версии 2.0.0. HTTP-сервер по умолчанию работает без состояния, клиент сначала вызывает server/discover, Tasks вынесены в отдельный пакет.

28 июля 2026 вышел C# SDK для MCP версии 2.0.0. Выпуск v2.0.0 опубликован в хранилище modelcontextprotocol/csharp-sdk. Заметки к нему говорят, что эта версия приводит SDK в стабильное соответствие редакции 2026-07-28. С участниками, которые согласуют редакцию 2025-11-25 и более ранние, SDK продолжает работать.

Что изменилось

Заметки перечисляют несовместимые изменения. Главные из них:

  • HTTP без состояния по умолчанию. HttpServerTransportOptions.Stateless теперь по умолчанию равен true. Такой сервер не создаёт сеансов транспорта, не открывает отдельные точки SSE GET и DELETE и не поддерживает запросы от сервера к клиенту по своей инициативе.
  • Сначала обнаружение. Клиент сначала вызывает server/discover. Если сервер старый, клиент сам переходит на прежнее рукопожатие initialize.
  • Roots, Sampling и Logging устарели. Их стабильные интерфейсы теперь дают предупреждение MCP9005, потому что эти функции объявлены устаревшими в редакции 2026-07-28.
  • Tasks в отдельном пакете. Реализация перенесена в ModelContextProtocol.Extensions.Tasks. С прежней экспериментальной реализацией она не совместима ни по интерфейсу, ни по формату обмена.
  • OAuth строже. AuthorizationRedirectDelegate даёт предупреждение MCP9007. Авторизация завершается ошибкой, если метаданные сервера авторизации не объявляют S256 в code_challenge_methods_supported.
  • Структурированный результат. Инструмент с UseStructuredContent = true и возвращаемым значением, которое не является объектом, отдаёт само значение и подходящую схему: structuredContent: 72 вместо { "result": 72 }.
  • inputSchema обязателен. Разбор описания Tool без inputSchema теперь вызывает JsonException.

В кратком описании выпуска названы также отдельные пакеты расширений для MCP Apps и Tasks.

В тот же день, 28 июля 2026, раньше по времени был опубликован кандидат v2.0.0-rc.2.

Кого это касается

Владельцев HTTP-серверов, которым нужны сеансы. Задайте Stateless = false. Настройки, которые работают только с состоянием, теперь дают предупреждение MCP9006.

Тех, кто пользуется Roots, Sampling или Logging. Заметки говорят, что существующие соединения со старыми редакциями могут и дальше использовать эти интерфейсы. Предупреждение MCP9005 можно временно отключить, пока вы планируете переход.

Тех, кто пользовался Tasks в версиях 1.4.x. Добавьте ссылку на пакет ModelContextProtocol.Extensions.Tasks и зарегистрируйте Tasks через WithTasks(...).

Тех, кто пишет клиенты и серверы авторизации. Проверьте, что метаданные объявляют S256, а клиенты читают структурированный результат по объявленной схеме, а не ищут свойство result.

Как это выглядит сейчас

Этот текст описывает день выхода 2.0.0. Текущий выпуск и режимы сеансов HTTP-сервера разобраны на странице «C# SDK». Правила самого протокола - на страницах «Ядро без состояния», «Обнаружение: server/discover» и «Что устарело в MCP».

Источники