Спецификация MCP от июля 2026 года полностью исключает любые формы состояния сессии (session state) из протокольного уровня, заставляя всё состояние храниться внутри контекстного окна модели. Это изменение позволяет любому MCP-серверу отвечать на любой запрос, открывая путь к полностью безстейтовым (stateless) развертываниям за балансировщиками нагрузки, serverless-функциями и автомасштабируемыми подами Kubernetes.
Почему это важно
С момента своего первого релиза MCP (Model Communication Protocol) использовал облегченное рукопожатие (handshake) для установления сессии и заголовок Mcp-Session-Id для отслеживания состояния диалога в нескольких HTTP-вызовах. Такая архитектура позволяла серверу помнить, какие дескрипторы инструментов (tool handles), частота дискретизации (sampling rates) или настройки логирования принадлежат конкретному клиенту. Это также обеспечивало возможность возобновления потоков Server-Sent Events (SSE), благодаря чему при разрыве соединения можно было продолжить работу с того места, где она прервалась.
Спецификация от 28 июля 2026 года полностью устраняет рукопожатие сессии. Теперь каждый запрос содержит версию протокола и возможности клиента в поле _meta, а заголовок Mcp-Session-Id исчезает. Поля Roots, sampling и logging помечены как устаревшие (deprecated). Короче говоря, протокол передачи данных (wire protocol) теперь представляет собой чистый запрос-ответ; поддерживать «сессию» больше не нужно.
Что разработчикам придется делать иначе
Состояние больше не является заботой сервера; оно живет в контекстном окне модели. Когда модели нужно обратиться к внешнему ресурсу, она должна получить явный дескриптор (handle) от сервера в качестве части результата работы инструмента. Следующий запрос включает этот дескриптор в качестве аргумента, и модель обрабатывает его как любой другой токен.
Поскольку контекстное окно — это буфер токенов фиксированного размера, каждый дескриптор занимает место, конкурируя с промптами пользователя или ответами модели.
Также меняется подход к надежности. Без возможности возобновления SSE или повторной доставки сообщений, при обрыве потока запрос теряется полностью. Клиенты должны перезапускать вызов с самого начала. Для быстрых безстейтовых запросов это приемлемо; для длительных процессов извлечения данных или многошаговых задач агентов это заставляет разработчиков самостоятельно реализовывать логику повторных попыток (retry logic) или разбивать задачу на более мелкие части.
Pilot Protocol восполняет пробел
Безстейтовость MCP преднамеренна, но она оставляет сетевой уровень без идентификации на уровне соединения или гарантий надежности. Pilot Protocol, который работает под MCP, восполняет этот пробел. Pilot устанавливает идентификацию один раз и использует шифрование, чтобы привязать пакеты к отправителю. С точки зрения MCP, клиент просто отправляет новый HTTP-запрос каждый раз; Pilot же обеспечивает стабильность базового транспорта.
Эти два протокола дополняют друг друга: MCP остается легким, дешевым в расчете на запрос и простым в масштабировании за любым HTTP-эндпоинтом, в то время как Pilot берет на себя тяжелую работу, которую раньше выполняли традиционные протоколы на основе сессий.
Преимущества при масштабировании
- Удобство для балансировщиков нагрузки — не требуется привязка сессии (session affinity); любой бэкенд может обработать любой запрос.
- Готовность к serverless-архитектуре — функции могут запускаться по требованию, обрабатывать запрос и завершаться без сохранения состояния.
- Автомасштабирование Kubernetes — поды можно свободно добавлять или удалять; уровень управления (control plane) больше не отслеживает карты сессий.
Компромиссы
- Избыточность токенов — дескрипторы и любое другое состояние теперь занимают место в контекстном окне модели, напрямую конкурируя с промптом и ответом.
- Корректность, зависящая от модели — модель должна правильно возвращать дескрипторы; галлюцинация или опечатка могут нарушить рабочий процесс.
- Отсутствие встроенной возможности возобновления — длительные задачи должны реализовывать собственные механизмы контрольных точек (checkpointing) или принимать риск полного перезапуска.
- Устаревание средств диагностики — поля Roots, sampling и logging исчезли, поэтому разработчики теряют удобный инструмент для тонкого мониторинга, если не добавят его на уровне приложения.
Итог
Устраняя состояние сессии из протокола передачи данных, MCP 2026-07 превращает протокол в чистый HTTP-эндпоинт, который может располагаться за любым балансировщиком нагрузки, платформой функций или edge-узлом. Преимущество очевидно — это масштабируемость; недостаток заключается в том, что состояние теперь живет в ограниченном окне токенов модели, а надежность зависит от клиента и базового уровня Pilot. По мере того как задачи ИИ-агентов будут растягиваться с секунд до часов, именно баланс между низкой стоимостью за запрос и давлением на бюджет токенов определит, станет ли безстейтовая модель долгосрочной победой.
