Перейти к содержимому
20 мин чтения

Как подключить MCP-сервер к Hermes Agent: пошаговая настройка и ограничение прав

hermes agentmcpнастройкаинтеграциибезопасность ai-агентовai-агенты

Коротко. MCP-сервер — это отдельная программа или веб-сервис, который отдаёт агенту готовые инструменты: читать файлы, искать по документации, работать с задачами в трекере. В Hermes Agent каждый такой сервер — одна запись в блоке mcp_servers файла ~/.hermes/config.yaml. Записи бывают двух видов: локальная (Hermes сам запускает программу: ключи command и args) и удалённая (адрес url). Добавить сервер можно командой hermes mcp add <имя> или прямо в файле, проверить — hermes mcp test <имя>, применить — новой сессией или командой /reload-mcp. Готовые серверы лежат в каталоге: hermes mcp catalog показывает 66 записей, ставится любая одной командой hermes mcp install <имя>. Три вещи, о которые спотыкаются чаще всего. Во-первых, --args в команде hermes mcp add должен стоять последним: всё, что после него, уходит в запускаемую программу. Во-вторых, по умолчанию сервер получает полное доверие (trust: full), и Hermes не спрашивает подтверждения перед вызовом его инструментов, в том числе тех, что меняют данные. Спрашивать начинает только при trust: untrusted. В-третьих, одна неверная отступом строка в config.yaml отключает все настройки сразу, и серверы пропадают вместе с остальным. Ниже порядок действий с реальными ответами программы.

На чём это проверено

Команды, ключи конфигурации и значения по умолчанию сверены с документацией и исходным кодом Hermes Agent v0.23.1. Это последний стабильный релиз на момент проверки, 10 ноября 2026 года; версия установленного агента показывает команда hermes --version.

  • Проверено вживую в изолированной копии агента: домашняя папка во временном каталоге, никаких боевых ключей и данных. Подключал официальный сервер файловой системы @modelcontextprotocol/server-filesystem (версия пакета 1.0.0), каталожный сервер deepwiki и два учебных сервера на Python SDK MCP: локальный и HTTP с токеном. Ответы Hermes ниже взяты из этих запусков. Пути и имена пользователя заменены нейтральными.
  • Проверено по документации и коду, но не запускалось: вход через OAuth (hermes mcp login), каталожные записи, которым нужны ключи или аккаунты (Notion, Linear, Stripe и другие), и отказ от подтверждений на серверах с полным доверием. Такие места помечены словами «по документации».
  • Нейросеть в проверке не участвовала. Я проверял, что клиент Hermes подключает сервер, регистрирует инструменты и вызывает их. Как конкретная модель будет выбирать эти инструменты в диалоге, зависит от модели, и этого здесь не измерялось.

Hermes обновляется часто, поэтому перед правкой боевой конфигурации сверьтесь со справочником по настройке MCP для вашей версии.

Что понадобится

Статья предполагает, что агент уже стоит и отвечает: провайдер подключён, модель выбрана. Если нет, сначала пройдите установку Hermes Agent и первичную настройку: ключи, модель и мессенджер. Версию проверяем так:

hermes --version
Hermes Agent v0.23.1 (2026.9.24) · stable · local 3b4215785882

Дальше по ситуации:

  • для локального сервера на Node.js нужен либо запускаемый файл сервера, либо пакет, который скачает npx. Для npx-серверов Hermes использует собственную управляемую копию Node в ~/.hermes/tools/. На минимальной установке Linux ей может не хватить системной библиотеки libatomic1: в моём прогоне установка упёрлась именно в это, и ниже в таблице сбоев есть, как выглядит ошибка и что делать;
  • для удалённого сервера нужен его адрес и способ входа: токен в заголовке или OAuth;
  • права на запись в ~/.hermes/: там лежат config.yaml (настройки) и .env (секреты).

Что такое MCP-сервер с точки зрения агента

