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

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

Страница: https://mcpdoc.ru/blog/csharp-sdk-v2/
Указатель сайта: https://mcpdoc.ru/llms.txt

- **Рубрика:** Выпуск

- **Дата события:** 28 июля 2026

- **Опубликовано на сайте:** 4 октября 2026

- **Источник:** [github.com](https://github.com/modelcontextprotocol/csharp-sdk/releases/tag/v2.0.0)

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»](https://mcpdoc.ru/sdk/csharp/). Правила самого протокола - на страницах [«Ядро без состояния»](https://mcpdoc.ru/protocol/stateless/), [«Обнаружение: server/discover»](https://mcpdoc.ru/protocol/discovery/) и [«Что устарело в MCP»](https://mcpdoc.ru/protocol/deprecations/).

## Источники

- [Выпуск v2.0.0 в хранилище csharp-sdk - заметки и дата публикации](https://github.com/modelcontextprotocol/csharp-sdk/releases/tag/v2.0.0)
- [Все выпуски хранилища csharp-sdk](https://github.com/modelcontextprotocol/csharp-sdk/releases)
