MCP protocol

Главная / Клиент и сервер

MCP-клиент и MCP-сервер

Клиент — то, что подключается, сервер — то, к чему подключаются. Здесь — где они живут, какие программы бывают клиентами, чем локальный сервер отличается от удалённого и что значит «HTTP MCP».

Ревизия MCP 2026-07-28 · проверено 13.10.2026 · Markdown

Три роли#

В MCP три участника. Хост — ИИ-приложение, с которым работает человек: Claude, Cursor, VS Code. Клиент — часть хоста, которая держит связь с одним сервером; хост создаёт по клиенту на каждый подключённый сервер. Сервер — программа, которая предлагает инструменты, ресурсы и шаблоны запросов.

MCP-клиент, локальный и удалённый серверНа компьютере пользователя находится хост с двумя клиентами. Клиент А запускает локальный сервер и обменивается с ним через stdio. Клиент Б обращается к удалённому серверу в интернете по HTTPS; удалённый сервер принимает токены сервера авторизации OAuth 2.1. Компьютер пользователя ХостClaude, Cursor, VS Code… Клиент Азапускает процесс Клиент Бзнает адрес сервера Локальныйсервер stdio Интернет Удалённый серверhttps://example.ru/mcp Сервер авторизациивыдаёт токены OAuth 2.1 HTTPS: POST /mcp + токен проверка токена
Локальный сервер работает на компьютере пользователя и общается с клиентом через stdio. Удалённый доступен по адресу HTTPS, а доступ к закрытым данным даёт сервер авторизации.

Устройство протокола — на странице «Архитектура», о сервере простыми словами — на странице «MCP-сервер».

Что делает клиент#

  1. Подключается. Для локального сервера запускает программу по команде из настроек, для удалённого — обращается по адресу.
  2. Узнаёт возможности. Вызывает server/discover и получает версии протокола, возможности и сведения о сервере, затем списки инструментов, ресурсов и шаблонов.
  3. Передаёт их модели. Описания инструментов попадают в контекст модели, и она решает, что вызвать.
  4. Спрашивает согласие. Хост обязан получить согласие пользователя на вызов инструмента; многие клиенты позволяют разрешить вызов один раз или навсегда.
  5. Отправляет вызов. С ревизии 2026-07-28 каждый запрос сам несёт версию протокола и возможности клиента в поле _meta: рукопожатия initialize больше нет.
  6. Проводит вход. Если удалённый сервер закрыт, клиент находит его сервер авторизации и открывает вход в браузере (авторизация).

Какие программы бывают клиентами#

Таблица: 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, если ответ готовится по частям.

Вызов инструмента по Streamable HTTP, ревизия 2026-07-28
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 ключ другой. Готовые примеры для каждого клиента — в разделе «Подключение» документации, готовые серверы — в каталоге.