Стоило мне в прошлом посте написать, что интерес к MCP-инструментам постепенно снижается, а к агентным навыкам — растет, как разработчики MCP анонсировали крупнейшее обновление протокола с момента его релиза.
Ключевым изменением стал уход от хранения сессий на уровне протокола в сторону stateless-архитектуры. Вместе с этим исчезают отдельный запрос
initialize и заголовок Mcp-Session-Id, который раньше использовался для привязки последующих запросов к конкретной сессии.Теперь каждый запрос содержит поле
_meta с информацией о клиенте и версии протокола. Подробный разбор принципов работы текущей версии MCP можно посмотреть в одном из моих первых постов.При этом MCP позволяет работать со stateful-приложениями, но состояние теперь должно передаваться явно. В примере из блога показан процесс создания и использования корзины, где в запросах используются идентификаторы
basket_id.Первая мысль при прочтении: появляется новая поверхность, где разработчик может оставить очередной IDOR. С точки зрения безопасности теперь нужно добавлять дополнительные меры управления доступом непосредственно в бизнес-логику приложения: проверять владельца объекта и корректность использования идентификаторов.
Изменения также частично касаются авторизации. Теперь спецификация ближе к классическому OIDC-процессу:
▸ Клиенты должны валидировать параметр
iss в authorization response. В будущем ответы без iss планируется отклонять, поэтому инфраструктуру стоит готовить уже сейчас.▸ Учетные данные клиента теперь должны быть привязаны к конкретному
issuer, чтобы снизить риск путаницы между разными MCP-серверами, когда токен отправляется не на тот сервер.Но это все еще не полноценная модель разграничения доступа в MCP: проверка того, какой пользователь может вызвать конкретный инструмент и с какими параметрами, остается задачей MCP-сервера или отдельного policy engine.
Из других изменений: обязательные заголовки
Mcp-Method и Mcp-Name для более удобной балансировки трафика и кэширования, например запросов tools/list, а также новый механизм Extensions. С его помощью новые возможности MCP можно добавлять как отдельные расширения, не меняя базовую часть протокола.Это лишь предложения по изменениям, и к релизу ситуация может измениться. Может, рано я все-таки списал их со счетов?..
