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

Редакция 2026-07-28: протокол без состояния

28 июля 2026 вышла редакция MCP 2026-07-28: без рукопожатия initialize и без сессий, с многошаговыми запросами, новыми заголовками, кэшем списков и расширениями.

Редакция 2026-07-28 спецификации MCP вышла 28 июля 2026: в этот день проект объявил о выпуске в своём блоге и опубликовал выпуск с такой меткой в репозитории спецификации. Главное в ней - протокол больше не хранит состояние: рукопожатия и сессий нет.

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

  • Обмен initialize/initialized и заголовок Mcp-Session-Id убраны (SEP-2575, SEP-2567).
  • Появился запрос server/discover. Для сервера он обязателен: по списку изменений сервер должен его реализовать. Для клиента он не обязателен: клиент может вызвать его перед любым другим запросом, но может и не вызывать.
  • Многошаговые запросы, MRTR (SEP-2322), заменили запросы от сервера elicitation/create, sampling/createMessage и roots/list. Сервер возвращает resultType: "input_required", клиент повторяет исходный вызов и прикладывает ответы в inputResponses.
  • Запросы Streamable HTTP обязаны нести заголовки Mcp-Method и Mcp-Name (SEP-2243).
  • Ответы tools/list, prompts/list, resources/list и resources/read несут поля ttlMs и cacheScope (SEP-2549).
  • Уведомления об изменениях переехали с прежней точки HTTP GET в один поток subscriptions/listen. Клиент подписывается на каждый вид уведомлений отдельно.
  • Закреплена модель расширений. Задачи вышли из экспериментального ядра в расширение io.modelcontextprotocol/tasks (SEP-2663).

Что объявлено устаревшим:

  • Roots, Sampling и Logging (SEP-2577). Они работают и будут работать ещё не меньше двенадцати месяцев.
  • Dynamic Client Registration - в пользу CIMD. Для обратной совместимости DCR продолжает работать.
  • Старый транспорт HTTP+SSE: запись называет его официально устаревшим и отводит на уход год.

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

Авторов серверов: в новой редакции сервер обязан реализовать server/discover, а запросы Streamable HTTP приходят с заголовками Mcp-Method и Mcp-Name.

Авторов клиентов: вместо ответа на встречный запрос сервера клиент повторяет свой вызов с ответами в inputResponses.

Тех, кто выбирает SDK: по записи, в день выпуска на редакции 2026-07-28 работали все четыре SDK первого уровня (Tier 1) - TypeScript, Python, Go и C#. Rust SDK поддерживает новую редакцию в бета-версии.

Тех, кто пользуется Roots, Sampling, Logging, DCR или HTTP+SSE: они не выключены, но помечены устаревшими. Запись советует не брать Roots, Sampling и Logging в новые реализации.

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

Правила работы без состояния собраны на странице «Ядро без состояния», а запрос server/discover разобран на странице «Обнаружение: server/discover». Что менять в своей программе, описано на странице «Переход на редакцию 2026-07-28». Сроки по устаревшим возможностям ведёт страница «Что устарело в MCP».

Источники