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

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

Ревизия MCP 2026-07-28 · проверено 13.10.2026 · https://mcpprotocol.ru/klient-i-server/

## Три роли

В MCP три участника. [Хост](https://mcpprotocol.ru/glossary/#host) — ИИ-приложение, с которым работает человек: Claude, Cursor, VS Code. [Клиент](https://mcpprotocol.ru/glossary/#client) — часть хоста, которая держит связь с одним сервером; хост создаёт по клиенту на каждый подключённый сервер. [Сервер](https://mcpprotocol.ru/glossary/#server) — программа, которая предлагает инструменты, ресурсы и шаблоны запросов.

_Локальный сервер работает на компьютере пользователя и общается с клиентом через stdio. Удалённый доступен по адресу HTTPS, а доступ к закрытым данным даёт сервер авторизации._

Устройство протокола — на странице [«Архитектура»](https://mcpprotocol.ru/architecture/), о сервере простыми словами — на странице [«MCP-сервер»](https://mcpprotocol.ru/mcp-server/).

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

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

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

**MCP-клиенты и руководства по подключению**
| Программа | Как подключают серверы | Руководство |
|---|---|---|
| Claude для компьютера | Локальные — в файле `claude_desktop_config.json`, удалённые — в разделе «Коннекторы» | [Claude Desktop](https://mcpdocs.ru/podklyuchenie/claude-desktop/) |
| Claude Code | Командой `claude mcp add` или файлом `.mcp.json` в проекте | [Claude Code](https://mcpdocs.ru/podklyuchenie/claude-code/) |
| Cursor | Файл `.cursor/mcp.json` в проекте или `~/.cursor/mcp.json` | [Cursor](https://mcpdocs.ru/podklyuchenie/cursor/) |
| VS Code (GitHub Copilot) | Файл `.vscode/mcp.json` | [VS Code](https://mcpdocs.ru/podklyuchenie/vs-code/) |
| OpenCode | Раздел `mcp` в `opencode.json` | [OpenCode](https://mcpdocs.ru/podklyuchenie/opencode/) |
| Yandex AI Studio | MCP Hub: подключение MCP-серверов к агентам | [Яндекс](https://mcpdocs.ru/podklyuchenie/yandex/) |

Один и тот же сервер работает в любом из них. Различаются только место и формат настройки — об этом [ниже](#formats).

## Локальный или удалённый

Различия по транспорту, авторизации и назначению сведены в таблицу на странице [«MCP-сервер»](https://mcpprotocol.ru/mcp-server/#kinds). Короткое правило выбора:

- **Локальный**, если сервер работает с файлами и программами на компьютере пользователя (редактор, Blender, 1С:EDT) или если данные не должны покидать компьютер.
- **Удалённый**, если сервер открывает данные компании многим пользователям: каталог, CRM, учётную систему. Его обновляют в одном месте, а доступ дают через OAuth.

## Что такое HTTP MCP

Удалённые серверы работают по транспорту [Streamable HTTP](https://mcpprotocol.ru/glossary/#streamable-http). У сервера один адрес, обычно с окончанием `/mcp`. Клиент отправляет на него запросы POST, а сервер отвечает обычным JSON или потоком событий SSE, если ответ готовится по частям.

_Вызов инструмента по Streamable HTTP, ревизия 2026-07-28_

```http
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** с двумя адресами [устарел](https://mcpprotocol.ru/changes/). Если в инструкции к серверу указан адрес с окончанием `/sse`, это прежний транспорт.
- **Публичный сервер — только по HTTPS.** Токены и данные идут в заголовках и теле запроса.

Разбор заголовков, кодов ответа и потоков — в документации: [«Транспорты»](https://mcpdocs.ru/protocol/transports/).

## Что такое локальный MCP

Локальный сервер — программа на компьютере пользователя, которую запускает сам клиент. Обмен идёт через [stdio](https://mcpprotocol.ru/glossary/#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 ключ другой. Готовые примеры для каждого клиента — в разделе [«Подключение»](https://mcpdocs.ru/podklyuchenie/) документации, готовые серверы — в [каталоге](https://mcpprotocol.ru/katalog/).
