Руководство по выживанию при переходе на 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://dev.to/bengreenberg/the-mcp-release-candidate-survival-guide-apps-auth-deprecations-and-tool-schemas-5da2

Дополнительное обучающее сообщество: https://t.me/GyaanSetuAi