Запись архива

MCP (Model Context Protocol) — зачем нужен единый протокол для ИИ-агентов

Model Context Protocol (MCP) от Anthropic — открытый стандарт для подключения LLM к внешним инструментам, API и данным. Разбираем, как протокол упрощает разработку агентов и чем отличается от традиционных подходов.

Схема работы Model Context Protocol — LLM-хост, клиент MCP и серверы с инструментами и данными
Схема работы Model Context Protocol — LLM-хост, клиент MCP и серверы с инструментами и данными
201603 server black.png | by DataBase Center for Life Science (DBCLS) | wikimedia_commons | CC BY 4.0

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

Что такое MCP

Model Context Protocol — это протокол прикладного уровня, построенный на JSON-RPC. Он определяет единый способ, которым LLM-хост (например, приложение или агент) может запрашивать контекст и выполнять действия через MCP-серверы. Протокол поддерживает три ключевые возможности:

  • Ресурсы — файлы, записи баз данных, веб-страницы, которые модель может читать.
  • Инструменты — функции, которые модель может вызывать (например, отправка email, поиск в CRM).
  • Промпты — шаблоны подсказок, которые сервер может динамически предлагать агенту.

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

Как MCP работает

Архитектура состоит из трёх уровней:

LLM-хост — приложение, которое запускает модель (например, Claude Desktop, собственный агент).
2. MCP-клиент — компонент внутри хоста, устанавливающий соединение с серверами.
3. MCP-сервер — отдельный процесс, предоставляющий ресурсы, инструменты и промпты через JSON-RPC.

Сервер может быть локальным (запущен на том же устройстве) или удалённым (через HTTP). Для каждого сервера хост должен знать способ подключения (например, путь к исполняемому файлу или URL). Во время сессии хост отправляет запросы `resources/list`, `tools/call` и другие. Сервер отвечает структурированными данными, которые модель интерпретирует.

Сравнение MCP с традиционными подходами

Аспект Традиционное function calling (OpenAI, Anthropic) MCP (Model Context Protocol)
Стандартизация Каждый провайдер определяет свой формат описания функций Единый JSON-RPC интерфейс для всех серверов
Обнаружение возможностей Разработчик вручную прописывает все инструменты в коде Сервер сам сообщает список доступных ресурсов и инструментов
Повторное использование Инструменты привязаны к конкретному приложению Один MCP-сервер можно использовать с любым MCP-совместимым хостом
Обновление Требует пересборки приложения Сервер обновляется независимо, хост получает новый список при следующем подключении

MCP особенно удобен, когда у агента много потенциальных инструментов, которые меняются со временем, — например, в корпоративных средах с десятками внутренних API.

Практические примеры

  • Claude Desktop — первое официальное приложение, поддерживающее MCP. Пользователь может подключить сервер для работы с локальными файлами, базой данных SQLite или GitHub API. Пример: «Создай файл Readme.md на основе содержимого папки» — агент использует файловый сервер.
  • Собственный агент на Python — используя библиотеку `mcp` (официальный SDK), можно запустить MCP-сервер, который предоставляет доступ к внутренней CRM. Агент через хост отправляет запрос `tools/call` с параметрами, сервер выполняет запрос в CRM и возвращает результат.
  • Интеграция с CI/CD — MCP-сервер может быть триггером для деплоя: агент получает задачу «выкатить тестовую версию на staging» и вызывает инструмент сервера, который запускает пайплайн.

Преимущества и ограничения

Плюсы

– Упрощает архитектуру — вместо написания адаптеров для каждой модели используется один протокол.
– Открытость — спецификация и SDK на GitHub, любой может создать свой сервер.
– Безопасность — хост контролирует, какие серверы подключать, и может ограничивать права инструментов.

Минусы

– Протокол всё ещё развивается (версия 0.1 на момент написания), возможны несовместимые изменения.
– MCP требует запуска отдельных серверов — это дополнительная инфраструктура.
– Не все LLM поддерживают гибкие вызовы инструментов, нужные для работы с произвольными JSON-RPC схемами.

Как начать

Установите Claude Desktop или используйте официальный SDK для Python/Node.js.

Найдите готовые серверы на GitHub (репозиторий `modelcontextprotocol/servers` содержит файловый, SQLite, Git и другие).
3. Запустите сервер локально, укажите его путь в настройках хоста.
4. Попробуйте простой запрос, например «покажи список файлов в текущей папке» — агент должен вызвать соответствующий инструмент.

Для самостоятельной разработки сервера изучите спецификацию на modelcontextprotocol.io и примеры в репозитории. Протокол использует обычные stdin/stdout или HTTP — порог входа низкий, если вы знакомы с JSON-RPC.

Что ещё стоит проверить

Прежде чем внедрять MCP в продуктивную среду, обратите внимание на несколько моментов:

  • В официальной документации уточните, поддерживает ли ваш LLM-хост протокол (на данный момент только Claude Desktop имеет полную поддержку).
  • Для серверов, открывающих доступ к реальным данным, обязательно настройте ограничения прав — MCP не добавляет собственной аутентификации.
  • Следите за обновлениями репозитория — протокол может менять формат сообщений, и ваши серверы придётся обновлять.

MCP — это шаг к унификации взаимодействия LLM с внешним миром. Если вы строите сложных агентов, этот протокол стоит хотя бы протестировать на одном из ваших сценариев.