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

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

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

Схема работы Model Context Protocol: хост, клиент, сервер и внешние инструменты
Схема работы Model Context Protocol: хост, клиент, сервер и внешние инструменты
Career Fair at College of DuPage 2014 16 | by COD Newsroom | openverse | by

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

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

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

До MCP каждый инструмент требовал собственной реализации. Если вы хотели, чтобы агент мог читать файлы, отправлять запросы к GitHub и искать в базе данных, приходилось либо писать три отдельных функции с разными сигнатурами, либо использовать громоздкие обёртки. MCP стандартизирует способ описания инструментов, передачи параметров и возврата результатов. Это снижает порог входа: теперь достаточно, чтобы инструмент был опубликован как MCP-сервер, и любой совместимый клиент (Claude Desktop, Cursor, продолжение других IDE) сможет его использовать.

Кроме того, MCP решает проблему контекстной связности. В классической схеме при каждом вызове инструмента нужно передавать состояние сессии, следить за лимитами токенов и перезаписывать контекст. MCP вводит концепцию «ресурсов» — данных, которые сервер может предоставлять хосту по запросу, не перегружая контекст лишней информацией. Это особенно важно для долгоживущих агентов, работающих с большими документами или базами знаний.

Что принёс MCP: сравнение со старыми подходами

Чтобы понять разницу, можно сравнить MCP с типичной реализацией function calling в OpenAI и с плагинными системами прошлого поколения.

Аспект Function calling (OpenAI) Плагины (ChatGPT, 2023) MCP
Протокол Внутренний API провайдера Закрытый формат OpenAI Открытая спецификация, независимая от провайдера
Поддержка инструментов Только для одной модели Только для ChatGPT Любая LLM, любой клиент
Управление контекстом Ручное, через сообщения Частичное, через плагин Ресурсы с ленивой загрузкой
Возможность кастомизации Ограничена провайдером Ограничена плагином Полный контроль — свой сервер на любом стеке
Сообщество поддерживаемых серверов Нет единого каталога Закрытый маркетплейс Открытый GitHub репозиторий, 50+ серверов

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

Практический рабочий процесс: как начать использовать MCP

В минимальном варианте нужно три компонента: хост (например, Claude Desktop), MCP-сервер (можно написать самому или взять готовый) и инструменты, которые сервер предоставляет.

Установите Claude Desktop (официальное приложение Anthropic) или любой другой клиент с поддержкой MCP — Cursor, Zed, продолжение VS Code через расширение.
2. Настройте конфигурацию MCP. В Claude Desktop это файл `claude_desktop_config.json`, где указываются серверы. Пример для интеграции с локальной файловой системой:
json
{
“mcpServers”: {
“filesystem”: {
“command”: “npx”,
“args”: [“-y”, “@anthropic/mcp-server-filesystem”, “/path/to/allowed/dir”]
}
}
}

3. Запустите клиент. Теперь при запросе «покажи содержимое файла readme.txt из папки project» модель сможет вызвать инструмент `read_file` через MCP, не требуя ручного кода.
4. Напишите собственный сервер, если нужно. Anthropic предоставляет SDK для Python, TypeScript и Java. Регистрируете инструменты, ресурсы или промпты, запускаете сервер как отдельный процесс — и клиент автоматически обнаружит их.

Для продакшен-сценариев можно использовать MCP-серверы, размещённые на отдельном сервере, — протокол не привязан к локальному запуску. Это позволяет подключать внешние API, базы данных, поисковые системы.

Где проходят границы: что MCP не решает

MCP — это протокол, а не магическое решение всех проблем агентов. Несколько ограничений, которые стоит учитывать:

  • Безопасность остаётся за разработчиком. MCP описывает взаимодействие, но не проверяет, что сервер не скомпрометирован. Если вы подключите случайный сервер из GitHub, он может получить доступ к вашему контексту и выполнять произвольные действия. Необходимо изолировать серверы (контейнеры, ограничение прав доступа).
  • Протокол всё ещё молодой. Спецификация версии 0.1, активная разработка — возможны breaking changes. Anthropic обещает обратную совместимость, но на практике клиенты уже обновлялись.
  • Не все клиенты поддерживают MCP. На момент написания статьи — Claude Desktop, Cursor, Zed, несколько плагинов для VS Code. OpenAI, Gemini, LlamaIndex пока не интегрировали протокол нативно (хотя сообщество пишет адаптеры).
  • Производительность. Каждый вызов инструмента через MCP — это дополнительный сетевой или межпроцессный обмен. Для высоконагруженных систем с сотнями запросов в секунду может потребоваться оптимизация (например, пул серверов, кэширование).

Что попробовать прямо сейчас

Для разработчика, который хочет оценить протокол без глубокой интеграции, достаточно установить Claude Desktop, добавить один из серверов из официального репозитория (файловая система, GitHub, Slack) и задать агенту задачу, требующую внешнего действия. Например: «Найди в моей заметке про MCP раздел про безопасность и выведи его». Агент самостоятельно прочитает файл, найдёт нужный раздел через поиск и вернёт результат.

Если вы пишете собственного агента, попробуйте заменить жёстко закодированные вызовы API на MCP-сервер. Это не только сократит код, но и сделает архитектуру расширяемой — позже вы сможете подключать новые инструменты без изменения кода клиента.

Следующий шаг — изучить репозиторий modelcontextprotocol/servers на GitHub, где собраны готовые серверы, и присоединиться к дискуссии в MCP Discord. Протокол развивается, и его будущее зависит от того, насколько сообщество примет и адаптирует его под свои задачи.

Источники

– Официальный анонс Anthropic: https://www.anthropic.com/news/model-context-protocol
– Спецификация и SDK: https://modelcontextprotocol.io
– Официальный репозиторий серверов: https://github.com/modelcontextprotocol/servers
– Руководство по интеграции от LlamaIndex: https://www.llamaindex.ai/blog/a-beginners-guide-to-model-context-protocol-llamaindex-429c6a35b8e5