mcp — MCP (Model Context Protocol)¶
Открытый стандарт «USB для инструментов модели». MCP-сервер — не слой LLM-стека и не вызывает LLM: он выдаёт тулы агенту, а сам ходит к обычным внешним системам.
Представьте, что у вас 10 разных агентов (Zed, Claude Desktop, Cursor) и 10 разных сервисов, к которым им надо подключаться (GitHub, Slack, ваша база данных, ваш Telegram-бот). Без стандарта вам пришлось бы писать 10 × 10 = 100 разных интеграций. MCP — это общий «язык разъёмов», чтобы каждый агент умел подключаться к любому сервису одинаковым способом.
flowchart LR
subgraph before["Без MCP: каждый с каждым"]
direction LR
A1["Zed"] --- S1["GitHub"]
A1 --- S2["Postgres"]
A1 --- S3["наш бот"]
A2["Claude Desktop"] --- S1
A2 --- S2
A2 --- S3
A3["Cursor"] --- S1
A3 --- S2
A3 --- S3
end
flowchart LR
subgraph after["С MCP: один разъём на всех"]
direction LR
B1["Zed"] --> P(["🔌 MCP"])
B2["Claude Desktop"] --> P
B3["Cursor"] --> P
P --> M1["MCP-сервер GitHub"] --> T1["GitHub"]
P --> M2["MCP-сервер Postgres"] --> T2["Postgres"]
P --> M3["MCP-сервер бота"] --> T3["наш бот"]
end
Примерно как USB: раньше у каждого устройства был свой штекер, а теперь один разъём на всё.
Важный нюанс, который легко забыть: MCP-сервер сам не вызывает LLM. Он выдаёт тулы, а вызывает их — агент (MCP-клиент). И под капотом MCP-сервер ходит не к ИИ, а к обычным внешним системам: GitHub, Postgres, файловой системе, вашему боту. То есть MCP — это мост «агент → реальный мир», а не «агент → ещё одна LLM».
Когда вы слышите «у нас есть MCP-сервер» — это значит «мы сделали сервис, к которому любой ИИ-агент может подключиться по стандартному протоколу и получить наши инструменты». Для нашего kotlin-aiband-bot это значит: поднимаем MCP-сервер с тулами «прочитать логи», «отправить сообщение», «включить фичу» — и любой агент (Zed, Claude Desktop) сразу ими пользуется, без отдельной интеграции.
Когда у каждого агента свои 10 инструментов, прописанных хардкодом, возникает та же боль, что была с драйверами до USB: каждый вендор пишет свой протокол.
MCP (Model Context Protocol, открытый стандарт от Anthropic, 2024) — «USB для инструментов модели». Его место в архитектуре:
flowchart LR
LLMAPI["LLM-сервер (слой 2)<br/>Anthropic / OpenAI API"]
subgraph Client["Клиент / Агент (слой 3)"]
Agent["Цикл рассуждений"]
MCPClient["MCP-клиент"]
end
MCPServer["MCP-сервер<br/>Tools · Resources · Prompts"]
subgraph Services["Внешние системы (вне LLM-стека)"]
GitHub["GitHub"]
Postgres["Postgres"]
Bot["наш бот"]
end
Agent -->|"Chat Completions"| LLMAPI
Agent -.-|"координирует"| MCPClient
MCPClient -->|"JSON-RPC"| MCPServer
MCPServer -->|"HTTP / SQL / FS"| Services
MCP-сервер живёт сбоку от LLM-стека, на стороне внешних систем: LLM может вообще не знать, что он существует — она просто видит в контексте список доступных тулов и решает, какой вызвать.
Ключевые понятия:
- MCP-сервер — отдельный процесс, который предоставляет три вещи по MCP:
- Tools — функции, которые агент может попросить вызвать (
create_issue,run_query,upload_file); - Resources — данные, к которым агент может обратиться по URI (
file:///...,postgres://...); - Prompts — шаблоны промптов, которые хост может показать пользователю.
- MCP-клиент — обычно встроен в агент/IDE (Zed, Claude Desktop, Cursor). Он живёт внутри слоя 3, рядом с циклом агента.
- Транспорт —
stdio(сервер запускается как подпроцесс и общается через stdin/stdout) илиhttp(HTTP + SSE, для удалённых серверов). - Протокол — JSON-RPC 2.0 поверх транспорта. Язык — любой: официальные SDK для TypeScript, Python, Go, Rust, Kotlin, Java.
Главное, что часто путают: MCP-сервер — это не «ещё одна LLM». Под капотом он обычно ходит к GitHub, Postgres, файлам, вашему боту, Jira — к чему угодно обычному.
Чем MCP отличается от «просто API-вызовов из кода агента»:
| Без MCP | С MCP |
|---|---|
| Инструменты прописаны в коде агента, жёстко | Любой MCP-сервер подключается к любому MCP-клиенту |
| Перенос инструмента = переписать интеграцию | Перенос = поменять конфиг |
| Агент знает схему тулов заранее | Агент на лету получает JSON Schema от сервера |
| Вендор-лок | Экосистема: mcp-server-git, mcp-server-postgres, ... |
Для нас MCP-сервер — это в первую очередь точка интеграции нашего продукта с ИИ-агентами пользователей. Например, для
kotlin-aiband-botимеет смысл поднять MCP-сервер, который отдаёт тулы «прочитать лог бота», «отправить сообщение в канал», «включить/выключить фичу» — и тогда любой агент, поддерживающий MCP (Zed, Claude Desktop), сможет ими пользоваться без своей интеграции.
Связанные страницы¶
- overview.md — слоистая картина целиком
- agents.md — кто пользуется MCP
- client.md — клиент вообще
- further-reading.md — что почитать