Перейти к содержанию
Новое AiManual теперь в MAX Подписаться
Публикация AiManual

MCP 2026-07-28: Как обновить AgentCore Gateway и перейти на stateless-архитектуру

Model Context Protocol 2026-07-28: stateless-запросы без сессий, governed extensions и OAuth 2.0. Пошаговая инструкция по UpdateGateway для Amazon Bedrock Agent

Коротко

Что будет в материале

  1. 01

    Что изменилось в MCP 2026-07-28: stateless, governed extensions и новая авторизация

  2. 02

    Практическое обновление AgentCore Gateway: вызов UpdateGateway и проверка совместимости

  3. 03

    Миграция на MCP 2026-07-28: чек-лист для разработчика

Что изменилось в MCP 2026-07-28: stateless, governed extensions и новая авторизация

Обновление Model Context Protocol от 28 июля 2026 года - крупнейшая ревизия протокола с момента его появления. Три изменения фундаментальны: отказ от сессий и рукопожатий в пользу stateless-запросов, введение governed extensions для контролируемого расширения функциональности и ужесточение авторизации через стандарты OAuth 2.0 и OpenID Connect. Все три решают одну задачу - сделать MCP пригодным для enterprise-инфраструктур, где десятки серверов за балансировщиком больше не должны синхронизировать состояние сессий.

Раньше каждый клиент устанавливал сессию, сервер хранил её идентификатор, а при масштабировании приходилось реплицировать состояние между узлами. Это создавало узкое место: падение одного сервера обрывало все сессии на нём. Новая версия протокола устраняет эту проблему архитектурно - каждый запрос самодостаточен и несёт всю необходимую информацию в заголовках. Серверу не нужно помнить, кто к нему обращался минуту назад.

Governed extensions заменяют стихийное расширение протокола, при котором разные реализации добавляли несовместимые методы. Теперь любое расширение проходит через спецификацию и получает уникальный идентификатор, что сохраняет совместимость между клиентами и серверами разных вендоров. Авторизация через OAuth 2.0 и OpenID Connect означает, что MCP-сервер можно интегрировать в корпоративные системы единого входа без самодельных токенов и костылей.

Для тех, кто работает с агентными CMS и конвейерами, это обновление критически важно: stateless-архитектура позволяет обрабатывать запросы агентов без привязки к конкретному серверу, что упрощает горизонтальное масштабирование.

Stateless-запросы: как заголовки Mcp-Protocol-Version, Mcp-Method и Mcp-Name упрощают маршрутизацию

Механизм версионности теперь работает на уровне каждого HTTP-запроса. Три заголовка несут всю информацию, которая раньше требовала разбора JSON-RPC тела:

  • Mcp-Protocol-Version - версия протокола, например 2026-07-28. Сервер читает этот заголовок до обработки тела и сразу определяет, по какой логике работать.
  • Mcp-Method - вызываемый метод: list_resources, read_resource, call_tool. Маршрутизатор может направить запрос в нужный обработчик без парсинга JSON.
  • Mcp-Name - идентификатор клиента или агента, например my-agent. Используется для трассировки и кеширования.

Пример stateless-запроса:

GET /mcp/resources HTTP/1.1
Host: gateway.agentcore.amazon.com
Mcp-Protocol-Version: 2026-07-28
Mcp-Method: list_resources
Mcp-Name: my-agent
Authorization: Bearer eyJhbGciOi...

Такой запрос не требует тела, сессионных cookie и предварительного рукопожатия. Балансировщик может отправить его на любой сервер кластера - состояние не хранится. Кеширующий прокси видит заголовок Mcp-Method: list_resources и понимает, что ответ можно закешировать на 30 секунд без риска отдать устаревшие данные. Системы трассировки получают Mcp-Name и связывают все запросы одного агента в единую цепочку.

Для сравнения: старая версия требовала сначала отправить JSON-RPC запрос на инициализацию, получить session ID, затем включать этот ID в каждый последующий вызов. Сервер парсил тело, извлекал ID, искал сессию в хранилище - и только потом выполнял метод. Новая схема сокращает задержку на 20-40 мс на каждом запросе только за счёт отказа от поиска сессии. При тысячах запросов в минуту это десятки секунд процессорного времени.

Governed extensions: контролируемое расширение протокола

