Короче, два дня назад вышла новая версия спеки MCP. Это самый жирный апдейт с момента запуска.
Главное: протокол стал stateless
Хендшейк
initialize`/`initialized выпилили, хедер Mcp-Session-Id тоже. Теперь каждый запрос самодостаточный - версия протокола, инфа о клиенте и возможности летят в _meta вместе с самим запросом. Если клиенту всё-таки надо узнать, что сервер умеет, есть новый RPC server/discover, но он опциональный.Что это значит на практике
Твой MCP-сервер теперь можно поставить за обычный round-robin балансер. Без sticky-сессий, без общего стора для состояния. Раньше клиент был прибит гвоздями к тому инстансу, который обработал хендшейк - и весь деплой строился вокруг этого костыля. А сейчас можем масштабироваться! И это заибись!
Остальное по мелочи
-
Mcp-Method и Mcp-Name теперь обязательные HTTP-хедеры. - MRTR (Multi Round-Trip Requests) вместо серверных запросов через держащийся стрим. Сервер отвечает
resultType: "input_required" со списком того, что ему нужно, а клиент повторяет вызов с ответами в inputResponses. Это то, из-за чего наконец-то поедут элиситейшны на remote-серверах — Supabase, например, прямо пишет, что раньше не могли их сделать из-за stateless-архитектуры, а теперь тулза может спросить «точно удаляем данные?» перед действием.- Списки (`tools/list`,
prompts/list, resources/list, resources/read`) теперь отдают `ttlMs и cacheScope - каталог тулов кешируется, и апстримные промпт-кеши не рассыпаются при реконнекте.- Расширения официально узаконили. Tasks уехали из экспериментального ядра в отдельный экстеншн, рядом с MCP Apps и Enterprise Managed Authorization.
Минусы
• Ломающие изменения. Roots, Sampling и Logging задепрекейчены, старый HTTP+SSE транспорт — тоже. Работать будут ещё минимум год, но новое на них писать не надо.
• Миграция стоит времени, особенно если ты завязывался на session ID. Причём стейт из транспорта никуда не делся как задача — теперь его предлагают делать явно: тулза выдаёт хендл, модель таскает его между вызовами как аргумент. Логичнее, но переписывать надо руками.
Что мне делать?
Скорее всего - ничего. Все четыре Tier 1 SDK (TS, Python, Go, C#) уже говорят на новой спеке, Rust - в бете. GitHub MCP Server, например, уже поддерживает, и они пишут, что Tier 1 SDK сохранили обратную совместимость, так что специально ничего делать не нужно. Просто когда будешь поднимать новый сервер - поднимай сразу на stateless-ядре, потому что весь смысл именно в нём.
AI Для Задротов. Подписаться
