MCP версии 2 выходит в эксплуатацию 28 июля 2026 года. Она отказывается от всех рукопожатий (handshakes), заголовков session-ID и трех устаревших подсистем, которые привязывали Model Context Protocol (MCP) к серверам с привязкой сессий (sticky sessions). Протокол становится полностью безстейтовым (stateless), поэтому любой экземпляр с автомасштабированием или serverless-инстанс может обрабатывать любой запрос без необходимости сохранения состояния клиента.
Почему это важно
MCP v1 заставлял клиента начинать сессию с рукопожатия initialize; затем сервер назначал Mcp-Session-Id. Каждый последующий вызов должен был содержать этот заголовок, привязывая пользователя к одному узлу бэкенда. Балансировщикам нагрузки приходилось обеспечивать привязку сессий (session affinity), что увеличивало задержки и усложняло эксплуатацию.
Отсутствие состояния (statelessness) устраняет эти сложности. Весь контекст теперь хранится в специальных метаполях, которые передаются с каждым HTTP-вызовом. Запрос может попасть на любой экземпляр, быть обработанным, а экземпляр может быть удален сразу после отправки ответа. Команды, использующие serverless-платформы, кластеры под управлением оркестраторов контейнеров или любую среду, которая динамически создает и удаляет поды, теперь могут привести протокол в соответствие со своей инфраструктурой.
Что выводится из эксплуатации
Три подсистемы, зависевшие от постоянных соединений, официально признаны устаревшими (deprecated):
- Sampling — В v1 сервер мог попросить клиента сгенерировать текст, что требовало открытой сессии. В v2 ожидается, что сервер будет вызывать провайдера больших языковых моделей (LLM) напрямую или использовать паттерн
InputRequiredResult, при котором клиент предоставляет недостающие данные в последующем запросе. - Roots — Ранее клиенты отправляли URI, которые ограничивали область видимости внешних ресурсов для сервера. Новый подход передает эти URI в качестве параметров инструментов или встраивает их в поля ресурсов запроса, устраняя отдельный этап согласования «корней» (roots).
- Logging — Заголовки логирования на уровне протокола исчезают. Используйте
stderrдля локальной отладки или внедряйте OpenTelemetry для мониторинга в продакшене.
Период вывода из эксплуатации составляет один год. Устаревшие функции продолжат работать в течение этого времени, давая командам возможность провести рефакторинг до того, как протокол перестанет их поддерживать.
Что нового, помимо отсутствия состояния
MCP v2 добавляет два официальных расширения:
- MCP Apps — Легковесный способ описания пользовательских интерфейсов, отрисовываемых на стороне сервера, которые протокол может вызывать.
- Tasks — Паттерн для обработки длительных операций, которые могут охватывать несколько циклов «запрос-ответ».
Оба расширения опираются на модель безстейтовых запросов и избегают скрытого состояния сессии.
Риски и контраргументы
Это изменение не является обновлением по принципу «подключил и забыл» (plug-and-play). SDK версии 2 все еще находятся в стадии бета-тестирования, и их публичные API могут измениться до выхода стабильного релиза. Для рабочих нагрузок в продакшене, которые не допускают критических изменений (breaking changes), оставайтесь на стабильном SDK v1 до тех пор, пока SDK v2 не выйдет из стадии бета-тестирования.
Разработчикам также необходимо провести аудит существующего кода на предмет использования любой из трех устаревших подсистем.
Прагматичный план миграции
- Проведите аудит сегодня — Просканируйте свои сервисы на предмет использования рукопожатий,
Mcp-Session-Id, вызовов sampling, URI корней (roots) и логирования на уровне протокола. Выявите код, который перестанет работать в безстейтовой модели. - Протестируйте на некритичном узле — Когда выйдет стабильный SDK v2, разверните сервер в песочнице, подключите к нему тестового клиента и убедитесь, что все необходимые метаполя присутствуют и правильно интерпретируются.
- Полная миграция до дедлайна — Завершите переход на всех рабочих узлах до окончания годового льготного периода, чтобы избежать отказов в работе во время выполнения.
На что обратить внимание дальше
- Выпуск стабильного SDK — Бета-версии SDK будут заморожены, и будет опубликован версионный стабильный пакет. Эта версия станет безопасной целью для любого критически важного развертывания.
Переход потребует изменений в коде и короткого периода экспериментов с бета-SDK, но результатом станет более чистая и масштабируемая точка интеграции для любого приложения на базе LLM.
Итог: Если ваш стек все еще опирается на рукопожатия MCP или три устаревшие подсистемы, начинайте аудит прямо сейчас; годовой льготный период — это щедро, но реальная цена — это усилия на рефакторинг, а не дедлайн.
