MCP — стандарт чтобы не писать tool use каждый раз
Ты написал агента который умеет читать твои Notion-доки. Через неделю хочешь подключить эту же фичу к Claude Code. Через месяц — к Cursor. Каждый раз надо переписывать tool use под формат конкретного клиента. Anthropic решили эту боль и сделали MCP — единый протокол. Пишешь сервер один раз, любой MCP-совместимый клиент его подключает. Это open standard, который уже поддерживают Claude Desktop, Claude Code, Cursor, Zed и десятки других.
Что такое MCP в одном предложении
MCP (Model Context Protocol) — это спецификация того, как ИИ-клиент общается с ИИ-инструментом. По сути это JSON-RPC поверх stdio или HTTP. Сервер выставляет три типа возможностей: tools (функции которые модель может вызывать — то же что обычный tool use), resources (данные которые модель может прочитать — файлы, БД, API), prompts (готовые шаблоны промптов которые сервер предоставляет). Клиент при подключении спрашивает у сервера «что у тебя есть», получает список, и предоставляет это модели.
Зачем это вместо обычного tool use
Главные плюсы: (1) Переносимость — один сервер работает в Claude Desktop, Claude Code, Cursor без переписывания. (2) Готовая экосистема — на GitHub уже сотни MCP-серверов: GitHub, Slack, Postgres, Notion, Google Drive, Sentry, Linear и т.д. Подключаешь готовое вместо собственного кода. (3) Локальные данные — MCP-сервер работает у тебя на машине, может читать локальные файлы и БД, не отправляя их в облако. (4) Стандартизация — обновление модели не ломает интеграции. Минусы: ещё один слой абстракции, для прототипа быстрее написать прямой tool use.
Stdio vs HTTP — два транспорта
MCP-сервер общается с клиентом через один из двух транспортов. Stdio — клиент запускает процесс сервера, общение через stdin/stdout. Подходит для локальных интеграций (доступ к файлам, локальной БД). Большинство готовых серверов работают так. HTTP/SSE — сервер крутится отдельно, клиент стучится по сети. Подходит для удалённых сервисов и команд (один сервер на всех). У stdio проще security model: клиент запускает процесс, нет сетевых дыр.
Как подключить готовый MCP-сервер
В Claude Desktop / Claude Code конфиг лежит в ~/.config/claude или claude_desktop_config.json. Добавляешь блок mcpServers с командой запуска: "filesystem": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/dir"] }. Перезапускаешь клиент — и Claude видит инструменты filesystem (читать файлы, писать, искать). Никакого кода. На awesome-mcp-servers на GitHub лежат конфиги для десятков популярных сервисов.
Свой MCP-сервер — когда оно того стоит
Свой сервер пишут когда: (1) Нужно подключение к собственному API/БД которое никто не сделал. (2) Хочется переиспользовать инструменты в нескольких клиентах. (3) Команда работает с одной кодобазой и нужны общие helper-инструменты. SDK есть на TypeScript и Python — пишется быстрее чем кажется (стартер на 50 строк). Подробно — в следующих уроках модуля. Пока главная мысль: MCP это стандарт, и понимать его так же важно как понимать tool use напрямую.
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/me/projects"
]
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_xxxx"
}
},
"postgres": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-postgres",
"postgresql://localhost/mydb"
]
}
}
}Конфиг claude_desktop_config.json — подключаем 3 готовых MCP-сервера