Суть
Вместо того чтобы писать интеграцию под каждую пару (модель × сервис), пишешь MCP-сервер один раз — и его подключает любая LLM-среда (Claude, Cursor, VS Code, ChatGPT).
Зачем это нужно
Снимает комбинаторный взрыв интеграций. Объединяет «руки» (Tool Calling) и базу знаний (RAG) агента под одним интерфейсом — то есть закрывает сразу tools + resources в Agent Anatomy.
Как работает
- Сервер выставляет три вида возможностей: tools (действия), resources (данные), prompts (шаблоны).
- Готовые серверы: Gmail, Google Drive, Slack, Linear, Notion, GitHub, Calendar, n8n — десятки.
- Принцип: «написал сервер один раз — работает со всеми моделями».
- MCP — это «транспорт» / способ реализации, а не «магия памяти»: через него агенты общаются между собой и с инструментами (например, ходят в долгосрочную память или делают RAG по кодовой базе). Как именно реализовать хождение в память — через MCP, свою прослойку или API — вопрос проектирования. В курсе на MCP строят коммуникацию компонентов мультиагентной системы.
- MCP как узел графа vs как tool: обычно MCP-инструмент вызывает сама LLM (Tool Calling). Но в LangGraph MCP-сервер можно подключить и как отдельный узел графа, в который ведёт условное ребро — вызов решает код, а не модель (детерминизм, экономия токенов, видимость на диаграмме). Типично для fallback-цепочки RAG→MCP (см. LangGraph MCP as Node).
Пример
Реестр инструментов: каждый инструмент — единая обёртка (имя, описание, JSON-схема, handler), to_openai_spec() отдаёт его в формате, понятном любой LLM. Реестр собирается в один список tools — это и есть «написал один раз → работает со всеми моделями».
class MCPTool: # единая обёртка инструмента (совместима с OpenAI/MCP)
def __init__(self, name, description, schema, handler):
self.name, self.description = name, description
self.schema, self.handler = schema, handler # JSON-схема аргументов + Python-функция
def to_openai_spec(self): # один формат -> понимает любая LLM (GPT/Claude/Ollama)
return {"type": "function", "function": {
"name": self.name, "description": self.description, "parameters": self.schema}}
registry = { # реестр доступных инструментов
"read_file": MCPTool("read_file", "Читает файл с диска.",
{"type": "object", "properties": {"filepath": {"type": "string"}}},
handler=lambda filepath: open(filepath).read()),
}
tools_for_llm = [t.to_openai_spec() for t in registry.values()] # единым списком в параметр tools
Связано с
- Tool Calling — MCP стандартизирует подключение инструментов
- Agent Anatomy — MCP = tools + knowledge base под одним интерфейсом
- RAG — ресурсы/данные тоже отдаются через MCP
- LangGraph MCP as Node — MCP как узел графа (альтернатива «MCP как tool»)
Открытые вопросы
- как писать собственный MCP-сервер (минимальный пример)
- безопасность: что выставлять наружу через MCP