# MCP: стандарт подключения инструментов

> MCP (Model Context Protocol) — открытый стандарт, который соединяет LLM-приложения с инструментами и источниками данных: вместо N×M самодельных интеграций — N+M подключений к общему протоколу. Разбираем роли, жизненный цикл, JSON-RPC и риски чужих серверов.

Раздел: [Агенты и инструменты](https://ml-book.com/s/agents/) · Страница темы: https://ml-book.com/t/mcp/ · Обновлено: 2026-09-16 · Источник: ml-book.com, учебник делается сообществом

## Интуиция: проблема N×M

До стандарта каждое AI-приложение дружило с каждым источником данных отдельно. Чат-ассистент хочет читать файлы — пишем интеграцию. IDE-агент хочет ходить в базу — ещё одну. Появился третий продукт или четвёртый источник — и снова ручная работа: N приложений × M источников = N×M интеграций, каждая со своим форматом описаний тулов, своей авторизацией и своими багами. Количество работы растёт квадратично.

MCP (Model Context Protocol) — открытый стандарт, который Anthropic опубликовала в конце 2024 года, — решает это как USB-C решил проблему зарядок: единый разъём с обеих сторон. Приложение один раз реализует MCP-клиент, источник один раз оборачивается MCP-сервером — и любое приложение работает с любым источником. Вместо N×M интеграций — N+M подключений к общей «шине».

## Как это работает

Роли в протоколе:

- **Хост (host)** — приложение с LLM внутри: чат, IDE, ассистент. Внутри хоста живёт **MCP-клиент**, который держит соединение с сервером.
- **MCP-сервер (server)** — обёртка над источником возможностей: файловой системой, БД, браузером, Slack. Часто это маленькая программа на сотню строк.

Сервер отдаёт клиенту три вида возможностей:

- **Tools** — действия («выполнить SQL», «создать issue»); их вызывает сама модель через привычный [tool calling](https://ml-book.com/t/tool-calling/).
- **Resources** — данные для контекста (файл, схема БД); их читает приложение и решает, что показать модели.
- **Prompts** — готовые шаблоны запросов, которые сервер предлагает пользователю.

Транспорт — **JSON-RPC 2.0**: сообщения вида {"method": "tools/call", "params": {…}} поверх stdio (сервер запущен локально как процесс) или HTTP/SSE (сервер удалённый). Жизненный цикл соединения:

`initialize → tools/list → tools/call → result`

Сначала рукопожатие (initialize): клиент и сервер сверяют версии протокола и возможности. Потом обнаружение (discovery): клиент запрашивает tools/list и получает описания тулов с JSON-схемами. Дальше — рабочие вызовы tools/call и результаты. Ключевое свойство — **динамическое обнаружение**: подключил новый сервер — модель узнала о его тулах в рантайме, без перекомпиляции и правок кода приложения.

> **💡 Ключевая мысль**
>
> MCP не меняет механику tool calling — он стандартизирует, откуда тулы берутся. Tool calling — «как модель просит», MCP — «как инструменты доставляются в приложение». Это разные уровни стека.

> 🎛 Интерактивная визуализация — на странице темы: https://ml-book.com/t/mcp/

## MCP или «просто tool calling»?

Самый частый вопрос: зачем MCP, если function calling уже есть в API моделей? Ответ — это разные уровни. Tool calling — механика *вызова*: формат, в котором модель просит выполнить действие, и цикл «вызов → исполнение → результат». MCP — стандарт *доставки*: откуда приложение берёт список тулов, их схемы и кто их исполняет. Без MCP разработчик хардкодит тулы в своём коде; с MCP приложение получает их от любых подключённых серверов — динамически, через tools/list. Внутри агентного цикла ([agent loop](https://ml-book.com/t/agent-loop/)) модель разницы не видит: для неё это те же описания инструментов в контексте.

Экосистема выросла быстро: тысячи открытых серверов (GitHub, Postgres, браузеры, поисковики), поддержка в SDK основных провайдеров и в популярных приложениях — от IDE до десктопных ассистентов.

## Безопасность: сервер — это чужой код

Установить сторонний MCP-сервер — значит запустить чужой код с реальными полномочиями: доступом к файлам, базам, аккаунтам. Отсюда три класса рисков:

- **Риск цепочки поставок (supply chain)**: вредоносный или скомпрометированный сервер может красть данные или подменять описания тулов.
- **Prompt injection через результаты тулов**: сервер возвращает текст, который попадает в контекст модели; внедрённая туда инструкция может управлять агентом (подробнее — в теме [про guardrails](https://ml-book.com/t/safety-guardrails/)).
- **Избыточные полномочия**: сервер файловой системы с доступом ко всему диску превращает любую ошибку модели в катастрофу.

Практика: наименьшие привилегии (доступ только к нужной папке/схеме БД), подтверждение опасных действий человеком, доверенные источники серверов и аудит того, что реально уходит по сети.

> **⚠️ Подводный камень**
>
> «Подключу побольше MCP-серверов — агент станет умнее» не работает: десятки тулов с похожими описаниями засоряют контекст, модель путает инструменты, а каждый лишний сервер расширяет поверхность атаки. Подключай минимум, который нужен задаче.

> **🎤 На собеседовании**
>
> - «Зачем MCP, если есть function calling?» — главный вопрос. Ответ: разные уровни — function calling описывает, как модель просит вызвать тул, MCP — откуда тулы берутся и как доставляются в приложение.
> - «Какую проблему решает MCP количественно?» — N приложений × M источников = N×M интеграций превращаются в N+M подключений к стандарту.
> - «Какие риски у стороннего MCP-сервера?» — чужой код с полномочиями: supply chain, prompt injection через результаты тулов, избыточные права. Лечится наименьшими привилегиями и подтверждением опасных действий.
> - «Что отдаёт MCP-сервер кроме тулов?» — resources (данные для контекста, читает приложение) и prompts (готовые шаблоны).

## Связанные темы

- [Tool calling: как модель вызывает инструменты](https://ml-book.com/t/tool-calling/)
- [Агентный цикл и критерий остановки](https://ml-book.com/t/agent-loop/)
- [Безопасность: guardrails и prompt injection](https://ml-book.com/t/safety-guardrails/)
- [Оценка агентов: pass@k и траектории](https://ml-book.com/t/agent-evals/)

---

Интерактив, тест из 12 вопросов и карточки терминов — на странице темы: https://ml-book.com/t/mcp/
Весь учебник в markdown: https://ml-book.com/llms-full.txt · Оглавление для агентов: https://ml-book.com/llms.txt
