# Добавление серверов (/ru/docs/mcp-servers/adding-servers)

MCP-сервер либо доступен по HTTP, либо это программа, которую Echolot запускает на вашем Mac и с которой общается по
stdio. Вы можете ввести сервер сами или импортировать те, о которых уже знает другое приложение.

## Добавление сервера [#adding-a-server]

В заголовке **Серверы** боковой панели нажмите **+** и выберите **Добавить MCP-сервер…**. На пустой странице
«MCP-серверы» то же делает кнопка **Добавить MCP-сервер…**.

<Shot id="mcp-add-server" alt="Лист «Добавить MCP-сервер» для сервера GitHub с открытым меню «Транспорт»: «Локальная команда (stdio)» или «HTTP (Streamable HTTP)»; ниже — аргументы, необязательная рабочая папка и раздел «Окружение»" />

Задайте серверу **Имя**, выберите **Транспорт**, заполните поля ниже и нажмите **Добавить**. Echolot сохраняет сервер,
выбирает его и проверяет. **Изменить…** в заголовке сервера (или в его контекстном меню) открывает тот же лист;
**Сохранить** сохраняет изменения и проверяет сервер заново. Правки можно отменить через **Правка › Отменить**.

### По HTTP [#over-http]

Выберите **HTTP (Streamable HTTP)**.

