Руководство по выживанию при переходе на MCP Release Candidate
MCP Release Candidate — это крупнейшее обновление с момента запуска протокола. Это испытание для всех, кто разрабатывает клиенты, серверы и инструменты. Финальная версия выйдет 28 июля 2026 года. Используйте это время, чтобы выявить проблемы при миграции.
Самое важное изменение заключается в том, что MCP теперь является stateless.
Если ваша реализация использует session ID или этапы инициализации, вам придется изменить код. Теперь каждый запрос содержит данные о версии и возможностях (capabilities) в метаданных.
Это изменение помогает инфраструктуре. Балансировщики нагрузки теперь могут отправлять запросы на любой экземпляр сервера. Им больше не нужно поддерживать открытым соединение с одним конкретным сервером.
Как работать с состоянием:
- Не скрывайте состояние внутри соединения.
- Перенесите состояние в обработчик приложения (application handle).
- Пусть инструмент возвращает ID, например
basket_id. - Модель может передать этот ID обратно при следующем вызове.
Запросы, инициируемые сервером, также меняются. Сервер может начать запрос только в процессе обработки вызова клиента. Если серверу требуется дополнительная информация, он возвращает InputRequiredResult. После этого клиент повторяет вызов, передавая новые данные.
Появились MCP Apps. Теперь серверы могут предоставлять HTML-интерфейсы. Хосты отрисовывают их в изолированных (sandboxed) iframes. Это улучшает пользовательский опыт, но требует строгого соблюдения правил безопасности.
Авторизация стала более строгой.
- Используйте OAuth 2.0 и OpenID Connect.
- Клиенты должны проверять параметр
issuer. - Серверы авторизации теперь обязаны отправлять параметр
issuer.
Устаревающие функции (Deprecations), за которыми нужно следить:
- Roots, Sampling и Logging признаны устаревшими.
- Пока они продолжают работать, но не используйте их в новых проектах.
- Перенесите roots в параметры инструментов.
- Перенесите sampling в прямые API провайдеров моделей.
- Перенесите logging в OpenTelemetry или
stderr.
Обновления схем:
- Схемы инструментов теперь используют полную спецификацию JSON Schema 2020-12.
- Вы можете использовать сложную логику, такую как
oneOfилиanyOf. - Серверы должны ограничивать глубину схемы во избежание ошибок.
- Обновите обработку ошибок. Ошибка отсутствующего ресурса теперь использует стандартный код JSON-RPC
-32602.
Если вы обнаружите проблемы, создайте issue в репозитории спецификации или задайте вопрос в Discord-канале для контрибьюторов.
Дополнительное обучающее сообщество: https://t.me/GyaanSetuAi
