🗓️
Актуальность. Проверено 8 сентября 2026 года. Последняя опубликованная версия спецификации — 2026-07-28. Она перевела ядро MCP на stateless-модель, где транспорт не требует обязательной протокольной сессии: обмен initialize/initialized и механизм заголовка Mcp-Session-Id удалены. Клиентам и серверам, рассчитанным на версию 2025-11-25, может потребоваться миграция.

MCP (Model Context Protocol) — открытый стандарт подключения ИИ-приложений к внешним системам: базам данных, файлам, API, инструментам и рабочим процессам.

💡
Аналогия. MCP можно представить как USB-C для ИИ: клиент и источник данных договариваются через единый протокол вместо отдельной интеграции для каждой пары продуктов.

Материал рассчитан на разработчиков и технических специалистов, которым нужно выбрать транспорт, понять модель безопасности или подключить готовый MCP-сервер.

Какую задачу решает MCP

Без общего протокола каждое ИИ-приложение требует собственного коннектора к каждому сервису. При N приложениях и M системах потенциально возникает N×M интеграций со своими форматами запросов, авторизацией и обработкой ошибок.

MCP стандартизирует взаимодействие клиента и сервера. Совместимость всё равно зависит от поддерживаемой версии спецификации, набора возможностей и реализации безопасности.

Участники MCP

УчастникРольПример
MCP HostИИ-приложение, которое управляет подключениямиРедактор кода или настольный ИИ-клиент
MCP ClientКомпонент хоста, который обращается к конкретному серверуВстроенный MCP-клиент приложения
MCP ServerПрограмма, предоставляющая инструменты и контекстСервер файловой системы, GitHub или базы данных

Один хост может обращаться к нескольким серверам. Изоляция подключений, полномочий и состояния определяется реализацией хоста и серверов.

Уровень данных и транспорт

MCP кодирует сообщения с помощью JSON-RPC 2.0. Методы протокола описывают вызовы инструментов, чтение ресурсов, получение промптов и служебное взаимодействие.

ТранспортКак работаетКогда подходит
STDIOКлиент запускает локальный сервер как подпроцесс и обменивается JSON-RPC-сообщениями через stdin и stdoutЛокальные инструменты и доступ к данным на той же машине
Streamable HTTPКлиент отправляет запросы по HTTP; сервер может вернуть JSON или поток событийУдалённые серверы, облачные сервисы и подключения с авторизацией

В версии 2026-07-28 запросы через Streamable HTTP должны включать заголовки Mcp-Method и Mcp-Name. В них передаются название метода и имя инструмента, когда запрос обращается к инструменту. Это позволяет шлюзам, ограничителям запросов и WAF маршрутизировать и учитывать запросы без разбора JSON-тела.

Устаревший транспорт HTTP+SSE официально депрекейтнут. Для него предусмотрен переходный период не менее 12 месяцев после релиза 2026-07-28.

Примитивы сервера

Сервер предоставляет три основных типа объектов.

ПримитивКто управляетЧто делаетПример
ToolsМодель через клиентВыполняют действие или получают данныеquery_database, создание задачи, запрос к API
ResourcesПриложениеПередают структурированный контекстСодержимое файла, схема БД, история Git
PromptsПользовательПредоставляют готовые шаблоны взаимодействияКоманда меню или шаблон анализа
⚠️
Безопасность. Инструмент может читать конфиденциальные данные или выполнять необратимые операции. Проверяйте издателя сервера, список доступных действий и запрашиваемые права. Для записи и удаления полезно требовать отдельное подтверждение пользователя.

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

Вместо рукопожатия — самодостаточные запросы

В предыдущей версии соединение начиналось с initialize и initialized, а HTTP-сервер мог выдать Mcp-Session-Id. В версии 2026-07-28 этот обмен и механизм протокольного идентификатора сессии удалены.

Каждый запрос самодостаточен: версия протокола указывается отдельно, а в _meta передаются сведения о клиенте и его возможностях. Необязательный вызов server/discover позволяет заранее узнать возможности сервера. Прикладное состояние при необходимости хранится отдельно, например в виде явного идентификатора, который возвращает инструмент.

Несколько раундов без постоянного соединения

Механизм Multi Round-Trip Requests (MRTR), то есть несколько раундов обмена, позволяет инструменту запросить недостающие данные или подтверждение пользователя. Сервер отвечает с resultType: "input_required", а клиент повторяет исходный вызов с ответами в inputResponses.

MRTR заменяет прежние инициированные сервером вызовы elicitation/create, sampling/createMessage и roots/list, для которых требовался открытый двунаправленный поток.

Кеширование списков

Ответы tools/list, prompts/list, resources/list и resources/read содержат ttlMs и cacheScope. Клиент получает явные правила кеширования каталогов и ресурсов.

Расширения и депрекации

