Три роли#
В MCP три участника. Хост — ИИ-приложение, с которым работает человек: Claude, Cursor, VS Code. Клиент — часть хоста, которая держит связь с одним сервером; хост создаёт по клиенту на каждый подключённый сервер. Сервер — программа, которая предлагает инструменты, ресурсы и шаблоны запросов.
Устройство протокола — на странице «Архитектура», о сервере простыми словами — на странице «MCP-сервер».
Что делает клиент#
- Подключается. Для локального сервера запускает программу по команде из настроек, для удалённого — обращается по адресу.
- Узнаёт возможности. Вызывает
server/discoverи получает версии протокола, возможности и сведения о сервере, затем списки инструментов, ресурсов и шаблонов. - Передаёт их модели. Описания инструментов попадают в контекст модели, и она решает, что вызвать.
- Спрашивает согласие. Хост обязан получить согласие пользователя на вызов инструмента; многие клиенты позволяют разрешить вызов один раз или навсегда.
- Отправляет вызов. С ревизии 2026-07-28 каждый запрос сам несёт версию протокола и возможности клиента в поле
_meta: рукопожатияinitializeбольше нет. - Проводит вход. Если удалённый сервер закрыт, клиент находит его сервер авторизации и открывает вход в браузере (авторизация).
Какие программы бывают клиентами#
Таблица: MCP-клиенты и руководства по подключению
| Программа | Как подключают серверы | Руководство |
|---|---|---|
| Claude для компьютера | Локальные — в файле claude_desktop_config.json, удалённые — в разделе «Коннекторы» | Claude Desktop |
| Claude Code | Командой claude mcp add или файлом .mcp.json в проекте | Claude Code |
| Cursor | Файл .cursor/mcp.json в проекте или ~/.cursor/mcp.json | Cursor |
| VS Code (GitHub Copilot) | Файл .vscode/mcp.json | VS Code |
| OpenCode | Раздел mcp в opencode.json | OpenCode |
| Yandex AI Studio | MCP Hub: подключение MCP-серверов к агентам | Яндекс |
Один и тот же сервер работает в любом из них. Различаются только место и формат настройки — об этом ниже.
Локальный или удалённый#
Различия по транспорту, авторизации и назначению сведены в таблицу на странице «MCP-сервер». Короткое правило выбора:
- Локальный, если сервер работает с файлами и программами на компьютере пользователя (редактор, Blender, 1С:EDT) или если данные не должны покидать компьютер.
- Удалённый, если сервер открывает данные компании многим пользователям: каталог, CRM, учётную систему. Его обновляют в одном месте, а доступ дают через OAuth.
Что такое HTTP MCP#
Удалённые серверы работают по транспорту Streamable HTTP. У сервера один адрес, обычно с окончанием /mcp. Клиент отправляет на него запросы POST, а сервер отвечает обычным JSON или потоком событий SSE, если ответ готовится по частям.
POST /mcp HTTP/1.1
Content-Type: application/json
Accept: application/json, text/event-stream
MCP-Protocol-Version: 2026-07-28
Mcp-Method: tools/call
Mcp-Name: find_products
{"jsonrpc": "2.0", "id": 2, "method": "tools/call",
"params": {"name": "find_products", "arguments": {"query": "полка"},
"_meta": {"io.modelcontextprotocol/protocolVersion": "2026-07-28",
"io.modelcontextprotocol/clientCapabilities": {}}}}Что важно знать:
- Сессий нет. С ревизии 2026-07-28 заголовок
Mcp-Session-Idудалён: любой запрос может обслужить любой экземпляр сервера. - Заголовки обязательны.
MCP-Protocol-VersionиMcp-Methodнужны в каждом запросе POST,Mcp-Name— при вызове инструмента, чтении ресурса и получении шаблона. Значения должны совпадать с телом запроса, иначе сервер ответит400. - Старый транспорт HTTP+SSE с двумя адресами устарел. Если в инструкции к серверу указан адрес с окончанием
/sse, это прежний транспорт. - Публичный сервер — только по HTTPS. Токены и данные идут в заголовках и теле запроса.
Разбор заголовков, кодов ответа и потоков — в документации: «Транспорты».
Что такое локальный MCP#
Локальный сервер — программа на компьютере пользователя, которую запускает сам клиент. Обмен идёт через stdio: клиент пишет запросы в стандартный ввод процесса и читает ответы из стандартного вывода.
- Стандартный вывод — это канал протокола. Сервер должен писать журнал только в stderr: одна лишняя строка в stdout ломает обмен.
- Права — как у пользователя. Сервер может всё, что может запустивший его человек. Подключайте только серверы, происхождение которых можете проверить.
- Пути — абсолютные. Клиент запускает сервер из своей рабочей папки и с минимальным окружением, поэтому относительные пути и переменные из вашей оболочки там не работают.
Форматы настроек#
Таблица: Где клиенты хранят список серверов
| Клиент | Файл | Ключ списка серверов |
|---|---|---|
| Claude для компьютера | claude_desktop_config.json | mcpServers |
| Cursor | .cursor/mcp.json | mcpServers |
| Claude Code | .mcp.json (проект) | mcpServers |
| VS Code | .vscode/mcp.json | servers |
| OpenCode | opencode.json | mcp |
Поэтому инструкция «добавьте в конфигурацию» без названия клиента может не сработать: в VS Code и OpenCode ключ другой. Готовые примеры для каждого клиента — в разделе «Подключение» документации, готовые серверы — в каталоге.