MCP (Model Context Protocol) — открытый протокол, по которому программа сообщает агенту, что она умеет. Описание протокола есть на modelcontextprotocol.io. Сервер объявляет инструменты (tools): «прочитать файл», «найти задачи». По желанию он отдаёт ещё ресурсы (данные, которые можно прочитать) и шаблоны запросов (prompts). Hermes выступает клиентом: на старте сессии подключается ко всем серверам из mcp_servers, запрашивает список и регистрирует их инструменты наравне со встроенными. Дальше агент вызывает их сам, когда они нужны для задачи.

Подключение бывает двух видов:

  • Локальное (stdio). Hermes запускает программу командой из command и общается с ней через стандартные потоки. Так работают пакеты вроде @modelcontextprotocol/server-filesystem.
  • Удалённое (HTTP). Hermes обращается к сервису по адресу url. По умолчанию это потоковый HTTP; для серверов, которые умеют только SSE, в записи указывается transport: sse.

Шаг 1. Самый короткий путь: каталог готовых серверов

В репозитории Hermes лежит каталог серверов, которые проверили и приняли сами разработчики проекта. Они выключены по умолчанию: ставьте только то, что нужно. Список выводится одной командой:

hermes mcp catalog

Ответ начинается строкой MCP Catalog + configured servers: и дальше идут строки «имя, состояние, описание». В v0.23.1 в каталоге 66 записей, среди них Notion, Linear, Stripe, Airtable, Asana, ClickUp, Monday, Intercom, Calendly, Atlassian, Sentry, Supabase, Figma, Grafana, GitLab, WordPress.com и официальный сервер n8n. Пример в документации показывает запись github, но в каталоге v0.23.1 её нет (есть gitlab), так что ориентируйтесь на вывод команды, а не на примеры из текста.

Самый простой для пробы сервер — deepwiki: он отвечает на вопросы по публичным репозиториям GitHub и не требует ни аккаунта, ни ключей. Ставим:

hermes mcp install deepwiki

