
С каждым месяцем языковые модели всё чаще используются не просто как генераторы текста, а как ядро агентов, способных выполнять действия. Но для этого LLM нужно уметь вызывать внешние инструменты — API, базы данных, файловые системы. До недавнего времени каждый разработчик реализовывал такую интеграцию по-своему. В конце 2024 года Anthropic предложила единый открытый стандарт — Model Context Protocol (MCP). Разбираемся, что это за протокол, как он работает и стоит ли его внедрять в свои проекты.
Что такое Model Context Protocol
MCP (Model Context Protocol) — это открытый протокол, который определяет, как языковая модель может подключаться к внешним источникам данных и инструментам. Он был представлен Anthropic в ноябре 2024 года как альтернатива разрозненным реализациям function calling. Архитектура MCP следует принципу «клиент — сервер»: клиент (приложение, в котором работает LLM) обращается к серверам MCP, каждый из которых предоставляет доступ к определённому ресурсу или действию.
Протокол использует JSON-RPC 2.0 для обмена сообщениями и поддерживает два типа ресурсов:
– Инструменты (tools) — функции, которые модель может вызывать (например, поиск в базе данных, отправка письма).
– Ресурсы (resources) — данные, которые модель может читать (например, файлы, записи таблиц).
MCP не завязан на конкретную модель или провайдера. Его можно использовать с любой LLM, которая поддерживает вызов инструментов, — от OpenAI до локальных моделей через Ollama.
Как MCP отличается от OpenAI function calling
Многие разработчики уже знакомы с function calling от OpenAI. Это встроенный механизм, при котором модель сама решает, какую функцию вызвать и с какими параметрами. Однако у него есть ограничения:
- Закрытость: реализация привязана к API OpenAI.
- Отсутствие стандартизации: каждый разработчик описывает функции по-своему, нет единой схемы обмена данными.
- Сложность масштабирования: при добавлении новых инструментов приходится обновлять всё приложение.
MCP решает эти проблемы за счёт модульной архитектуры. Вы можете запустить несколько серверов MCP, каждый со своими инструментами, и подключать их к одному клиенту без изменения кода клиента.
| Параметр | OpenAI Function Calling | MCP |
|---|---|---|
| Стандарт | Проприетарный, только OpenAI | Открытый, любой провайдер |
| Формат описания инструментов | JSON Schema в запросе | JSON-RPC, единая схема |
| Архитектура | Встроенная в API | Клиент-серверная, модульная |
| Поддержка ресурсов (чтение данных) | Нет | Да, через ресурсы |
| Версионирование | Нет явного | Спецификация версионируется |
Практический пример: MCP-сервер для базы данных
Чтобы понять, как MCP работает на практике, разберём простой пример. Предположим, у нас есть база данных с заказами, и мы хотим, чтобы AI-агент мог отвечать на вопросы по ней через MCP.
Создаём сервер MCP на Python с помощью библиотеки `mcp`. Он определяет инструмент `get_orders_by_customer`:
python
@mcp.tool()
def get_orders_by_customer(customer_id: str) -> list[dict]:
# выполняем SQL-запрос
return db.query(“SELECT * FROM orders WHERE customer_id = ?”, customer_id)
Запускаем сервер (например, через `mcp run server.py`). Сервер слушает на локальном порту.
Настраиваем клиент (например, в приложении на Next.js) — он подключается к серверу и передаёт описание инструментов модели.
Пользователь задаёт вопрос: «Сколько заказов у клиента 12345?» Модель видит описание инструмента, вызывает его с правильным параметром, получает результат и формулирует ответ.
Клиент может одновременно подключаться к нескольким серверам — например, к серверу базы данных, серверу файлового хранилища и серверу погодного API. Все инструменты становятся доступны модели без дополнительного кода.
Когда MCP оправдан, а когда нет
MCP — не серебряная пуля. Его стоит использовать, если:
- вы строите систему, которая будет подключать много разных инструментов (от 3–4 и больше);
- инструменты меняются часто — достаточно заменить сервер, не пересобирая клиент;
- вы хотите сохранить возможность переключаться между моделями (OpenAI, Anthropic, локальные).
Если же у вас простой сценарий с одним-двумя инструментами и вы жёстко привязаны к одной модели, проще остаться на встроенном function calling — он не требует запуска дополнительных серверов и проще в отладке.
Что дальше: проверьте сами
MCP — активно развивающийся протокол. Anthropic выпустила спецификацию, SDK для Python и TypeScript, а также примеры готовых серверов (для Slack, GitHub, Postgres и других). Сообщество уже добавляет новые реализации.
Что можно сделать прямо сейчас
Прочитать официальную спецификацию и SDK на GitHub — github.com/modelcontextprotocol.
2. Запустить один из готовых серверов (например, для файловой системы) и протестировать в своём приложении.
3. Оценить, насколько модульная архитектура упростит добавление новых инструментов в вашем проекте.
Протокол всё ещё молод, и в документации встречаются недокументированные нюансы. Однако направление — открытый стандарт для интеграции моделей с внешним миром — выглядит перспективным. Если вы работаете с AI-агентами, стоит присмотреться к MCP уже сейчас.