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. Такой сервер не создаёт сеансов транспорта, не открывает отдельные точки SSEGETи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».