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

MCP протокол: что это и как использовать для интеграции LLM с инструментами

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

Схема работы MCP протокола — Model Context Protocol от Anthropic
Схема работы MCP протокола — Model Context Protocol от Anthropic
Career Fair at College of DuPage 2014 5 | by COD Newsroom | openverse | by

С каждым месяцем языковые модели всё чаще используются не просто как генераторы текста, а как ядро агентов, способных выполнять действия. Но для этого 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 уже сейчас.