| Поле | Что в него вводить |
| --- | --- |
| **URL** | Эндпоинт сервера, например `https://demo.echolot.dev/mcp`. Эндпоинты MCP часто оканчиваются на `/mcp`. |
| **Заголовки** | Заголовки, отправляемые с каждым сообщением, например `Authorization` со значением `Bearer {{token}}`. Нажмите **Добавить**, чтобы получить строку; флажок отключает строку, не удаляя её. |
| **OAuth** | Только для серверов, которые используют вход через OAuth и чей сервер авторизации не может зарегистрировать Echolot сам. См. [Вход через OAuth](#signing-in-with-oauth). |

Серверам, которые всё ещё говорят на старом транспорте HTTP+SSE, собственная настройка не нужна: введите их URL здесь,
и Echolot перейдёт на HTTP+SSE, когда Streamable HTTP отклонён. URL, оканчивающийся на `/sse`, сначала пробуется как
HTTP+SSE.

### Как локальная команда (stdio) [#as-a-local-command-stdio]

Выберите **Локальная команда (stdio)**.

| Поле | Что в него вводить |
| --- | --- |
| **Команда** | Программа для запуска, например `npx`, `uvx`, `node` или полный путь к бинарному файлу. |
| **Аргументы** | Её аргументы через пробел, например `-y @modelcontextprotocol/server-everything`. Аргумент с пробелами берите в двойные кавычки. |
| **Рабочая папка** | Где программа запускается. Необязательно. |
| **Окружение** | Переменные окружения для программы, например `GITHUB_TOKEN` со значением `{{github_token}}`. |

Echolot запускает программу с `PATH` вашей оболочки входа, поэтому `npx`, `uvx` и инструменты, установленные через
Homebrew, nvm, mise или Volta, находятся, даже если вы открыли Echolot из Finder или Dock. Если проверка сообщает, что
шаг **Сервер запускается** не прошёл, она предлагает убедиться, что команда установлена и есть в `PATH`, или указать её
полный путь. Вывод ошибок программы находится в карточке **Сообщения**.

<Edition only="direct">
  Локальные серверы (stdio) работают в версии с прямой загрузкой. Версия из App Store не может запускать программы: она
  хранит сервер в рабочем пространстве и вместо него показывает **Запускается как локальная программа**. Версия с
  прямой загрузкой и инструмент командной строки `echolot` его запускают. MCP-серверы по HTTP работают в обеих версиях.
</Edition>

## Проверьте перед запуском [#review-before-running]

Локальный сервер, пришедший из файлов рабочего пространства (скажем, из коммита коллеги) или из импорта, на этом Mac
ещё не запускался. Echolot показывает **Проверьте перед запуском** с точными **Команда**, **Аргументы**,
**Рабочая папка** и окружением и ничего не запускает, пока вы не нажмёте **Доверять и проверить**.

Ваше одобрение относится именно к этой команде на этом Mac и никогда не записывается в рабочее пространство. Если
команда, её аргументы или её окружение изменятся, Echolot спросит снова. Серверы, которые вы добавили или изменили сами,
считаются одобренными, потому что их написали вы.

## Значения и секреты [#values-and-secrets]

В любом поле можно использовать `{{variables}}`, которые разрешаются из активного
[окружения](/docs/workspaces/environments), когда Echolot подключается. Храните токены и ключи в
[секретных переменных](/docs/workspaces/secrets) и ссылайтесь на них по имени: `Bearer {{token}}`, `{{github_token}}`.
Секретные значения остаются в Связке ключей и никогда не записываются в рабочее пространство, поэтому файл сервера
безопасно коммитить.

## Импорт серверов из других приложений [#importing-servers-from-other-apps]

Echolot читает списки MCP-серверов Claude Desktop, Claude Code, Cursor, VS Code, Windsurf и Codex.

<Edition only="direct">
  Версия с прямой загрузкой находит эти файлы сама. Когда она что-то находит, блок **Найдено на этом Mac** внизу
  боковой панели перечисляет каждое приложение с кнопкой **Импортировать**. Меню **+** тоже перечисляет их в разделе
  **Импорт из**, а **Выбрать файл конфигурации…** принимает любой другой файл. Закройте блок кнопкой **×**; импорт
  остаётся в меню **+**.
</Edition>

<Edition only="appstore">
  Версия из App Store не может сама читать файлы других приложений. В **+** › **Импорт из** выберите приложение
  (например, **Cursor…**): панель открытия файла начнёт с папки этого приложения, и вы выберете файл.
  **Выбрать файл конфигурации…** принимает любой другой файл.
</Edition>

| Приложение | Файл |
| --- | --- |
| Claude Desktop | `~/Library/Application Support/Claude/claude_desktop_config.json` |
| Claude Code | `~/.claude.json` или `.mcp.json` проекта |
| Cursor | `~/.cursor/mcp.json` |
| VS Code | `~/Library/Application Support/Code/User/mcp.json` или `.vscode/mcp.json` проекта |
| Windsurf | `~/.codeium/windsurf/mcp_config.json` |
| Codex | `~/.codex/config.toml` |

Можно также перетащить один из этих файлов на окно или выбрать его через **Файл › Импортировать…**: Echolot
распознаёт конфигурацию MCP-клиента, как и любой другой [импорт](/docs/get-started/importing).

Что делает импорт:

- Каждый сервер из файла становится сервером рабочего пространства, локальным или HTTP, как в оригинале.
- Явно записанные секреты (токен в заголовке `Authorization`, ключ в переменной окружения с секретоподобным именем)
  переносятся в секретные переменные рабочего пространства, а сервер ссылается на них по имени. В отчёте об импорте
  названы эти переменные, но не значения.
- Подстановки становятся значениями Echolot: `${env:NAME}` и `${NAME}` читают переменную окружения `NAME`, когда
  Echolot подключается, а `${input:id}` из VS Code становится переменной `{{id}}`. В отчёте сказано, какие переменные
  нужно добавить.
- `bearer_token_env_var` из Codex становится заголовком `Authorization: Bearer`, который читает эту переменную
  окружения.
- Сервер, выключенный в оригинале, импортируется, с заметкой в отчёте. Сервер, у которого нет ни команды, ни URL,
  пропускается.
- Импортированные локальные серверы ждут вас в разделе [Проверьте перед запуском](#review-before-running).

## Вход через OAuth [#signing-in-with-oauth]

Когда сервер отвечает, что ему нужен OAuth, Echolot показывает **Нужно войти** вверху страницы, с
**Сервер авторизации** и тем, как Echolot получает клиент:

| Что говорит **Клиент** | Значение |
| --- | --- |
| **Echolot регистрируется сам** | Сервер авторизации сам принимает новые клиенты. Ничего настраивать не нужно. |
| **Из настроек OAuth сервера** | Вы ввели ID клиента в разделе **OAuth** сервера. |
| **Нужен ID клиента («Изменить…»)** | Сервер авторизации не регистрирует клиентов. Зарегистрируйте его там, затем введите в **Изменить…** › **OAuth**. |

Нажмите **Войти…**. Echolot открывает ваш браузер, ждёт, пока вход вернётся на `127.0.0.1`, и снова проверяет сервер.
Токен попадает в Связку ключей, а не в рабочее пространство. Карточка тогда показывает **Вход выполнен** с сервером
авторизации, областями доступа, временем истечения токена и, если Echolot зарегистрировал себя сам, —
**Зарегистрирован Echolot**. Истёкший токен, который можно обновить, обновляется при следующем вызове.

**Выйти** забывает токен и клиент, который зарегистрировал Echolot. Сам токен остаётся действительным на сервере, пока
не истечёт.

Раздел **OAuth** на листе сервера нужен для случаев, с которыми обнаружение не справляется:

| Поле | Значение по умолчанию, если пусто |
| --- | --- |
| **ID клиента** | Регистрируется автоматически. |
| **Секрет клиента** | Нет. Используйте секретную переменную, например `{{client_secret}}`. |
| **Области доступа** | Как запрашивает сервер. |
| **URI перенаправления** | `http://127.0.0.1:<any port>/callback`. |

Оставьте раздел пустым, чтобы всё обнаруживалось само. Заголовок `Authorization` в **Заголовки** приоритетнее OAuth.

Инструмент командной строки входит через `echolot mcp sign-in`, деля элемент Связки ключей с приложением на Mac или
печатая вход как секрет для CI. См. [echolot mcp](/docs/cli/mcp).

## Когда проверка не проходит [#when-a-check-fails]

Карточка **Проблема с подключением** называет шаг, который не прошёл, и предлагает исправление:

| Шаг | Частые причины |
| --- | --- |
| **Сервер запускается** | Команда не установлена или её нет в `PATH`. Запустите её в Терминале, чтобы увидеть, почему она останавливается; её вывод ошибок находится в **Сообщения**. |
| **Сервер доступен** | По этому хосту и порту никто не слушает или путь в URL неверен (эндпоинты MCP часто `/mcp`). |
| **Авторизация** | Никто не вошёл, учётные данные не разрешены или серверу нужен заголовок `Authorization`. |
| **Отклик** | Сервер не ответил на `ping`. Он может быть занят или не соответствовать спецификации. |
| **Инструменты** | Одно или несколько определений инструментов недействительны; шаг называет их. |