Реальный ответ:

  Installing MCP 'deepwiki'
  Ask questions about any public GitHub repo (Devin's DeepWiki).
  Source: https://docs.devin.ai/work-with-devin/deepwiki-mcp

  Probing 'deepwiki' for available tools...

  ✓ Installed 'deepwiki' (enabled). Start a new Hermes session to load its tools.

  No account or credentials needed — tools are available as soon as the
  session restarts.

Команда сама подключилась к серверу, проверила его и дописала запись в config.yaml:

mcp_servers:
  deepwiki:
    url: https://mcp.deepwiki.com/mcp
    enabled: true

Проверка соединения:

hermes mcp test deepwiki

  Testing 'deepwiki'...
  Transport: HTTP → https://mcp.deepwiki.com/mcp
  Auth: none
  ✓ Connected (3757ms)
  ✓ Tools discovered: 3

    ask_wiki_question     Ask any question about a GitHub repository's codebase a...
    read_wiki_contents    View documentation about a GitHub repository.
    read_wiki_structure   Get a list of documentation topics for a GitHub reposit...

Что важно знать про каталог:

  • Установка запускает чужой код. Запись из каталога может клонировать репозиторий и выполнять команды установки (pip install, npm install). По документации, перед установкой стоит прочитать манифест записи в папке optional-mcps/<имя>/manifest.yaml репозитория: поле source (откуда берётся код), блок install.bootstrap (что будет выполнено) и transport.command (что будет запускаться).
  • Удалённый сервер — это чужая сторона. Всё, что агент отправит в deepwiki или в Notion, уходит на серверы поставщика. Для закрытых данных заранее решите, допустимо ли это.
  • Записи с аккаунтом требуют ключ (Hermes спросит его при установке и сохранит в ~/.hermes/.env) или вход через OAuth. По документации, после ввода учётных данных установщик показывает список инструментов сервера с флажками, и в конфиг попадают только отмеченные. Эту часть я не запускал.

Теперь о том, чего в каталоге нет. Среди 66 записей нет ни Битрикс24, ни amoCRM, ни 1С, ни Яндекс-сервисов, ни Telegram: я проверил имена всех записей в репозитории на теге v0.23.1. Для таких систем остаются два пути: найти готовый сервер у самого вендора или написать тонкий сервер над API вашей системы. Второе — наша работа: подключим к агенту 1С, Битрикс24 или CRM собственным MCP-сервером с урезанным набором инструментов. Если вы делаете подключение сами, шаги ниже подойдут и для чужих серверов, и для своих.

Шаг 2. Подключаем локальный сервер (stdio)

Возьмём официальный сервер файловой системы и ограничим его одной папкой: агент сможет читать и менять файлы только внутри неё. Первый вариант — командой:

hermes mcp add files --command npx --args -y @modelcontextprotocol/server-filesystem /home/user/documents

Второй — записью в config.yaml (этот пример взят из документации Hermes):

mcp_servers:
  files:
    command: "npx"
    args: ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/documents"]

Порядок параметров в команде имеет значение. По описанию в коде, --args «должен быть последним»: всё, что стоит после него, команда считает аргументами запускаемой программы. Я проверил это: после --args лишний -y без изменений ушёл в запускаемую программу (журнал mcp-stderr.log показал /usr/bin/node: bad option: -y). Поэтому --connect-timeout 120 и --env КЛЮЧ=ЗНАЧЕНИЕ ставьте перед --args, а не после.

Честная оговорка по моей проверке: в среде, где я запускал сервер, не хватало системной библиотеки для управляемого Node, поэтому тот же пакет запускался напрямую через системный node, а не через npx. Список инструментов от способа запуска не зависит. Ответ команды выглядел так (пути сокращены):

  Connecting to 'files'...

  ✓ Connected! Found 14 tool(s) from 'files':

    read_file                 Read the complete contents of a file as text. DEPRECATED: Us...
    read_text_file            Read the complete contents of a file from the file system as...
    read_media_file           Read a file and return it as a base64-encoded content block ...
    read_multiple_files       Read the contents of multiple files simultaneously. This is ...
    write_file                Create a new file or completely overwrite an existing file w...
    edit_file                 Make line-based edits to a text file. Each edit replaces exa...
    create_directory          Create a new directory or ensure a directory exists. Can cre...
    list_directory            Get a detailed listing of all files and directories in a spe...
    list_directory_with_sizes Get a detailed listing of all files and directories in a spe...
    directory_tree            Get a recursive tree view of files and directories as a JSON...
    move_file                 Move or rename files and directories. Can move files between...
    search_files              Recursively search for files and directories matching a patt...
    get_file_info             Retrieve detailed metadata about a file or directory. Return...
    list_allowed_directories  Returns the list of directories that this server is allowed ...

  Enable all 14 tools? [Y/n/select]:
  ✓ Saved 'files' to /home/<пользователь>/.hermes/config.yaml (14/14 tools enabled)
  Start a new session to use these tools, or run /reload-mcp to load them into open sessions.

Что здесь произошло. Команда не просто записала настройку: сначала она запустила сервер и подключилась к нему, получила список из 14 инструментов и только потом спросила, какие включить. Y включает все, select открывает список с флажками. Обратите внимание на состав: среди 14 инструментов четыре меняют файлы (write_file, edit_file, create_directory, move_file). Как оставить только чтение, показано в шаге 5. Если сервер не подключился, команда скажет об ошибке и спросит, сохранять ли запись всё равно.

Если пакету нужен ключ, передайте его в блоке env и не вписывайте значение в конфиг, а сошлитесь на переменную из ~/.hermes/.env:

mcp_servers:
  tracker:
    command: "npx"
    args: ["-y", "@modelcontextprotocol/server-github"]
    env:
      GITHUB_PERSONAL_ACCESS_TOKEN: "${GITHUB_TOKEN}"

Пример с токеном GitHub тоже из документации: я его не запускал, но подстановку ${ИМЯ} проверил на других записях (см. шаг 3).

Локальный сервер не видит остальные ваши секреты. Hermes передаёт запускаемой программе не всё окружение, а короткий безопасный набор (в коде v0.23.1: PATH, HOME, USER, LANG, LC_ALL, TERM, SHELL, TMPDIR, переменные XDG_*), путь к домашней папке самого Hermes (HERMES_HOME) и то, что вы явно указали в env. Я проверил это на учебном сервере, который просто возвращает имена переменных. В оболочке были заданы OPENAI_API_KEY и ещё одна секретная переменная, а сервер увидел только: HERMES_HOME, HOME, LC_CTYPE, PATH, REPORTS_API_KEY, SHELL, TERM. Ключ REPORTS_API_KEY — это единственное значение, которое я передал в env. Практический вывод: ключ, нужный серверу, надо передать явно, а чужой сервер не выкрадет ключи из вашей оболочки.

Шаг 3. Подключаем удалённый сервер (HTTP) и прячем токен

Для удалённого сервера нужен адрес и, как правило, токен. Правильная запись держит токен отдельно от конфига:

mcp_servers:
  crm:
    url: "https://mcp.example.com/mcp"
    headers:
      Authorization: "Bearer ${CRM_MCP_TOKEN}"

Сам токен кладём в ~/.hermes/.env. Команда hermes config set умеет это: имена в верхнем регистре она записывает именно туда.

hermes config set CRM_MCP_TOKEN <значение>
✓ Set CRM_MCP_TOKEN in /home/<пользователь>/.hermes/.env

Учтите, что значение в командной строке остаётся в истории оболочки. Чтобы этого избежать, впишите строку CRM_MCP_TOKEN=... в ~/.hermes/.env редактором. Для всего, кроме локального адреса, используйте https://, иначе токен пойдёт по сети открытым текстом.

Проверка. У меня учебный HTTP-сервер, который отвечает только на запросы с правильным токеном. С токеном:

hermes mcp test crm

  Testing 'crm'...
  Transport: HTTP → http://127.0.0.1:8765/mcp
    Authorization: ***
  ✓ Connected (1604ms)
  ✓ Tools discovered: 1

    lead_count    Number of open leads in the demo CRM.

Hermes маскирует значение заголовка (***), так что вывод можно показывать коллегам. Теперь две типичные ошибки, обе воспроизведены. Если переменной нет в .env, команда падает мгновенно и понятно:

  ✗ Connection failed (0.1s): MCP server 'crm': ${CRM_MCP_TOKEN} in url/headers is not set in this profile's .env or secret source

Если токен неверный, сервер отвечает 401, и Hermes сообщает об этом после перебора обоих транспортов (у меня это заняло 9 секунд):

  ✗ Connection failed (9.1s): MCP server 'crm': both Streamable HTTP and SSE transports failed
  (Streamable HTTP: Server returned an error response (HTTP 401 from POST http://127.0.0.1:8765/mcp: unauthorized);
   SSE: Client error '401 Unauthorized' ...). Check the URL points at an MCP endpoint,
  or pin `transport: sse` if the server is SSE-only.

Подсказка в конце — не про токен: она относится к другой причине (адрес не тот или сервер говорит только по SSE). Читайте код в скобках: 401 значит «токен не принят», а не «транспорт не тот».

Вход через OAuth (по документации; не запускалось). Для серверов, где вместо токена нужна авторизация в браузере, в запись добавляется auth: oauth, а вход выполняется командой hermes mcp login <имя>. На машине без браузера используйте hermes mcp login <имя> --flow device (вход по коду на другом устройстве). Токены лежат в ~/.hermes/mcp-tokens/, по одному файлу на сервер. Если токен умер, сервер «паркуется» с предупреждением в журнале, и входить заново нужно вручную: фоновые процессы браузер не открывают. Для повторного входа есть hermes mcp reauth <имя> и hermes mcp reauth --all.

Шаг 4. Как агент видит инструменты и когда изменения вступают в силу

Подключённые серверы Hermes читает при старте сессии. Поэтому правило простое: добавили или поправили сервер — начните новую сессию или выполните в открытой команду /reload-mcp. Её можно вводить и в терминале, и в мессенджере. Если запущен шлюз для мессенджеров (hermes gateway run), он, по документации, сам следит за config.yaml: удалённую запись или enabled: false он отключает примерно за минуту, а новую подключает. Сервер, который не подключился с первого раза, шлюз пробует снова с нарастающей паузой: 30 секунд, потом вдвое больше, до 10 минут. После исправления причины перезапуск не требуется.

Каждый инструмент попадает в реестр агента под составным именем. В живой проверке они выглядели так:

mcp__files__read_text_file   ->  набор инструментов mcp-files
mcp__files__list_directory   ->  набор инструментов mcp-files
mcp__files__search_files     ->  набор инструментов mcp-files

Имя собирается как mcp__<сервер>__<инструмент> (двойное подчёркивание; недопустимые символы заменяются на _, а слишком длинное имя укорачивается хешем до 64 знаков), а набор называется mcp-<сервер>. В документации встречается упрощённая запись mcp_<сервер>_; в реестре v0.23.1 имена другие. Это важно для ключа tool_costs (учёт стоимости вызовов): в нём нужно указывать родное имя инструмента, как его объявляет сервер, без префикса.

Кроме инструментов, Hermes регистрирует для сервера служебные обёртки list_resources, read_resource, list_prompts и get_prompt, но только если сервер умеет ресурсы и шаблоны. В моём учебном сервере с двумя инструментами в реестре оказалось шесть имён: два инструмента и четыре обёртки. Лишнее отключается ключами tools.resources: false и tools.prompts: false.

Шаг 5. Урезаем права: фильтры, подтверждения и изоляция окружения

Сервер на 14 инструментов — это 14 действий, которые агент вправе совершить, в том числе по ошибке или по чужой подсказке, спрятанной в прочитанном файле. Поэтому после подключения оставьте только нужное. В Hermes для этого три уровня.

Уровень 1. Список инструментов

Ключи tools.include (оставить только перечисленные) и tools.exclude (убрать перечисленные) принимают точные имена и шаблоны вроде read_*. Если заданы оба, побеждает include. Пустой include: [] не регистрирует ничего. Вот сервер файловой системы, урезанный до чтения:

mcp_servers:
  files:
    command: "npx"
    args: ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/documents"]
    tools:
      include:
        - read_text_file
        - list_directory
        - search_files
      resources: false
      prompts: false

Результат в моей проверке: в реестр попали ровно три инструмента (mcp__files__read_text_file, mcp__files__list_directory, mcp__files__search_files), а список серверов показывает счётчик выбранных:

hermes mcp list

  Name             Transport                      Tools        Status
  ──────────────── ────────────────────────────── ──────────── ──────────
  files            /usr/bin/node /home/user/s...  3 selected   ✓ enabled
  deepwiki         https://mcp.deepwiki.com/mcp   all          ✓ enabled

В строке files виден системный node, потому что в моей проверке сервер запускался напрямую (см. шаг 2); при запуске через npx там будет он. Имя сервера и путь в примере заменены.

Попытка вызвать отключённый инструмент заканчивается так:

{"error": "Unknown tool: mcp__files__write_file"}

А когда агент пытается прочитать файл вне разрешённой папки, отказывает уже сам сервер: Access denied - path outside allowed directories. Два слоя защиты работают независимо: Hermes не показывает агенту лишние инструменты, а сервер не выпускает его за пределы папки. Для интерактивного выбора есть команда hermes mcp configure <имя> (ей нужен настоящий терминал).

Ловушка. hermes mcp test <имя> перечисляет все инструменты сервера, даже те, что вы убрали фильтром: она проверяет сервер, а не то, что увидит агент. У меня после exclude: [delete_note] тест по-прежнему показывал три инструмента, хотя агенту было доступно два. Что реально включено, смотрите в колонке Tools команды hermes mcp list (3 selected для include, -1 excluded для exclude).

Уровень 2. Подтверждение перед действием

Ключ trust принимает два значения. По документации, full стоит по умолчанию: Hermes не спрашивает разрешения на вызов инструментов этого сервера. Значение untrusted включает подтверждение перед каждым вызовом любого инструмента, который сервер не пометил как «только чтение» (аннотация readOnlyHint: true).

mcp_servers:
  notes:
    command: "/usr/bin/python3"
    args: ["/opt/mcp/notes_server.py"]
    trust: untrusted

Что происходит при вызове, реальный вывод:

[o]nce | [s]ession | [a]lways | [d]eny — Choice [o/s/a/D]:
✗ Denied
{"error": "The user did not approve running write-capable MCP tool 'read_note' on untrusted server 'notes'. The command was NOT run. Do not retry without explicit user direction."}

Варианты ответа: один раз, до конца чата, всегда (запись попадает в command_allowlist в виде mcp:<сервер>/<инструмент>) или отказ. Каждый относится к одному инструменту, а не ко всему серверу. Обратите внимание: read_note — безобидное чтение, но мой учебный сервер не объявил его «только для чтения», и Hermes счёл его записывающим. С реальными серверами это встретится часто: если у инструмента нет аннотации, вопрос будет задан даже про чтение. Так устроен режим: без явной пометки «только чтение» Hermes считает инструмент способным менять данные. И ещё два предупреждения из документации: режимы /yolo и approvals.mode: off пропускают этот запрос, и для серверов, которые вы не контролируете полностью, untrusted стоит ставить всегда.

Уровень 3. Окружение процесса

Это то, о чём шла речь в шаге 2: локальный сервер получает только безопасный минимум переменных и то, что вы перечислили в env. Секреты, которых сервер не должен видеть, просто не передавайте.

Для серверов, которые тратят деньги или кредиты при каждом вызове (генерация картинок и видео, платные API), в документации есть отдельная пара ключей: tool_costs (сколько стоит вызов) и spend_limit (лимит на один чат). Они работают поверх trust и спрашивают подтверждение, когда вызов уводит чат за лимит. Эту часть я не запускал.

Шаг 6. Диагностика: куда смотреть, если что-то не работает

Порядок проверки от простого к сложному:

  1. hermes mcp list — какие серверы вообще прочитаны из конфига, включены ли они и сколько инструментов выбрано.
  2. hermes mcp test <имя> — живое подключение: транспорт, способ входа, время ответа, список инструментов или причина отказа.
  3. hermes logs errors — только предупреждения и ошибки. Фильтры: hermes logs --level WARNING --since 1h. Подключение, которое не удалось, выглядит там так:
    WARNING tools.mcp_tool: MCP server 'crm' failed initial connection after 3 attempts, parking until a reconnect is requested (state: connecting → parked): ...
    Hermes делает три попытки, после чего «паркует» сервер: он остаётся в списке, но инструментов не отдаёт, пока причина не будет устранена.
  4. hermes logs mcp — вывод самих локальных серверов (их stderr, файл ~/.hermes/logs/mcp-stderr.log). Каждый запуск отмечен строкой ===== starting MCP server '<имя>' =====. Если сервер падает при старте, причина будет здесь: например, в моей проверке неверный параметр дал строку /usr/bin/node: bad option: -y.

По документации, при старте Hermes пишет и итоговую сводку по серверам: сколько инструментов зарегистрировано и какие серверы не поднялись с причиной. Этот формат сводки я проверил только по коду.

Частые сбои и что с ними делать

Что видитеПричинаЧто делать
Connecting to MCP server '…' timed out after Ns (bounded by connect_timeout)Сервер не успел подключиться. По умолчанию на подключение даётся 60 секунд; первый запуск npx ещё и скачивает пакет.Увеличить: --connect-timeout 120 в команде или connect_timeout: 120 в записи. Заодно убедиться, что команда запускается руками.
error while loading shared libraries: libatomic.so.1 в журнале при попытке запустить npx-серверУправляемой копии Node не хватает системной библиотеки (на минимальной установке Linux).От имени root: apt-get install -y libatomic1. Hermes сам подсказывает эту команду в тексте ошибки.
HTTP 401 … both Streamable HTTP and SSE transports failedТокен не принят сервером: пустой, просроченный или не тот.Проверить значение в ~/.hermes/.env, выпустить новый токен. Для OAuth-серверов — hermes mcp login <имя>.
${ИМЯ} in url/headers is not set in this profile's .envВ записи есть подстановка, а переменной нет в .env того профиля, с которым запущен Hermes.hermes config set ИМЯ значение или вписать строку в .env.
Your settings file … has a formatting error at line N. Hermes is running on default settings until it is fixedОшибка отступов или синтаксиса в config.yaml. Весь файл игнорируется, поэтому пропадают не только MCP-серверы, но и остальные настройки.hermes config edit, исправить строку N, затем hermes config check. Копия испорченного файла сохраняется в ~/.hermes/backups/config/.
Сервер подключается, но агент его инструментов не видитСессия началась до добавления сервера, либо инструмент убран фильтром include или exclude./reload-mcp или новая сессия; посмотреть колонку Tools в hermes mcp list.
Unknown tool: mcp__…Инструмента нет в реестре: он отфильтрован или сервер не подключён.Проверить фильтры и hermes mcp test <имя>.
parking until a reconnect is requestedТри попытки подключиться не удались, сервер припаркован.Устранить причину по тексту после двоеточия; шлюз сам повторит попытку по графику (30 секунд, дальше вдвое дольше, до 10 минут), в открытой сессии можно выполнить /reload-mcp.

Когда не стоит настраивать самому

Подключить сервер файловой системы или документации можно за полчаса, и ошибки там дёшевы. Иначе обстоит дело, когда агент получает доступ к CRM, почте, 1С, платёжным или складским данным. Здесь важны не команды, а вопросы, на которые в статье нет готового ответа. Какие из инструментов сервера агенту действительно нужны? Что он может изменить необратимо? Куда уходят данные, если сервер внешний? Какие действия должны требовать подтверждения человека, а какие нет? Как узнать постфактум, что именно агент вызвал? Если цена ошибки высока или времени на разбор нет, проверим доступы вашего агента, ограничим инструменты и настроим журнал действий. До этого момента всё, что описано выше, вы можете сделать и самостоятельно: статья написана как законченная инструкция.

Частые вопросы

Чем MCP-сервер отличается от навыка?

Навык — это папка с файлом SKILL.md: текстовая инструкция, которую агент подгружает, когда она нужна. Он ничего не выполняет сам, а лишь рассказывает агенту, как действовать. MCP-сервер — работающая программа, которая даёт агенту новые действия: прочитать файл, создать задачу, спросить базу. Если нужно научить агента порядку работы, пишите навык (подробно — в статье о навыках Hermes Agent). Если нужно дать ему доступ к системе, нужен сервер.

Как отключить сервер, не удаляя его?

Поставить в записи enabled: false. Запущенный шлюз, по документации, отключит такой сервер примерно за минуту. Совсем убрать запись можно командой hermes mcp remove <имя> (алиас rm).

Сколько серверов можно подключить?

Жёсткого ограничения в документации я не нашёл, но у каждого сервера свой набор инструментов, а описания инструментов передаются модели вместе с запросом. Чем их больше, тем больше шума и расходов на каждое сообщение, и тем выше риск, что модель выберет не тот инструмент. Подключайте только нужное и урезайте списки фильтрами, как в шаге 5.

Как подключить MCP-сервер к OpenClaw?

Идея та же, но команды и ключи другие. Подробный разбор — в статье о том, как подключить MCP-сервер к OpenClaw. Если выбираете между двумя агентами, сравнение есть в статье «OpenClaw или Hermes Agent для бизнеса».

Можно ли сделать так, чтобы сам Hermes был MCP-сервером для другой программы?

Да, но это другая задача. Согласно описанию команды hermes mcp, работа Hermes в роли сервера идёт через плагин mcp-serve, а ставится он командой hermes plugins install mcp-serve. В этой статье он не разбирается, и я его не запускал.

Каталожные записи безопасны, раз их проверили разработчики?

Документация Hermes сама просит не полагаться на это: запись в каталоге означает, что её просмотрели и приняли в репозиторий, но установка всё равно выполняет команды и запускает код сервера. Читайте манифест, как описано в шаге 1, и применяйте те же фильтры и режим untrusted, что и для любого стороннего сервера.

Источники: официальная документация Hermes Agent — разделы MCP, MCP Config Reference, CLI Commands и Slash Commands; исходный код и каталог optional-mcps в репозитории проекта на теге v0.23.1; описание протокола — modelcontextprotocol.io; сервер файловой системы — репозиторий референсных серверов MCP. Проверено 10 ноября 2026 года.