До обновления любой разработчик мог добавить в MCP-сервер произвольный метод, и клиенты должны были либо игнорировать его, либо ломаться. На практике это привело к фрагментации: сервер А поддерживал метод search_documents, сервер Б - find_text, а клиент не знал, какой из них вызывать.

Governed extensions решают это через реестр расширений. Каждое расширение получает уникальный идентификатор в формате mcp-ext:vendor/name. Клиент при подключении запрашивает список поддерживаемых сервером расширений и активирует только те, которые понимает. Сервер, в свою очередь, объявляет расширения в ответе на list_extensions:

{
  "extensions": [
    {
      "id": "mcp-ext:anthropic/streaming",
      "version": "1.0.0",
      "required": false
    },
    {
      "id": "mcp-ext:bedrock/resource-cache",
      "version": "2.1.0",
      "required": true
    }
  ]
}

Если клиент не поддерживает обязательное расширение, соединение не устанавливается - и это явно указано в ответе с кодом ошибки -32020. Такой подход предотвращает скрытые несовместимости, которые в старой версии проявлялись только во время выполнения.

Практическое обновление AgentCore Gateway: вызов UpdateGateway и проверка совместимости

Amazon Bedrock AgentCore Gateway поддерживает новую версию протокола через API-вызов UpdateGateway. Это единственная операция, которая переключает шлюз на версию 2026-07-28. Никаких миграций данных или ручного изменения конфигурации серверов не требуется - шлюз сам начинает принимать запросы с новыми заголовками.

Вызов через AWS CLI выглядит так:

aws bedrock-agent update-gateway \
  --gateway-identifier abc123 \
  --protocol-version "2026-07-28" \
  --region us-east-1

После выполнения шлюз продолжает принимать запросы старой версии параллельно с новой - это упрощает постепенную миграцию клиентов. Старые клиенты без заголовка Mcp-Protocol-Version обслуживаются по предыдущей версии протокола, новые - по 2026-07-28. Период сосуществования версий составляет 90 дней с момента обновления, после чего поддержка старой версии прекращается.

Перед вызовом UpdateGateway необходимо провести три проверки. Первая: совместимость SDK. Версии клиентских библиотек, выпущенные до июля 2026 года, не поддерживают stateless-режим и заголовки. Обновите SDK до актуальной версии - для Python это pip install mcp-client>=2.0.0, для TypeScript - npm install @modelcontextprotocol/sdk@^2.0.0. Вторая проверка: аудит кодовой базы на предмет использования удалённых функций. Третья: тестирование в staging-среде с новыми заголовками.

Если вы используете MCP-серверы на Go, обратите внимание на опыт создания stateless-серверов для Windsurf - там разбираются архитектурные решения, которые хорошо ложатся на новую модель без сессий.

Удаленные функции: logging/setLevel, Roots, Sampling

Три функции удалены из спецификации полностью. Их вызов в новой версии протокола приведёт к ошибке -32022 (method not found).

logging/setLevel - управление уровнем логирования на стороне сервера. Удалена, потому что в stateless-архитектуре сервер не хранит состояние клиента и не может помнить выбранный уровень. Альтернатива: уровень логирования задаётся через заголовок Mcp-Log-Level в каждом запросе или через конфигурацию шлюза. Для AgentCore Gateway используйте параметр --logging-level при вызове UpdateGateway.

Roots - указание корневых директорий для файлового доступа. Удалена в пользу явного указания путей в каждом вызове read_resource. Старый подход создавал неявное состояние, противоречащее stateless-модели. Если ваш агент использовал Roots для ограничения доступа к файловой системе, перенесите эту логику в параметры каждого запроса.

Sampling - управление частотой логирования и трассировки. Заменена заголовком Mcp-Sample-Rate со значением от 0.0 до 1.0. Сервер больше не хранит настройки сэмплирования между запросами - каждый запрос декларирует нужную частоту самостоятельно.

Для поиска использования этих функций в коде выполните grep по репозиторию: grep -r "setLevel\|logging/\|roots\|sampling" --include="*.py" --include="*.ts" --include="*.go". Найденные вызовы замените на соответствующие заголовки или параметры запросов.

Обработка новых HTTP-кодов ошибок: 404, 400 с кодами -32022, -32020, -32021

Новая версия протокола вводит три специфичных кода ошибок в теле ответа при HTTP 400, а также меняет семантику 404.

