# echolot mcp (/ru/docs/cli/mcp)

`echolot mcp` работает с MCP-серверами в двух направлениях. `check` и `sign-in` обращаются к чужому серверу, как это
делает [страница «MCP-серверы»](/docs/mcp-servers). `serve` и `setup` превращают ваше рабочее пространство в
MCP-сервер, чтобы ИИ-агенты вроде Claude Code или Cursor могли перечислять, отправлять и тестировать его запросы; см.
[агентов](/docs/ai/agents).

| Подкоманда | Что делает |
| --- | --- |
| `echolot mcp check` | Подключается к MCP-серверу и перечисляет, что он предлагает; `--quality` сообщает, как модель видит его инструменты. |
| `echolot mcp sign-in` | Входит в MCP-сервер рабочего пространства, который требует OAuth. |
| `echolot mcp sign-out` | Забывает этот вход на этом Mac. |
| `echolot mcp serve` | Обслуживает рабочее пространство для агентов по MCP. |
| `echolot mcp setup` | Печатает, как подключить MCP-клиент к рабочему пространству. |

## echolot mcp check [#echolot-mcp-check]

```sh
echolot mcp check [--url <url>] [--header <header> ...] [--env <env> ...] [--verbose] [--timeout <seconds>] [--quality] [--strict] [--as <provider>] -- [<command> ...]
```

Укажите эндпоинт Streamable HTTP через `--url` или команду, которая запускает stdio-сервер, после `--`. Echolot
выясняет, говорит ли сервер на протоколе без состояния (2026-07-28) или на более раннем, с рукопожатием, и перечисляет
его инструменты, ресурсы и промпты:

```sh
echolot mcp check --url https://demo.echolot.dev/mcp
```

```text
alpenglow-mcp 1.5.0: MCP 2025-11-25 (session, initialize)
  connected in 263 ms, round trip 54 ms
  instructions: The Alpenglow demo shop from docs.echolot.dev. Read-only: search the catalog, look up products and orders.
3 tools
  search_catalog: Searches the Alpenglow catalog by text and returns matching products with price and stock.
  get_product: Returns one product by SKU, with its price, weight, rating and stock per warehouse.
  order_status: Returns an order's status, total and shipping estimate.
1 resource
  alpenglow://catalog/categories  categories
1 prompt
  pack_for_a_trip: Suggests gear for a trip.
```

Сервер stdio:

```sh
echolot mcp check -- npx -y @modelcontextprotocol/server-everything
echolot mcp check -e API_KEY=demo -- uvx some-mcp-server --flag
```

### Как модель видит инструменты [#how-a-model-sees-the-tools]

`--quality` добавляет то, что модель получила бы от сервера: сколько список инструментов стоит в контексте каждого
провайдера на каждом ходу (оценка), какие инструменты стоят больше всего и обо что модель могла бы споткнуться,
например проблемы схем и неясные или пересекающиеся описания. Это тот же отчёт, что **Как модель видит этот сервер** в
приложении; см. [инструменты и качество](/docs/mcp-servers/tools-and-quality).

```sh
echolot mcp check --url https://demo.echolot.dev/mcp --quality
```

```text
How a model sees the tools (estimates)
  Anthropic      572 tokens a turn, 0.3% of a 200k context
  OpenAI         166 tokens a turn, 0.1% of a 200k context
  Google Gemini  225 tokens a turn, 0.1% of a 200k context
  largest: search_catalog 98, get_product 66, order_status 62
Nothing a model would stumble over.
```

`--strict` делает так, что проблема (не предупреждение и не заметка) завершает команду с кодом 1 — для CI.
`--as anthropic`, `--as openai` или `--as gemini` печатает только список инструментов в том виде, в каком его получает
API этого провайдера.

| Параметр | Значение |
| --- | --- |
| `--url <url>` | Эндпоинт Streamable HTTP, например `http://127.0.0.1:3000/mcp`. |
| `-H`, `--header <header>` | Заголовок HTTP в виде `'Name: value'`, для `--url`. Можно повторять. |
| `-e`, `--env <NAME=value>` | Переменная окружения для stdio-сервера. Можно повторять. |
| `-v`, `--verbose` | Печатать каждое отправленное и полученное сообщение в стандартный поток ошибок. |
| `--timeout <seconds>` | Сколько секунд ждать каждого ответа. По умолчанию 30. |
| `--quality` | Сообщить, как модель видит инструменты: их стоимость по провайдерам, проблемы схем и описаний. |
| `--strict` | Вместе с `--quality`: завершиться с кодом 1, если есть проблема. |
| `--as <provider>` | Напечатать только список инструментов в том виде, в каком его получает API провайдера: `anthropic`, `openai` или `gemini`. |

