> · · 7 мин

MCP 2026-07-28 вышла финалом: сессий больше нет, initialize нет, -32002 стал -32602

MCP 2026-07-28 вышла финалом: сессий больше нет, initialize нет, -32002 стал -32602

В мае мы писали про release candidate и обещали вернуться, когда спека выйдет финалом. Она вышла 28 июля. Сессий больше нет, рукопожатия initialize нет, код ошибки поменялся, а три фичи уехали в депрекейт с часами обратного отсчёта на год.

TL;DR: Спецификация MCP 2026-07-28 опубликована финалом 28 июля и заменила 2025-11-25. Ломающих изменений два: пропали протокольные сессии с заголовком Mcp-Session-Id и пропал handshake initialize. Roots, Sampling и Logging депрекейтнуты с минимальным окном в 12 месяцев, -32002 заменился на стандартный -32602. Между RC и финалом добавилось обязательное поле resultType в каждом результате. Все четыре Tier 1 SDK заговорили на новой версии в день публикации, старые серверы продолжают работать.

Что изменилось в MCP 2026-07-28

Главное изменение — протокол стал stateless на уровне спецификации. Раньше клиент открывал соединение рукопожатием initialize, получал Mcp-Session-Id и таскал его в каждом следующем запросе. Это заставляло делать sticky routing: запросы обязаны были попадать на тот же инстанс, за которым стояло общее хранилище сессий, а на гейтвее приходилось разбирать пакеты, чтобы понять, куда роутить.

Теперь ничего этого нет. Удалённый MCP-сервер живёт за обычным round-robin балансировщиком, трафик маршрутизируется по заголовку Mcp-Method, а клиент кеширует ответы tools/list ровно столько, сколько разрешает ttlMs сервера. Официальный анонс вышел вместе с SDK, так что писать клиенты и серверы под новую версию можно с первого дня.

Release candidate зафиксировали 21 мая, дальше было десять недель валидации силами мейнтейнеров SDK и авторов клиентов. Версии MCP датируются днём, когда в них последний раз вносили обратно несовместимые изменения, поэтому 2026-07-28 — это номер версии, а не «дата, с которой всё сломается».

Что именно ломается

Ломающих изменений ровно два, и оба про состояние.

Сессии и Mcp-Session-Id (SEP-2567). Выкидывайте общие session store. Если серверу нужно состояние между вызовами, он теперь выпускает явный handle и передаёт его как обычный аргумент инструмента. Это чуть многословнее в схеме и заметно проще в эксплуатации: состояние стало данными, а не свойством транспорта.

Рукопожатие initialize (SEP-2575). Версия протокола и capabilities теперь читаются из _meta в каждом запросе. Дополнительно появился RPC server/discover, которым клиент заранее узнаёт, какие версии и возможности сервер поддерживает. Новые клиенты, встретив сервер на старой версии, откатываются на прежний handshake — так что рвётся не всё сразу.

Ещё одна мелочь, на которой споткнутся те, кто хардкодил коды: ошибка «resource not found» переехала с кастомного -32002 на стандартный JSON-RPC -32602 (Invalid Params). Если у вас в клиенте if (code === -32002), это надо править руками, потому что молча оно просто перестанет ловиться.

Плюс полностью поддержана JSON Schema 2020-12.

Что добавилось между RC и финалом

Одно изменение, о котором не знали те, кто мигрировал по майскому RC: каждый результат теперь обязан нести поле resultType. Значения — "complete" для обычного результата и "input_required" для промежуточных результатов Multi Round-Trip. Результаты от серверов на более ранних версиях протокола считаются complete по умолчанию (SEP-2322).

Если вы писали клиент по release candidate и не следили за изменениями последних недель, это первое место, куда стоит посмотреть.

Что депрекейтнуто и сколько у вас времени

Roots, Sampling и Logging помечены как deprecated. Появилась формальная Feature Lifecycle Policy: Active → Deprecated → Removed, минимум по 12 месяцев на каждой стадии. То есть самая ранняя дата, когда что-то из депрекейтнутого может физически исчезнуть, — 28 июля 2027 года.

Экспериментальный Tasks переехал в extension и поменял модель работы: вместо блокирующего tasks/result теперь polling. Если вы им пользовались, менять придётся не вызов, а логику ожидания.

Появился Extensions Framework: новые возможности сначала выходят опциональными расширениями и только потом (если вообще) вкладываются в ядро. MCP Apps, которые с января жили как первое официальное расширение, теперь формально описаны этой рамкой. И третье: Standards Track SEP не может дойти до статуса Final, пока в conformance suite не появится соответствующий сценарий.

Стоит ли мигрировать прямо сейчас

Публикация 28 июля ничего не выключила. Серверы и клиенты на 2025-11-25 работают, депрекейтнутое живёт минимум год, никакого рубильника нет. Но новые клиенты и реестры с этого момента сверяются с новой версией, так что откладывать на год тоже плохая идея.

Все четыре Tier 1 SDK — TypeScript, Python, Go и C# — говорят на 2026-07-28 в день публикации, с заметками по миграции для ломающих частей. Anthropic в тот же день объявила, что поддержка раскатывается по продуктам Claude: MCP Apps и Tasks приезжают как versioned extensions, авторизация выравнивается под корпоративные системы идентификации вроде Entra и Okta. В каталоге коннекторов Anthropic сейчас больше 950 записей, так что путь обновления для авторов серверов вполне конкретный, а не теоретический.

Подводные камни