404 Not Found - теперь возвращается не только для ненайденных URL, но и для запросов к ресурсам, которые не существуют в данной версии протокола. Если клиент запрашивает list_resources с Mcp-Protocol-Version: 2026-07-28, а сервер не нашёл ни одного ресурса, ответ будет 200 с пустым списком, а не 404. Код 404 означает именно отсутствие эндпоинта или ресурса, а не пустой результат.

400 Bad Request с кодом -32022 - метод не найден. Возникает при вызове удалённых функций (logging/setLevel, Roots, Sampling) или опечатках в названии метода. Тело ответа:

{
  "jsonrpc": "2.0",
  "error": {
    "code": -32022,
    "message": "Method not found: logging/setLevel"
  }
}

400 Bad Request с кодом -32020 - несовместимость расширений. Клиент не поддерживает обязательное расширение сервера. Тело ответа содержит список требуемых расширений, которые клиент должен реализовать для подключения.

400 Bad Request с кодом -32021 - невалидный запрос. Возникает при отсутствии обязательных заголовков, неверном формате Mcp-Protocol-Version или нарушении схемы JSON-RPC. Это самая частая ошибка при миграции - клиенты забывают добавить заголовки и получают 400 вместо осмысленного ответа.

Рекомендация по мониторингу: настройте алерты на рост доли ответов с кодами -32020 и -32021 относительно общего числа запросов. Всплеск -32020 после обновления означает, что часть клиентов не поддерживает обязательные расширения. Всплеск -32021 указывает на ошибки в обновлённом SDK или ручную сборку запросов без заголовков.

Миграция на MCP 2026-07-28: чек-лист для разработчика

Шесть шагов, которые нужно выполнить до и после вызова UpdateGateway. Пропуск любого из них приведёт к ошибкам в production.

  1. Проверить версию SDK и обновить при необходимости. Минимальные версии: Python mcp-client>=2.0.0, TypeScript @modelcontextprotocol/sdk@^2.0.0, Go github.com/modelcontextprotocol/sdk/v2. Старые версии не формируют заголовки и будут получать ошибки после отключения обратной совместимости через 90 дней.
  2. Найти и заменить вызовы logging/setLevel, Roots, Sampling. Используйте grep, как показано выше. Для каждого найденного вызова определите, переносится ли логика в заголовки (Mcp-Log-Level, Mcp-Sample-Rate) или в параметры запроса (пути в read_resource).
  3. Обновить обработку ошибок. Добавьте в код проверку JSON-RPC кодов -32022, -32020, -32021 и соответствующие сообщения для пользователя или логи. Не обрабатывайте их как общий 400 Bad Request - это скроет причину проблемы при отладке.
  4. Протестировать с заголовками Mcp-Protocol-Version. Отправьте несколько запросов к staging-шлюзу с новыми заголовками. Убедитесь, что ответы приходят без ошибок, а методы, которые вы используете, поддерживаются в версии 2026-07-28.
  5. Выполнить UpdateGateway в staging. После успешного тестирования с заголовками вызовите update-gateway --protocol-version "2026-07-28" для staging-шлюза. Проверьте, что старые клиенты продолжают работать, а новые получают ответы по новой версии протокола.
  6. Мониторить логи после деплоя. В первую неделю после обновления отслеживайте долю ошибок -32020 и -32021. Рост выше 5% от общего числа запросов требует отката или срочного обновления клиентов.

Для команд, которые строят сложные агентные системы с множеством MCP-серверов, полезен опыт автоматизации тестирования MCP-связок - там разбирается, как проверять совместимость серверов после обновлений протокола в CI/CD пайплайне.

Stateless-архитектура снимает ограничения, которые раньше делали MCP непригодным для высоконагруженных систем. Отказ от сессий означает, что любой запрос можно обработать на любом сервере кластера. Заголовки Mcp-Protocol-Version, Mcp-Method и Mcp-Name дают балансировщику, кешу и системе трассировки всю информацию до чтения тела. Governed extensions предотвращают фрагментацию протокола. OAuth 2.0 и OpenID Connect встраивают MCP в корпоративные системы авторизации без велосипедов. Вызов UpdateGateway включает всё это одним API-запросом - но только после проверки SDK, удалённых функций и новых кодов ошибок.

Подписаться на канал