Архитектура MCP

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

Участники

  • Host — AI-приложение: IDE, desktop-клиент, агентная платформа или собственный сервис.
  • Client — протокольный компонент host, который общается с конкретным сервером.
  • Server — локальный процесс или удалённый сервис, объявляющий доступные capabilities.
  • Authorization server — выдаёт токены для защищённого remote server; может быть отдельным от него.

MCP server не является самой моделью и не обязан быть агентом. Он предоставляет стандартизированный интерфейс к возможностям.

Основные примитивы

ПримитивКто предоставляетНазначение
Toolsserverдействия и вычисления, которые модель может запросить
Resourcesserverадресуемые данные, доступные для чтения и подписки
Promptsserverпереиспользуемые шаблоны взаимодействия
Rootsclientдопустимые корневые URI, например рабочие папки
Samplingclientзапрос server к host на генерацию моделью
Elicitationclientзапрос дополнительного ввода или действия пользователя

Конкретная реализация поддерживает только объявленный набор. Наличие MCP само по себе не означает поддержку всех примитивов.

Обмен сообщениями

MCP использует JSON-RPC-подобные запросы, ответы и уведомления. Схемы определяют форму данных, а версия протокола — доступную семантику. Tool result остаётся недоверенным содержимым и должен проверяться приложением.

Transports

STDIO

Host запускает локальный server как дочерний процесс и общается через standard input/output. Секреты обычно передаются окружением процесса. Важно контролировать пакет, команду запуска, рабочую директорию и права ОС.

HTTP

Remote server работает как сетевой сервис. Нужны TLS, корректная авторизация, проверка origin и защита от DNS rebinding для локальных endpoint. Способ конфигурации зависит от host и поддерживаемой версии протокола.

Версии

Версия MCP обозначается датой. Спецификация 2026-07-28 перевела core на stateless request/response модель и убрала обязательный initialization handshake из нового ядра. Старые SDK и servers могут продолжать использовать модель 2025-11-25, поэтому совместимость нужно проверять, а не предполагать.

Extensions

Расширения развиваются отдельно от core. Среди актуальных направлений:

  • Tasks — долгие операции с получением статуса, результата и отменой;
  • MCP Apps — интерактивные UI-компоненты;
  • authorization extensions — дополнительные корпоративные сценарии доступа.

Экспериментальное или поддерживаемое одним host расширение нельзя считать универсальной частью MCP.

Граница ответственности

flowchart LR
    U[Пользователь] --> H[Host: политика и согласие]
    H --> C1[MCP client]
    H --> C2[MCP client]
    C1 --> S1[Local server]
    C2 --> S2[Remote server]
    S1 --> F[(Файлы)]
    S2 --> A[(External API)]

Host должен изолировать servers друг от друга и не передавать одному серверу данные другого без необходимости и согласия.

Источники

См. также: Безопасность MCP, Tool Use Function Calling, MCP (Model Context Protocol).