Model Context Protocol (MCP) в версии 2026-07-28 стал полностью протоколом без состояния после переработки его ядра, модели взаимодействия и связанных SDK. Cloudflare утверждает, что это изменение позволяет запускать MCP-серверы внутри обычного Worker без специальной инфраструктуры для сохранения сеансов протокола, снижая операционную сложность и затраты на дополнительные компоненты.
Новая спецификация была выпущена на прошлой неделе вместе с обновлёнными SDK для языков TypeScript, Python, Go и C#. По данным Cloudflare, серверы теперь могут принять запрос, выполнить инструмент, промпт или операцию с ресурсом, а затем вернуть результат без хранения сеанса протокола между запросами.
Отказ от обязательных сеансов
Предыдущие версии начинали работу с обмена сообщениями initialize и initialized для создания сеанса, которому могло присваиваться значение через заголовок Mcp-Session-Id. Каждый последующий запрос должен был получать доступ к состоянию, связанному с этим сеансом, что создавало проблемы для сред с автоматическим масштабированием, а также требовало от процессов развёртывания завершать активные сеансы или переносить их. Потеря активного экземпляра сервера могла привести к повторному подключению клиента или сбою сеанса.
Новая версия убирает обязательное рукопожатие, заголовок Mcp-Session-Id и сеансы из основного пути обработки запросов. Каждый запрос содержит версию протокола, идентификатор клиента и необходимые ему возможности. Вызов server/discover для проверки сервера перед выполнением другого запроса теперь является необязательным.
Это не означает, что приложениям с состоянием больше не нужна инфраструктура с состоянием: Cloudflare отмечает, что Durable Objects по-прежнему подходят, когда самому приложению требуется согласованное состояние. Однако MCP больше не требует Durable Objects для работы по протоколу, и серверы, которым нужна обработка, привязанная к запросу, могут масштабироваться на Workers.
Многошаговые взаимодействия вместо открытой потоковой передачи
Выпуск переработал механизм elicitation — сценарий, в котором серверу требуется дополнительная информация перед завершением запроса, например согласие на публикацию версии в рабочей среде или подтверждение выпуска возврата средств. Ранее инициируемые сервером запросы опирались на открытую потоковую передачу.
С помощью механизма Multi Round-Trip Requests сервер может вернуть результат с именем input_required, указывающий необходимые данные. Клиент собирает ответ и повторяет операцию с этими данными, при этом ни одна из сторон не хранит транспортный сеанс между двумя запросами. Cloudflare описывает это изменение как нарушающее совместимость с прежним подходом, но более простое с операционной точки зрения.
Сделать запросы MCP понятными для HTTP-инфраструктуры
Новая спецификация требует наличия заголовков Mcp-Method и Mcp-Name в запросах Streamable HTTP. Благодаря этому шлюз, ограничитель частоты запросов или межсетевой экран веб-приложений может определить, вызывает ли запрос инструмент или читает ресурс, без полного анализа содержимого JSON-RPC.
Спецификация также добавила подсказки ttlMs и cacheScope к результатам tools/list, prompts/list, resources/list и resources/read, а также детерминированный порядок индексов инструментов, что позволяет повторно использовать их и сохранять стабильность кэша промптов при повторном подключении.
Изменения в авторизации и жизненном цикле функций
Новая спецификация отдаёт предпочтение предварительно зарегистрированным клиентам, когда между клиентом и сервером уже существует связь, затем использует документы метаданных клиента CIMD для динамической регистрации, а Dynamic Client Registration, или DCR, становится запасным вариантом. Для новых приложений DCR объявлен устаревшим, а его удаление запланировано после лета 2027 года.
Спецификация также принимает механизм RFC 9207 для идентификации издателя и требует использовать базовый URL сервера в качестве ресурса согласно RFC 8707 в запросах авторизации и токенов. Cloudflare сообщает, что Workers OAuth Provider реализует эти требования для MCP-серверов на Workers.
Теперь спецификация имеет официальный жизненный цикл, который классифицирует функции как активные, устаревшие или удалённые. Устаревшая функция должна оставаться доступной не менее 12 месяцев до удаления. К функциям, объявленным устаревшими в этом выпуске, относятся Roots, Sampling, Logging, DCR и старый метод HTTP+SSE. MCP Apps и Enterprise-Managed Authorization стали расширениями, а Tasks были перенесены в структуру расширений, чтобы предоставить путь для длительных и надёжных операций.
Путь миграции и доступность
Интерфейс createMcpHandler выходит из экспериментального статуса и становится частью официального MCP TypeScript SDK, а Cloudflare продолжает предоставлять интерфейс, ориентированный на Workers, в составе Agents SDK. Компания также помогла перенести TypeScript SDK с Node.js на Web Standards для улучшения совместимости с Bun, Deno и Cloudflare Workers.
Клиенты могут выполнять миграцию, сохраняя совместимость с более ранними спецификациями. Конечная точка /mcp принимает новый протокол и запросы без состояния от клиентов Streamable HTTP, использующих версию 2025, что позволяет большинству клиентов повторно подключаться без изменений конфигурации. Серверы, зависящие от старых сеансов, запросов от сервера к клиенту или отдельных потоков, требуют более осторожного пути миграции, например запуска пути без состояния рядом со старым путём до исчерпания активных сеансов.
Cloudflare сообщает, что новая спецификация доступна клиентам и серверам на её платформе, а сервер MCP без состояния можно запустить на Worker и защитить с помощью Workers OAuth Provider. По данным компании, её сервис Code Mode MCP Server для Cloudflare API использовал этот подход и достиг тысяч запросов в секунду и миллиардов вызовов инструментов.