Вики · Порталы MCP
Врата, выдерживающие команду
Ревизия спецификации 2026-07-28 переписала протокол сильнее, чем любая предыдущая. Если вы учились по материалам прошлого года, половина знакомых механизмов либо исчезла, либо переведена в деприкацию. Начинать проектирование продакшн-сервера имеет смысл именно отсюда.
Что исчезло из ядра
- Сессий на уровне протокола больше нет. Заголовок
Mcp-Session-Idубран из транспорта Streamable HTTP. Списковые вызовы (tools/list,resources/list,prompts/list) больше не различаются от соединения к соединению. Серверу, которому нужно состояние между вызовами, полагается выдавать явные дескрипторы и принимать их обычными аргументами инструмента. - Рукопожатия нет. Методы
initializeиnotifications/initializedудалены; протокол стал stateless. Каждый запрос несёт версию протокола и возможности клиента в поле_meta. Несовпадение версий возвращаетUnsupportedProtocolVersionError. - Появился
server/discover. Сервер обязан его реализовать: он объявляет поддерживаемые версии, возможности и идентичность. - Подписки переехали. GET-эндпоинт и пара
resources/subscribe/unsubscribeзаменены единым долгоживущим потокомsubscriptions/listen, на который клиент подписывается по типам изменений. - Убраны
ping,logging/setLevelиnotifications/roots/list_changed. Уровень логирования задаётся теперь на запрос, полемio.modelcontextprotocol/logLevelв_meta. - Серверных запросов к клиенту больше нет. Вместо них паттерн MRTR: сервер возвращает результат с
resultType: "input_required"и спискомinputRequests, а клиент повторяет исходный запрос сinputResponses. Все результаты теперь несут обязательное полеresultType. - Возобновление SSE-потока удалено. Оборванный поток теряет запрос — клиент обязан переотправить его с новым идентификатором.
Что помечено к удалению
Спецификация вводит формальный жизненный цикл: Active → Deprecated → Removed, с окном деприкации минимум двенадцать месяцев. Про помеченные возможности сказано прямо: «new implementations should not add support for them» (MCP Key Changes).
| Возможность | Чем заменять |
|---|---|
| Roots | передавать каталоги и файлы аргументами инструмента, URI ресурсов или конфигурацией сервера |
| Sampling | интегрироваться с API провайдера модели напрямую |
| Logging | писать в stderr (для stdio) или использовать OpenTelemetry |
| Транспорт HTTP+SSE | Streamable HTTP |
| Динамическая регистрация клиента (RFC 7591) | Client ID Metadata Documents |
Практический вывод для автора сервера: три механизма, вокруг которых строились «продвинутые» примеры — сервер просит вывод у клиента, сервер объявляет границы файловой системы, сервер шлёт логи, — больше не путь развития. Границы задаются конфигурацией и параметрами, наблюдаемость — телеметрией, а не протоколом.
Что появилось для нагрузки
Кэширование стало частью контракта. Результаты tools/list, prompts/list, resources/list, resources/read и resources/templates/list обязаны нести ttlMs (подсказка о свежести) и cacheScope (public или private — можно ли кэшировать на промежуточных узлах). Дополнительно серверам рекомендовано отдавать инструменты в детерминированном порядке: это повышает попадание в кэш промпта у клиента.
Из мелкого, но заметного: код ошибки «ресурс не найден» изменён с -32002 на -32602, а диапазон -32020…-32099 зарезервирован под саму спецификацию.
Как это ложится на Claude Code
Claude Code начиная с версии 2.1.232 использует рантайм MCP v2 — TypeScript SDK 2.0 и ревизию протокола 2026-07-28. На более ранних версиях, а также на Bedrock, Google Cloud и Foundry работает рантайм v1. Это значит, что сервер, написанный по новой спецификации, у части команды может подключаться по старому пути, и совместимость придётся держать обе стороны.
Границы на стороне клиента задаются не протоколом, а настройками: disabledMcpServers и enabledMcpServers управляют набором, allowedMcpServers и allowManagedMcpServersOnly — политикой организации, а отдельный инструмент можно пометить требующим подтверждения человека. Разрешения работают по обычным правилам вида mcp__<сервер>__<инструмент> — Круг дозволенного.
Наблюдаемость на уровне команды строится снаружи протокола: телеметрия, лимиты расхода и аудит — часть развёртывания, а не сервера (Развёртывание на гильдию).
Базовое устройство протокола, транспорты и подключение — Врата протокола.
Сверено по
Прокачаться: юниты