---
title: Серверы MCP
sidebar:
  order: 10
---

OCR может работать как **клиент Model Context Protocol (MCP)**. Укажите один
или несколько внешних серверов MCP, и предоставляемые ими инструменты станут
доступны агенту ревью наряду со [встроенными инструментами](../tools/), такими
как `file_read` и `code_search`.

## Когда использовать MCP

Подключайте сервер MCP, если ревьюеру полезен контекст за пределами diff:

- **Поиск задач / тикетов** — агент может получить связанную задачу Jira или
  GitHub и проверить, соответствует ли изменение заявленным требованиям.
- **Документация / база знаний** — загрузить внутреннюю документацию API или
  стандарты программирования, чтобы комментарии ссылались на действующие
  правила организации.
- **Пользовательский анализ** — предоставить линтер, валидатор схем или средство
  проверки зависимостей как инструмент, который ревьюер может вызвать по мере
  необходимости.

Если требуется только читать репозиторий, встроенные инструменты уже
обеспечивают это. MCP предназначен для доступа за пределы рабочей копии.

## Конфигурация

#### Добавление сервера MCP

Команда `ocr config set` записывает эти поля неинтерактивно. Поля-массивы
(`args`, `env`, `tools`) принимают строку с JSON-массивом:

```bash
# Minimal: just a command
ocr config set mcp_servers.docs.command npx

# Arguments
ocr config set mcp_servers.docs.args '["-y", "@acme/docs-mcp-server"]'

# Restrict which tools are exposed to the reviewer
ocr config set mcp_servers.docs.tools '["search_docs", "get_page"]'

# A setup command to run before the server starts
ocr config set mcp_servers.docs.setup "npm install -g @acme/docs-mcp-server"

# Environment variables (KEY=VALUE entries)
ocr config set mcp_servers.docs.env '["DOCS_TOKEN=secret", "DOCS_REGION=eu"]'
```

#### Удаление сервера MCP

Удалите сервер с помощью `unset`:

```bash
ocr config unset mcp_servers.docs
```

Серверы MCP находятся в ключе `mcp_servers` пользовательского файла
конфигурации (`~/.opencodereview/config.json`).

| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
| `command` | строка | ✓ | Исполняемый файл, запускающий сервер MCP (например, `npx`, `uvx` или абсолютный путь). |
| `args` | массив строк | | Аргументы, передаваемые `command`. |
| `tools` | массив строк | | Список разрешённых имён инструментов для регистрации. Пустое значение регистрирует все инструменты сервера. |
| `setup` | строка | | Команда оболочки, однократно выполняемая перед запуском сервера (например, установка зависимостей). Выполняется в корне репозитория с тайм-аутом 5 минут. |
| `env` | массив строк | | Дополнительные переменные окружения в формате `KEY=VALUE`. |

## Фильтрация инструментов

По умолчанию регистрируется каждый инструмент, объявленный сервером. Если
сервер предоставляет больше инструментов, чем нужно ревьюеру, задайте в
`tools` список разрешённых: меньшее число точных инструментов помогает агенту
сосредоточиться и сокращает расход токенов. Имена из списка, которых на самом
деле нет на сервере, пропускаются с предупреждением, поэтому опечатка выводится
в stderr, а не остаётся незаметной.

## Конфликты имён

Инструменты MCP используют одно пространство имён со встроенными инструментами.
Если сервер объявляет инструмент, имя которого совпадает со
**встроенным/зарезервированным** (`file_read`, `code_search`, `task_done` и т. д.)
или с инструментом, уже зарегистрированным другим сервером MCP, OCR
**пропускает** его и записывает предупреждение. Побеждает первая регистрация;
давайте инструментам разных серверов уникальные имена, чтобы они не терялись.

## Команда `setup`

`setup` выполняется один раз из корня репозитория перед запуском подпроцесса
сервера. Используйте её, чтобы установить или собрать сервер по необходимости:

```json
"setup": "npm install -g @acme/docs-mcp-server"
```

Для команды установлен **тайм-аут 5 минут**. Если она завершается с ненулевым
кодом, OCR записывает команду, рабочий каталог и вывод, затем пропускает этот
сервер и продолжает ревью.

## Устранение неполадок

Вся диагностика MCP выводится в **stderr** с префиксом `[ocr]`, поэтому она
никогда не загрязняет вывод `--format json` в stdout:

- `Running setup for MCP server "x": …` — выполняется команда настройки.
- `failed to start MCP server "x": …` — подпроцесс не подключился за
  30-секундный тайм-аут инициализации или `command` отсутствует в `PATH`.
- `tool "y" conflicts with built-in tool, skipping` — переименуйте инструмент
  сервера или удалите его из `tools`.
- `allowed tool "y" not found in server's tool list` — имя в `tools` не
  соответствует ни одному инструменту сервера; проверьте написание.

## См. также

- [Инструменты](../tools/) — шесть встроенных инструментов, рядом с которыми работают инструменты MCP.
- [Конфигурация](../configuration/) — полный файл конфигурации и все ключи.
- [Справочник CLI](../cli-reference/) — команда `ocr config` и флаги ревью.
