Что такое MCP — Model Context Protocol
Если коротко: MCP — это стандартный способ, которым большая языковая модель (LLM) узнаёт про доступные ей инструменты и данные у клиента, и запрашивает их через единый интерфейс. Стандарт открытый, его выпустил Anthropic в ноябре 2024 года.
Зачем нужен ещё один протокол
До MCP каждый агент-клиент интегрировался с каждым источником данных ad-hoc: один пишет адаптер к Notion, второй — свой собственный к Notion, третий — к Slack и тоже свой. Получается N×M кода: чем больше агентов и сервисов, тем больше зоопарк интеграций.
MCP разрывает эту матрицу. Источник данных описывает себя один раз — в виде MCP-сервера, — а любой MCP-совместимый клиент (Claude Desktop, Cursor, Zed, Windsurf, кастомный агент на SDK) получает к нему доступ без отдельных интеграций.
Архитектура
В мире MCP есть три роли:
- Host — приложение, в котором живёт LLM (например, Claude Desktop, IDE-плагин, кастомный агент).
- Client — встроенный в host-приложение клиент протокола, который держит соединение с одним сервером.
- Server — отдельный процесс, который умеет рассказать клиенту про свои tools, resources и prompts и выполнять их по запросу.
Один host может одновременно держать связь с несколькими серверами — каждый изолирован, у каждого свои разрешения и свой жизненный цикл.
Что внутри
Транспорт — JSON-RPC 2.0. Поддерживаются два варианта переноса сообщений:
- stdio — сервер запускается локально как подпроцесс, клиент пишет в его stdin и читает из stdout. Самый распространённый вариант: безопасно (нет открытых портов), просто в раздаче.
- HTTP + Server-Sent Events — сервер живёт в сети, клиент держит долгое SSE-соединение для входящих сообщений и шлёт ответные через POST. Нужен, когда сервер общий для нескольких клиентов или его лучше держать в облаке.
Три типа возможностей
- Tools — функции, которые модель может вызвать (например,
github.create_issue,db.query,fs.read_file). У каждой есть JSON Schema параметров — модель видит её и подставляет аргументы. - Resources — пассивные данные, которые сервер может выдать по URI: содержимое файла, ответ от API, выгрузка из таблицы. Клиент включает их в контекст модели.
- Prompts — заранее заготовленные шаблоны промптов, параметризуемые аргументами. Пользователь сам выбирает их в UI host-приложения.
Чем MCP отличается от function calling
Function calling — это формат, в котором LLM решает «надо вызвать вот такую функцию с такими аргументами». MCP — это формат, в котором приложение реально выполняет этот вызов и стримит результат обратно. Эти две вещи не конкурируют: они работают вместе.
Главные плюсы MCP по сравнению с самописными вызовами:
- Стандартизация — сервер написан раз и работает во всех клиентах.
- Безопасность — у каждого сервера свои capabilities и явный лист разрешений.
- Стриминг — длинные операции отдают прогресс по мере выполнения.
- Динамическое обновление списка tools — сервер может сказать клиенту «у меня появилась новая функция».