## echolot mcp sign-in и sign-out [#echolot-mcp-sign-in-and-sign-out]

```sh
echolot mcp sign-in <server> [--workspace <workspace>] [--env <env>] [--force] [--print] [--verbose]
echolot mcp sign-out <server> [--workspace <workspace>]
```

`<server>` — это имя файла сервера в папке `mcp-servers` рабочего пространства, без `.toml`. Вход открывает ваш
браузер и ждёт перенаправления на 127.0.0.1:

```sh
echolot mcp sign-in alpenglow-mcp -w Alpenglow.echolot
```

- На Mac вход попадает в Связку ключей, общую с приложением: им пользуются и приложение, и `echolot run` на этом Mac.
- В других местах, а также с `--print`, Echolot печатает его в виде строки `ECHOLOT_SECRET_…='…'`. Храните это значение
  как секрет CI и задайте переменную там, где работает Echolot. В нём лежит токен обновления: обращайтесь с ним как с
  паролем.
- `ECHOLOT_BROWSER` называет другую команду, которой открывать страницу входа.

| Параметр | Значение |
| --- | --- |
| `-w`, `--workspace <folder>` | Папка рабочего пространства. По умолчанию — текущая папка. |
| `--env <env>` | Окружение, чьи переменные разрешают настройки сервера. |
| `--force` | Войти заново, даже если рабочий вход уже есть. |
| `--print` | Напечатать вход как переменную `ECHOLOT_SECRET_`, для CI. |
| `-v`, `--verbose` | Печатать каждый шаг входа в стандартный поток ошибок. |

`sign-out` удаляет вход из Связки ключей. Без Связки ключей забывать нечего: вместо этого удалите переменную.

## echolot mcp serve [#echolot-mcp-serve]

```sh
echolot mcp serve [<workspace>] [--env <env>] [--policy <policy>] [--toolsets <toolsets>] [--http <port>] [--verbose] [--headless] [--trust-workspace-policy]
```

Обслуживает рабочее пространство для агентов по MCP. Агенты перечисляют, читают, отправляют и запускают его запросы,
запрашивают ответы по дескриптору, а также создают и изменяют запросы — теми же инструментами, что и приложение.
Добавьте его в клиент как stdio-сервер, команда которого:

```sh
echolot mcp serve /path/to/Alpenglow.echolot
```

**С открытым приложением.** Когда приложение Echolot держит рабочее пространство открытым и пускает агентов
(**Настройки › Агенты**), клиент перенаправляется в приложение. Тогда приложение просит вас одобрить то, что требует
одобрения, и вы видите, что делает агент. `--headless` всё равно обслуживает само по себе.

**Само по себе.** Без приложения спросить некого, поэтому то, о чём политика спросила бы, отклоняется:

| Политика | Что выполняется |
| --- | --- |
| `standard` (по умолчанию) | Чтение и безопасные отправки (например, `GET`). Прочие отправки, неизвестные рабочему пространству хосты и изменения рабочего пространства отклоняются. |
| `readonly` | Только чтение. |
| `permissive` | Отправки и изменения рабочего пространства. Удаление отклоняется, как и неизвестные рабочему пространству хосты и отправки в защищённые окружения. |

Секреты берутся из переменных `ECHOLOT_SECRET_` и Связки ключей этого Mac и никогда не доходят до агента. В режиме
headless сервер выполняет только те скрипты, которые были в рабочем пространстве на момент запуска.

