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

Переход на редакцию 2026-07-28

Что изменилось в MCP 2026-07-28 по сравнению с 2025-11-25 и что менять в сервере и клиенте - отказ от initialize и сессий, MRTR, новые заголовки, коды ошибок, кэш

сверено со списком изменений спецификации 4 октября 2026

Источник - Key Changes редакции 2026-07-28. Ниже изменения сгруппированы по тому, что нужно сделать.

Было в 2025-11-25 Стало в 2026-07-28 Изменение
initialize и notifications/initialized версия и возможности в _meta каждого запроса SEP-2575
сессии, заголовок Mcp-Session-Id сессий нет; состояние - через явные идентификаторы в аргументах SEP-2567
сведения о сервере из ответа на initialize обязательный для сервера запрос server/discover SEP-2575
сервер отправляет elicitation/create, sampling/createMessage, roots/list сервер возвращает результат «нужны данные», клиент повторяет запрос SEP-2322
поток по GET, resources/subscribe, resources/unsubscribe один запрос subscriptions/listen SEP-2575
ping, logging/setLevel, notifications/roots/list_changed удалены SEP-2575
возобновление потока по Last-Event-ID не поддерживается SEP-2575
Tasks в основном протоколе (экспериментально) Tasks - отдельное расширение SEP-2663
  1. Не ждать initialize. Версию и возможности клиента брать из _meta запроса. Запрос без обязательных полей отклонять с кодом -32602. Подробнее - «Ядро без состояния».
  2. Реализовать server/discover. Это обязательный запрос. Формат - на странице «Обнаружение».
  3. Не хранить состояние «по соединению». Списки инструментов, ресурсов и шаблонов не должны зависеть от соединения. Если между вызовами нужно состояние, выдавать идентификатор и принимать его аргументом - см. «Инструменты с состоянием».
  4. Заменить запросы к клиенту на MRTR. Вопрос пользователю и прочие обращения к клиенту вкладываются в результат. Порядок - «Многошаговые запросы».
  5. Добавить resultType во все результаты. Значение "complete" для обычного результата.
  6. Добавить ttlMs и cacheScope в результаты tools/list, prompts/list, resources/list, resources/templates/list, resources/read и server/discover.
  7. Проверять заголовки HTTP. MCP-Protocol-Version, Mcp-Method, Mcp-Name обязаны совпадать с телом; при расхождении - 400 и код -32020. См. «Транспорты».
  8. Поменять код «ресурс не найден» с -32002 на -32602.
  9. Отвечать 405 на GET и DELETE по адресу MCP, если сервер поддерживает только новую редакцию - это рекомендация спецификации.
  10. Журнал. Сообщения notifications/message отправлять только по запросам, где клиент указал уровень в _meta. Сама функция Logging объявлена устаревшей - см. «Что устарело».
  11. Возвращать инструменты в постоянном порядке - это рекомендация, она помогает кэшу.
  1. Прикладывать _meta к каждому запросу: версию и возможности обязательно, имя клиента - по рекомендации.
  2. На HTTP добавлять заголовки MCP-Protocol-Version, Mcp-Method и, где нужно, Mcp-Name. Поддержка x-mcp-header для клиента обязательна.
  3. Обрабатывать resultType. "input_required" - собрать ответы и повторить запрос с новым id. Отсутствие поля считать значением "complete".
  4. Обрабатывать ошибку -32022: выбрать версию из списка supported и повторить.
  5. Не возобновлять оборванный поток. Отправить запрос заново с новым id.
  6. Отменять запрос на HTTP закрытием потока, а не уведомлением.
  7. Для изменений списков открывать subscriptions/listen вместо потока по GET.
  8. Принимать код -32002 от старых серверов наравне с -32602.

Спецификация называет такую реализацию Dual-era и описывает, как определить эпоху второй стороны.

Кто Как действует
клиент на stdio отправляет server/discover; при ошибке, не похожей на ошибку Modern, или при молчании переходит на initialize
клиент на HTTP отправляет запрос в новом формате; при 400 без распознанной ошибки Modern переходит на initialize
сервер запрос с _meta обслуживает без состояния; запрос initialize - по правилам согласованной старой редакции

Сервер может обслуживать обе эпохи одновременно на одном адресе. Полная таблица исходов - на странице «Редакции и версии».

Изменение Суть
Dynamic Client Registration объявлена устаревшей предпочтительный способ - Client ID Metadata Documents; см. «Регистрация клиента»
параметр iss в ответе авторизации серверу авторизации следует его включать; клиент обязан проверить его, если он есть
учётные данные клиента привязаны к серверу авторизации клиент обязан хранить их по идентификатору издателя и не использовать с другим сервером авторизации
application_type при динамической регистрации клиент обязан указывать подходящее значение

Roots, Sampling, Logging и Dynamic Client Registration объявлены устаревшими в этой редакции; HTTP+SSE устарел раньше. Сроки и замены - на странице «Что устарело».

Этот список описывает протокол, а не конкретную библиотеку. Какую редакцию и какую эпоху поддерживает ваш SDK, нужно смотреть в его документации и примечаниях к выпускам: спецификация этого не определяет.