Tasks перенесены из экспериментального ядра в расширение io.modelcontextprotocol/tasks. Для долгих операций предусмотрены tasks/get и tasks/update. Уведомления об изменениях переходят на поток subscriptions/listen, на который клиент подписывается по типам событий.

Roots, Sampling и Logging депрекейтнуты. Они сохраняют совместимость как минимум в течение двенадцати месяцев после релиза, но новым реализациям не следует строить на них архитектуру.

Авторизация и границы доверия

Авторизация в MCP остаётся необязательной. Спецификация авторизации применяется к HTTP-транспортам и основана на OAuth 2.1. Для STDIO реализациям не следует применять эту спецификацию: учётные данные получают из окружения.

Версия 2026-07-28 усилила защиту OAuth:

  • клиент должен проверять параметр издателя (iss) в ответе авторизационного сервера до обмена кода;
  • учётные данные клиента привязываются к выдавшему их авторизационному серверу;
  • Dynamic Client Registration (DCR) формально депрекейтнут в пользу Client ID Metadata Documents (CIMD), но пока сохраняется для обратной совместимости;
  • сервер обязан принимать только токены, предназначенные именно для него, и не должен передавать входящий токен стороннему API.
🔴
MCP сам по себе не создаёт песочницу. Изоляцию процессов, хранение токенов, подтверждение опасных действий, журналирование и ограничение сетевого доступа реализуют хост и сервер.

Для Streamable HTTP сервер обязан проверять заголовок Origin; документация рекомендует корректную аутентификацию и при локальном запуске привязку к 127.0.0.1, а не ко всем интерфейсам.

Полезные сценарии

ЗадачаПодключениеНаблюдаемый результатОграничение
Дать ассистенту контекст из задач и документовИИ-хост и серверы рабочих системКлиент обнаруживает ресурсы и инструменты, затем использует их в ответеДоступ ограничивается правами подключённых учётных записей
Помочь агенту работать с кодом и ошибкамиРедактор с серверами репозитория, мониторинга и БДАгент получает структуру проекта и может вызвать разрешённые инструментыОперации записи требуют особенно узких полномочий
Запускать автоматизации из диалогаИИ-агент и MCP-сервер системы автоматизацииГотовый процесс запускается через вызов инструментаНужно отдельно контролировать побочные эффекты и повторные вызовы

Быстрый старт с локальным сервером

Ниже приведён условный пример конфигурации для клиента, который поддерживает формат mcpServers. Название пакета, способ запуска и совместимость с версией протокола нужно сверить с документацией выбранного клиента перед запуском. В рамках этой проверки пример не запускался.

1. Выберите отдельную тестовую папку

Не открывайте серверу весь домашний каталог. Начните с папки без секретов и рабочих данных.

2. Добавьте сервер в конфигурацию клиента

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/Users/your-name/Documents/mcp-test"
      ]
    }
  }
}

3. Перезапустите клиент и проверьте результат

Откройте список MCP-серверов. Сервер должен отображаться как подключённый, а клиент — показывать предоставленные им инструменты или ресурсы. Затем попросите прочитать заранее созданный тестовый файл. Если клиент не видит сервер, проверьте путь, наличие Node.js, журнал запуска и совместимость версий.

Что делать, если подключение не работает

  • Сервер не запускается: выполните команду запуска отдельно и проверьте stderr, версию среды выполнения и имя пакета.
  • Нет инструментов или ресурсов: проверьте возможности сервера через доступный клиенту механизм обнаружения и убедитесь, что версии протокола совместимы.
  • HTTP-запрос отклонён: проверьте MCP-Protocol-Version, Mcp-Method, Mcp-Name, Origin и заголовок авторизации.
  • OAuth возвращает ошибку: проверьте metadata авторизационного сервера, redirect URI, PKCE, запрошенные scopes и привязку токена к MCP-серверу.
  • Повторный запрос теряет контекст: не рассчитывайте на Mcp-Session-Id в версии 2026-07-28; передавайте прикладной идентификатор состояния явно.
  • Старый клиент перестал подключаться: уточните, какую версию спецификации поддерживают обе стороны, и используйте руководство по миграции соответствующего SDK.

SDK

В официальном релизе 2026-07-28 указано, что новую версию поддерживают четыре SDK первого уровня (Tier 1): TypeScript, Python, Go и C#. Rust SDK поддерживает новую версию в статусе beta.

При обновлении проверьте миграционные заметки выбранного SDK. Основные несовместимые изменения связаны с удалением initialize, протокольных сессий и прежней модели инициированных сервером запросов.

Официальные источники

Следующий шаг

Notion MCP — официальный сервер Notion для подключения ИИ-агентов

Если вы выбираете MCP для рабочего контура, полезно заранее определить допустимые данные, операции записи и точки подтверждения пользователя.

Если захотите обсудить, как это применить у себя или в команде — пишите в Telegram @pimenov