**Собственные правила рабочего пространства.** Раздел `[agents]` в `workspace.toml` может отключить агентов для
рабочего пространства или ужесточить политику для каждого вида действий. Правила, которые смягчили бы политику,
учитываются только с `--trust-workspace-policy`; без него Echolot сообщает, какие из них он проигнорировал. Новый хост
и защищённое окружение никогда не разрешаются безоговорочно. Ключи описаны в
[файлах рабочего пространства](/docs/reference/workspace-files#agents).

**Наборы инструментов.** `requests` предлагается всегда. `--toolsets` добавляет группы через запятую или `all`:

| Набор | Инструменты для |
| --- | --- |
| `requests` | Перечисления, чтения, создания и отправки запросов; ответов, истории, GraphQL, работающих моков. Всегда включён. |
| `flows` | Запуска сценариев, предложенных агентам, и ответов на их вопросы. Включён по умолчанию. |
| `workspace` | Создания, переименования, перемещения, дублирования и удаления папок и запросов; авторизации папок; переменных рабочего пространства; сохранения собранных данных в файлы. |
| `environments` | Создания, изменения и удаления окружений. |
| `specs` | Чтения, записи и проверки линтером спецификаций OpenAPI; связывания с ними папок и применения изменений. |
| `mocks` | Создания, изменения и удаления мок-серверов и их маршрутов с тестовыми данными; запросов из маршрутов; сохранения ответов как примеров. |
| `mcp-servers` | Добавления, изменения, проверки и удаления MCP-серверов. |
| `history` | Открытия, сравнения и удаления прошлых обменов. |
| `flow-editing` | Чтения, рисования и удаления сценариев; `try_flow` один раз запускает сценарий после одобрения человеком (в режиме headless некому одобрить, поэтому он отклоняется). |

Политика агентов, прокси, сертификаты, настройки авторизации и скрипты никогда не предлагаются агентам, ни в одном
наборе.

**По HTTP.** `--http <port>` обслуживает Streamable HTTP на 127.0.0.1 вместо stdio (`0` выбирает свободный порт).
Поскольку до порта loopback может добраться всё на этом Mac, клиенты должны отправлять bearer-токен, который печатает
Echolot:

```sh
echolot mcp serve Alpenglow.echolot --http 0 --policy readonly
```

```text
Echolot MCP server for Alpenglow at http://127.0.0.1:52817/mcp (policy readonly)
Clients send the header  Authorization: Bearer 6f1c…
```

Задайте `ECHOLOT_MCP_TOKEN`, чтобы выбрать токен самостоятельно.

| Параметр | Значение |
| --- | --- |
| `--env <env>` | Окружение, которое используют вызовы, не назвавшие своего. |
| `--policy <policy>` | `standard`, `readonly` или `permissive`. По умолчанию `standard`. |
| `--toolsets <list>` | Группы инструментов для предложения, через запятую, или `all`. По умолчанию `requests,flows`. |
| `--http <port>` | Обслуживать Streamable HTTP на 127.0.0.1 на этом порту (`0` выбирает порт) вместо stdio. |
| `-v`, `--verbose` | Печатать каждое сообщение в стандартный поток ошибок. |
| `--headless` | Обслуживать само по себе, даже если приложение Echolot держит это рабочее пространство открытым. |
| `--trust-workspace-policy` | Позволить правилам `[agents]` рабочего пространства не только ужесточать политику, но и смягчать её. |

## echolot mcp setup [#echolot-mcp-setup]

```sh
echolot mcp setup <client> [--workspace <workspace>] [--name <name>] [--version <version>]
```

Печатает то, что нужно клиенту, чтобы запустить `echolot mcp serve` для рабочего пространства. Ничего не меняет;
скопируйте вывод туда, где его читает клиент. Команда в выводе — это путь к тому `echolot`, который вы запустили.

| Клиент | Печатает |
| --- | --- |
| `claude-code` | Команду `claude mcp add --scope user …`, которую нужно выполнить. |
| `claude-desktop` | Запись `mcpServers` для конфигурации Claude Desktop. |
| `cursor` | Запись `mcpServers` для `mcp.json` Cursor. |
| `vscode` | Запись `servers` для `mcp.json` VS Code. |
| `codex` | Таблицу `[mcp_servers.…]` для `config.toml` Codex. |
| `mcpb` | `manifest.json` расширения Claude Desktop, чей `server/echolot` — этот бинарный файл. Без `--workspace` расширение спрашивает рабочее пространство при установке. |

```sh
echolot mcp setup claude-code -w Alpenglow.echolot
```

```text
claude mcp add --scope user echolot-alpenglow -- /usr/local/bin/echolot mcp serve /Users/you/Alpenglow.echolot
```

```sh
echolot mcp setup cursor -w Alpenglow.echolot
```

```json
{
  "mcpServers" : {
    "echolot-alpenglow" : {
      "args" : ["mcp", "serve", "/Users/you/Alpenglow.echolot"],
      "command" : "/usr/local/bin/echolot"
    }
  }
}
```

| Параметр | Значение |
| --- | --- |
| `-w`, `--workspace <folder>` | Папка рабочего пространства; MCPB спрашивает её, если параметр опущен. |
| `--name <name>` | Имя сервера в клиенте. По умолчанию `echolot-<workspace>`. |
| `--version <version>` | Версия, записываемая в манифест MCPB. По умолчанию — версия этого инструмента. |

**Настройки › Агенты** в приложении настраивают для вас те же клиенты; см. [агентов](/docs/ai/agents).

## Коды выхода [#exit-codes]

| Код | Когда |
| --- | --- |
| `0` | Подключились, вошли, обслуживали до остановки или напечатали. |
| `1` | `check` не смог подключиться или проверка не прошла, `--quality --strict` нашёл проблему либо `sign-in` не удался или сервер не запросил OAuth. |
| `64` | Неверный параметр, неизвестная политика или клиент, неизвестное окружение или рабочее пространство, раздел `[agents]` которого отключает агентов. |