Локальные stdio-серверы это почти не трогает, а вот удалённые трогает сильно. Если у вас MCP-сервер как локальный подпроцесс, вы, скорее всего, заметите только смену кода ошибки. Вся боль stateless-перехода достаётся тем, кто держит remote-сервер с состоянием.

«Состояние в аргументах» — новый способ выстрелить себе в ногу. Раньше session id жил в заголовке и в логи транспорта попадал предсказуемо. Теперь handle — обычный аргумент инструмента, и он поедет в трейсы, в логи модели и в историю диалога. Если handle несёт что-то чувствительное, это надо явно продумать.

Кеширование tools/list меняет поведение при деплое. Клиент имеет право держать список инструментов до истечения ttlMs. Выкатили новый инструмент — часть клиентов его не увидит, пока кеш не протухнет. Ставьте ttlMs осознанно, а не «побольше, чтоб быстрее».

Хардкод -32002 не даст ошибки компиляции. Он просто перестанет срабатывать, и обработка «ресурс не найден» тихо провалится в общую ветку. Это худший тип ломающего изменения: не падает, а меняет поведение.

Depreciation-окно в 12 месяцев — это минимум, а не обещание. Roots, Sampling и Logging останутся в спеке минимум до июля 2027, но новые фичи в них уже не поедут. Строить новое поверх депрекейтнутого — гарантированная миграция через год.

Альтернативы

Остаться на 2025-11-25 — работает, ничего не выключено, но новые клиенты и реестры сверяются с новой версией, и любая фича из extensions framework вам недоступна.

A2A от Google — протокол для общения агентов между собой, а не агента с инструментами. Решает соседнюю задачу и с MCP не конкурирует, скорее дополняет.

Собственный HTTP API с function calling — меньше абстракций и полный контроль, но вы теряете каталоги коннекторов, готовые SDK и совместимость с чужими клиентами. При двух-трёх инструментах это разумно, при двадцати — нет.

Вердикт

Открывайте ветку и обновляйте SDK на этой неделе, даже если катить не собираетесь: миграция в основном механическая, а найти свои хардкоды -32002 и Mcp-Session-Id лучше в спокойном режиме, чем когда клиент обновится сам. Если у вас удалённый сервер со сложным состоянием, закладывайте на переделку больше времени, чем кажется: убрать session store — это не правка конфига, а пересмотр того, где вообще у вас живёт состояние. А вот новые фичи поверх Roots, Sampling и Logging начинать не надо: год кажется большим сроком ровно до того момента, когда он кончается.

Как мигрировать

  1. Обновите SDK до версии, которая объявляет 2026-07-28, в отдельной ветке. Пакеты для TypeScript, Python, Go и C# лежат в организации modelcontextprotocol.
  2. Прогрепайте код на Mcp-Session-Id, initialize, -32002, roots/, sampling/ и logging/. Это ваш полный список работ.
  3. Уберите session store: каждое состояние, которое жило в сессии, превратите в явный handle и добавьте его в схему соответствующего инструмента.
  4. Замените чтение версии протокола на разбор _meta в каждом запросе и реализуйте server/discover.
  5. Добавьте resultType во все результаты и прогоните сервер против conformance suite — она же используется для оценки официальных SDK по новой системе тиров.
$ ls ./related/

Похожие статьи

codex-cli-147-skills-import.md
Codex CLI 0.147 забирает скиллы прямо из Cursor и умеет сам себе одобрять команды. В том же релизе ужесточают песочницу
> · 7 мин

Codex CLI 0.147 забирает скиллы прямо из Cursor и умеет сам себе одобрять команды. В том же релизе ужесточают песочницу

Codex CLI 0.147.0 импортирует скиллы, которыми управляет Cursor, синхронизирует диалоги Claude и Cursor без дублей и добавляет флаг --approve-for-me с автоматически проверяемыми одобрениями. Плюс поддержка финальной спеки MCP 2026-07-28 и десяток правок песочницы. Команды export наружу по-прежнему нет.

ai cursor agents codex
openai-astra-critical-cyber.md
OpenAI не может исключить, что её будущая модель находит 0-day сама. Часть работ по Astra остановлена
> · 7 мин

OpenAI не может исключить, что её будущая модель находит 0-day сама. Часть работ по Astra остановлена

OpenAI объявила, что предварительные замеры Astra не позволяют исключить уровень Critical по кибербезопасности в её собственном Preparedness Framework. Это первый такой случай: все прежние модели, включая GPT-5.6 Sol, проходили уровнем ниже. Активности, не дотягивающие до усиленных требований, приостановлены, а мониторы теперь читают цепочку размышлений.

ai llm openai security
databricks-ai-coding-costs.md
Databricks выложила свою математику расходов на кодинг-агентов: минус 50% токенов от тюнинга харнесса, а Opus 5 вышел дороже Opus 4.8
> · 8 мин

Databricks выложила свою математику расходов на кодинг-агентов: минус 50% токенов от тюнинга харнесса, а Opus 5 вышел дороже Opus 4.8

Соучредитель Databricks с коллегами описал четыре рычага снижения расходов на агентный кодинг: тюнинг харнесса и кеша дал почти минус 50% токенов, роутер между моделями минус 30% средней цены задачи. Самое неприятное в статье: Stripe отказалась выдавать разработчикам Opus 4.7, а Databricks увидела рост стоимости при переходе с Opus 4.8 на Opus 5.

ai agents llm developer-tools
subscribe.sh

$ cat /dev/blog/updates

> Свежие заметки о программировании,

> DevOps и AI — прямо в мессенджер

./subscribe