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

Model Context Protocol: новый стандарт для подключения инструментов к ИИ-агентам

Разбираем, что такое MCP от Anthropic, зачем он нужен разработчикам агентов, и где его использовать уже сейчас.

Схема работы Model Context Protocol — серверы инструментов, клиент-агент, хост-приложение
Схема работы Model Context Protocol — серверы инструментов, клиент-агент, хост-приложение
Job11 | by baileyg100 | openverse | by

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

MCP решает простую, но болезненную проблему: каждый раз, когда агент должен выполнить запрос к базе данных, скачать файл, прочитать документ или вызвать внешний API, разработчик пишет кастомный код, привязанный к конкретной модели. Если модель меняется — код переписывается. MCP предлагает единый протокол поверх JSON-RPC, который отделяет логику вызова инструментов от модели. Модель (или клиент, работающий с ней) говорит на MCP, а серверы MCP предоставляют доступ к файлам, API, базам данных и любым другим ресурсам. Для разработчика это означает: больше не нужно писать интеграции под каждую модель — достаточно реализовать один MCP-сервер.

Почему это важно для разработчиков агентов

До MCP основным способом интеграции инструментов с LLM были function calling-интерфейсы конкретных провайдеров. OpenAI, Anthropic, Google и другие реализовали собственные спецификации, несовместимые друг с другом. Переход между моделями требовал переписывания вызовов, а для сложных рабочих процессов (например, цепочки из нескольких инструментов) код становился слишком хрупким.

MCP исправляет это, вводя три уровня: хост (приложение, где работает модель), клиент (само приложение, которое инициирует запросы) и сервер (реализует конкретные инструменты). Протокол использует JSON-RPC, но это не просто ещё один формат — он включает типизированные схемы для ресурсов (данные) и инструментов (действия), а также поддержку выборок (sampling) и подсказок (prompts). Это означает, что один и тот же сервер может обслуживать несколько моделей, а одна модель — использовать несколько серверов.

Что говорят источники

Официальный анонс Anthropic подтверждает, что MCP уже используется внутри компании и в Claude Desktop. В документации приводятся готовые серверы для Google Drive, Slack, Git, PostgreSQL и SQLite. Компания открыла спецификацию, SDK для Python и TypeScript, а также референсные реализации на GitHub.

Сообщество, в том числе разработчики в Reddit и Hacker News, отреагировало скорее сдержанно-позитивно. Многие отмечают, что протокол пока сыроват: нет полной поддержки авторизации, документация местами неполная, а для промышленного использования нужен мониторинг и логирование, которых в текущей версии нет. Тем не менее, архитектурное решение — разделение хоста, клиента и сервера — признаётся удачным, позволяющим абстрагироваться от модели.

Инженерный блог Simon Willison (datasette.io) содержит отдельный разбор MCP. Willison подчёркивает, что протокол напоминает WebSocket-подобное соединение, но с явным разделением на ресурсы и инструменты. Он также указывает на удобство для агентов, которым нужно одновременно читать базу данных и обновлять её — MCP позволяет делать это в рамках одного сеанса.

Как это выглядит на практике

Представьте агента, который помогает писать статьи: он должен уметь поискать в архиве статей, загрузить файл из Google Drive, обновить базу данных и отправить email. Без MCP для каждого источника пришлось бы писать отдельный вызов function calling под конкретную модель, а затем переписывать его при смене модели. С MCP агент получает единый интерфейс к серверу, который агрегирует все инструменты.

Вот упрощённая схема сравнения MCP и типичного подхода на function calling:

Аспект Function calling (OpenAI/Anthropic) Model Context Protocol
Привязка к модели Жёсткая (свой формат у каждого провайдера) Абстрагирован (протокол поверх JSON-RPC)
Многосерверность Не поддерживается нативно Поддерживается: клиент может подключать несколько серверов
Типизация Только параметры функций Ресурсы и инструменты с типизированными схемами
Переносимость Низкая (переписывание при смене модели) Высокая (один сервер для любых моделей с поддержкой MCP)
Зрелость Высокая (документация, инструменты, отладка) Низкая (версия 0.1, ранняя стадия)

На практике разработчику нужно:
1. Установить SDK MCP (Python или TypeScript).
2. Написать сервер, реализующий инструменты, которые нужны агенту.
3. Запустить сервер в качестве подпроцесса или через WebSocket (в будущем).
4. Подключить к клиенту (например, Claude Desktop или самописное приложение).
5. Агент отправляет запросы в формате MCP, сервер выполняет действия и возвращает результат.

Где могут быть проблемы

Первая и главная — безопасность. MCP позволяет серверу выполнять произвольные действия от имени агента, включая чтение и запись в файловую систему, отправку запросов к внешним API. На данный момент протокол не предусматривает механизмов авторизации и ограничения доступа. Разработчику придётся самостоятельно реализовывать access control, что снижает преимущество унификации.

Вторая — зрелость. Протокол находится в стадии proposal (версия 0.1). Нет общепринятых реализаций для популярных языков, кроме Python и TypeScript. Отсутствуют инструменты мониторинга, логирования и отладки. В production-сценариях использовать MCP пока рискованно.

Третья — обратная связь. Функция selection (sampling) позволяет модели запрашивать дополнительные данные у пользователя, но это не заменяет полноценного диалогового интерфейса. Для сложных agent-пайплайнов потребуется доработка.

Что можно протестировать уже сегодня

Лучший способ понять MCP — собрать простой сервер и запустить его с Claude Desktop. Anthropic предоставляет готовые серверы для PostgreSQL и SQLite, которые работают «из коробки». Для этого достаточно установить Claude Desktop, указать путь к серверу в конфигурации и начать задавать вопросы, требующие запросов к базе данных.

Другой вариант — написать свой MCP-сервер на Python, реализующий несколько простых инструментов (например, получение погоды или поиск новостей). Это займёт пару часов, но даст чёткое понимание, как протокол отделяет модель от инструментов.

Важно: не стоит воспринимать MCP как замену function calling. Скорее это надстройка, которая в перспективе может стать стандартом для мультимодельных агентских систем. Но пока она требует доработки сообществом и самим Anthropic.

Следить за развитием стоит на GitHub репозитории modelcontextprotocol, а также в официальном блоге Anthropic. Если вы разрабатываете инструменты для агентов, имеет смысл ознакомиться со спецификацией уже сейчас — чтобы быть готовым, когда протокол выйдет из стадии раннего доступа.