MCP-протокол в Hermes: подключение внешних инструментов и сервисов

MCP (Model Context Protocol) — открытый стандарт, созданный Anthropic в ноябре 2024 года, который позволяет AI-агенту Hermes подключаться к внешним инструментам и сервисам: файловой системе, GitHub, базам данных, платёжным системам и сотням других MCP-серверов. В этой статье — как настроить MCP в Hermes Agent, какие серверы подключить в первую очередь, как ограничить доступ к опасным инструментам и что делать, если MCP-сервер не подключается.

Что такое MCP-протокол?

MCP (Model Context Protocol) — это открытый стандарт, созданный Anthropic в ноябре 2024 года, который определяет единый способ подключения AI-агентов к внешним инструментам и источникам данных. MCP работает по модели «клиент-сервер»: AI-агент выступает клиентом, а MCP-сервер предоставляет инструменты (tools), ресурсы (resources) и промпты (prompts). Один раз написанный MCP-сервер работает с любым клиентом, поддерживающим протокол, — Hermes, Claude, Cursor, VS Code и другими.

До MCP разработчикам приходилось писать отдельную интеграцию для каждой пары «агент — сервис»: N агентов × M сервисов давали N×M интеграций. MCP меняет эту схему: источник данных реализует MCP-сервер один раз, и к нему подключаются все AI-агенты с поддержкой протокола. Именно поэтому MCP часто называют «USB-C для ИИ»: один стандартный разъём вместо десятков разных кабелей.

Спецификация MCP открыта и развивается: версии 2024-11-05, 2025-03-26 и 2025-06-18 последовательно добавляли поддержку новых транспортов и возможностей. Официальные SDK существуют для Python, TypeScript, Go, Rust, Java, C#, Kotlin, PHP, Ruby и Swift. Готовые серверы публикуются в реестре MCP Registry (registry.modelcontextprotocol.io), а исходники официальных reference-серверов лежат в репозитории modelcontextprotocol/servers на GitHub.

Зачем подключать MCP к Hermes Agent?

MCP в Hermes Agent — это слой-адаптер, через который агент получает доступ к инструментам, живущим за пределами самого Hermes: GitHub, базы данных, файловые системы, браузерные стеки, внутренние API компаний. Без MCP для каждой такой возможности пришлось бы писать встроенный инструмент Hermes; с MCP достаточно подключить готовый сервер.

Использовать MCP стоит, когда:

  • инструмент уже существует в виде MCP-сервера, а вы не хотите писать нативный инструмент Hermes;
  • нужно, чтобы Hermes работал с локальной или удалённой системой через чистый слой RPC;
  • требуется тонко управлять тем, какие инструменты агент видит (per-server exposure control);
  • нужно подключить Hermes к внутренним API, базам данных или корпоративным системам без изменения ядра Hermes.
  • Не стоит использовать MCP, когда:

  • встроенный инструмент Hermes уже решает задачу хорошо;
  • сервер открывает огромную опасную поверхность, а вы не готовы её фильтровать;
  • нужна одна узкая интеграция — нативный инструмент будет проще и безопаснее.
  • Ключевой принцип хорошей работы с MCP сформулирован в документации Hermes так: «подключайте правильную вещь с минимально полезной поверхностью», а не «подключайте всё подряд».

    Как устроен MCP: клиенты, серверы и транспорты

    В архитектуре MCP три участника: клиент (AI-агент, в нашем случае Hermes), сервер (поставщик инструментов) и транспорт (способ связи между ними). Hermes поддерживает два вида MCP-серверов — локальные stdio и удалённые HTTP.

    Stdio-серверы: локальные подпроцессы

    Stdio-серверы запускаются как локальные подпроцессы и общаются с Hermes через стандартный ввод-вывод (stdin/stdout). Конфигурация задаётся ключами command, args и env:

    mcp_servers:
      github:
        command: "npx"
        args: ["-y", "@modelcontextprotocol/server-github"]
        env:
          GITHUB_PERSONAL_ACCESS_TOKEN: "***"
    

    Stdio-серверы удобны, когда сервер установлен локально, нужен низкий отклик при работе с локальными ресурсами и когда документация сервера показывает конфигурацию в формате command + args + env.

    HTTP-серверы: удалённые эндпоинты

    HTTP MCP-серверы — это удалённые эндпоинты, к которым Hermes подключается напрямую:

    mcp_servers:
      remote_api:
        url: "https://mcp.example.com/mcp"
        headers:
          Authorization: "Bearer ***"
    

    HTTP-серверы подходят, когда сервер хостится в другом месте, когда организация публикует внутренние MCP-эндпоинты и когда не хочется, чтобы Hermes запускал локальный подпроцесс для интеграции.

    OAuth-авторизация для hosted-серверов

    Большинство облачных MCP-серверов (Linear, Sentry, Atlassian, Asana, Figma, Stripe) требуют OAuth 2.1 вместо статического bearer-токена. В Hermes достаточно указать auth: oauth — агент сам выполнит discovery, динамическую регистрацию клиента, PKCE, обмен токенами и их обновление:

    mcp_servers:
      linear:
        url: "https://mcp.linear.app/mcp"
        auth: oauth
    

    При первом подключении Hermes выводит URL авторизации, открывает браузер, когда это возможно, и ждёт callback на локальном loopback-порту. Токены сохраняются в ~/.hermes/mcp-tokens/.json с правами 0o600 и переиспользуются в следующих сессиях, пока не потребуется повторная авторизация (команда hermes mcp login ).

    Какие MCP-серверы существуют

    Экосистема MCP быстро выросла: на начало 2026 года в реестре MCP Registry опубликованы тысячи серверов — от файловых операций до управления облачной инфраструктурой. Официальные reference-серверы от команды MCP (репозиторий modelcontextprotocol/servers) демонстрируют базовые возможности протокола:

    Сервер Что даёт Запуск
    Filesystem Безопасные операции с файлами с настраиваемыми правами доступа `npx -y @modelcontextprotocol/server-filesystem /путь`
    Git Чтение, поиск и изменение Git-репозиториев `uvx mcp-server-git —repository /путь`
    Fetch Загрузка и конвертация веб-контента для LLM `uvx mcp-server-fetch`
    Memory Персистентная память на основе графа знаний `npx -y @modelcontextprotocol/server-memory`
    Time Конвертация времени и часовых поясов `uvx mcp-server-time`
    Sequential Thinking Динамическое пошаговое решение задач `npx -y @modelcontextprotocol/server-sequential-thinking`

    Ряд reference-серверов (GitHub, GitLab, PostgreSQL, SQLite, Brave Search, Puppeteer, Sentry, Slack, Google Drive и другие) переведён в архив и поддерживается сообществом — актуальные версии ищите в MCP Registry. Многие компании публикуют собственные hosted-серверы: Stripe (https://mcp.stripe.com), Figma (https://mcp.figma.com/mcp), Linear (https://mcp.linear.app/mcp), Cloudflare и десятки других.

    TypeScript-серверы запускаются через npx, Python-серверы — через uvx или pip. Для Windows команды npx оборачиваются в cmd /c.

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

    Шаг 1. Убедитесь, что поддержка MCP установлена

    При стандартной установке Hermes MCP уже включён (установщик выполняет uv pip install -e ".[all]"). Если Hermes установлен без расширений, добавьте MCP отдельно:

    cd ~/.hermes/hermes-agent
    uv pip install -e ".[mcp]"
    

    Для серверов на Node.js понадобятся Node.js и npx; для многих Python-серверов удобен uvx.

    Шаг 2. Начните с одного безопасного сервера

    Добавьте в ~/.hermes/config.yaml блок mcp_servers с одним сервером — например, файловым доступом только к одной папке проекта:

    mcp_servers:
      project_fs:
        command: "npx"
        args: ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/my-project"]
    

    Шаг 3. Запустите Hermes и проверьте загрузку

    Запустите hermes chat и задайте конкретный вопрос:

    Изучи проект и опиши структуру репозитория.
    

    Hermes обнаружит инструменты MCP-сервера при старте и будет использовать их как обычные инструменты. Проверить, что MCP загрузился, можно несколькими способами:

  • в баннере/статусе Hermes должно появиться упоминание MCP-интеграции;
  • спросите Hermes: «Какие MCP-инструменты сейчас доступны?»;
  • после изменения конфигурации выполните /reload-mcp;
  • при неудачном подключении смотрите логи.
  • Шаг 4. Настройте фильтрацию сразу

    Если сервер открывает много инструментов, не откладывайте фильтрацию. Например, для GitHub оставьте только нужные инструменты:

    mcp_servers:
      github:
        command: "npx"
        args: ["-y", "@modelcontextprotocol/server-github"]
        env:
          GITHUB_PERSONAL_ACCESS_TOKEN: "***"
        tools:
          include: [list_issues, create_issue, search_code]
    

    Как называются инструменты MCP? Hermes добавляет к ним префикс mcp__: например, инструмент create-issue сервера github регистрируется как mcp_github_create_issue, а read_file сервера filesystem — как mcp_filesystem_read_file. На практике называть префикс вручную не нужно — Hermes сам выбирает инструмент в ходе обычного рассуждения.

    Шаг 5. Перезагрузите конфигурацию

    После любых изменений в mcp_servers (include/exclude, enabled, ресурсы, промпты, заголовки, env) выполните в сессии Hermes:

    /reload-mcp
    

    Каталог MCP: установка в один клик

    Hermes поставляется с курируемым каталогом MCP-серверов, которые команда Nous Research проверила и приняла (манифесты лежат в директории optional-mcps/ репозитория hermes-agent). Каталог по умолчанию выключен — устанавливайте только то, что реально нужно.

    hermes mcp                # интерактивный выбор (по умолчанию)
    hermes mcp catalog        # простой текстовый список, удобный для скриптов
    hermes mcp install n8n    # установка записи каталога по имени
    

    Интерактивный выбор показывает статус каждой записи:

    n8n          available              Manage and inspect n8n workflows from Hermes
    linear       enabled                Linear issue/project management (remote OAuth)
    github       installed (disabled)   GitHub repo + PR tools
    

    Нажатие Enter на строке устанавливает, включает, отключает или удаляет запись. Записи каталога могут требовать:

  • API-ключ — Hermes спросит его при установке и запишет в ~/.hermes/.env;
  • OAuth (удалённый MCP) — в конфиг пишется auth: oauth, браузер открывается при первом подключении;
  • OAuth у стороннего провайдера (Google, GitHub) — Hermes направит вас на hermes auth , если вы ещё не авторизованы.
  • После настройки учётных данных Hermes опрашивает сервер, составляет список всех его инструментов и показывает чек-лист для выбора. Отмеченные по умолчанию строки берутся из вашего прошлого выбора, из tools.default_enabled манифеста (если он задан) или из полного списка. Подтверждение Enter записывает выбранные инструменты в mcp_servers..tools.include.

    Изменять выбор инструментов позже можно командой hermes mcp configure . MCP-серверы никогда не обновляются автоматически: после обновления Hermes повторите hermes mcp install .

    Для известных серверов есть встроенные пресеты: например, hermes mcp add codex --preset codex одной строкой подключает MCP-сервер Codex CLI.

    Безопасность MCP: как ограничить доступ агента

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

    Whitelist через `tools.include`

    Если задан include, регистрируются только перечисленные инструменты. Это лучший выбор по умолчанию для чувствительных систем:

    mcp_servers:
      github:
        command: "npx"
        args: ["-y", "@modelcontextprotocol/server-github"]
        env:
          GITHUB_PERSONAL_ACCESS_TOKEN: "***"
        tools:
          include: [list_issues, create_issue, update_issue, search_code]
          prompts: false
          resources: false
    

    Blacklist через `tools.exclude`

    Если задан exclude и не задан include, регистрируются все инструменты сервера, кроме перечисленных. Пример — Stripe без опасных действий:

    mcp_servers:
      stripe:
        url: "https://mcp.stripe.com"
        headers:
          Authorization: "Bearer ***"
        tools:
          exclude: [delete_customer, refund_payment]
    

    Приоритет и glob-шаблоны

    Если заданы оба списка, побеждает include. Оба списка принимают точные имена и fnmatch-шаблоны (*, ?, [) — это критично для серверов с огромной поверхностью. Например, у Cloudflare API MCP около 3 300 инструментов, и исключать целые продуктовые зоны по одному нереально:

    mcp_servers:
      cloudflare:
        url: "https://mcp.cloudflare.com/mcp?codemode=false"
        auth: oauth
        tools:
          exclude: ["*_radar_*", "*_accounts_dlp_*", "*_zones_web3_*"]
    

    Отключение сервера и утилитных обёрток

    enabled: false полностью отключает сервер — без попытки подключения и регистрации инструментов, но с сохранением конфигурации для будущего использования.

    Утилитные обёртки вокруг ресурсов и промптов сервера (list_resources, read_resource, list_prompts, get_prompt) отключаются отдельно:

    mcp_servers:
      docs:
        url: "https://mcp.docs.example.com"
        tools:
          prompts: false
          resources: false
    

    Обёртки регистрируются только если конфиг их разрешает и сервер реально поддерживает соответствующую возможность — Hermes не притворяется, что у сервера есть ресурсы или промпты, которых нет.

    Фильтрация окружения для stdio-серверов

    Hermes не передаёт stdio-серверам всё окружение шелла: только явно заданный env плюс безопасный базовый набор. Это снижает риск случайной утечки секретов. В значениях env, headers, args и url поддерживаются подстановки ${VAR} (из ~/.hermes/.env и окружения) и Cursor-стиль ${env:VAR}, а также контекстные переменные ${userHome}, ${workspaceFolder}, ${pathSeparator}.

    Режим `untrusted` для недоверенных серверов

    Для серверов, которым вы не полностью доверяете, задайте trust: untrusted: тогда каждый инструмент, способный писать (без аннотации readOnlyHint: true), потребует подтверждения пользователя через стандартный интерфейс одобрения. Неизвестные значения trust трактуются как untrusted (fail-closed).

    Примеры реальных сценариев MCP

    Локальный ассистент проекта

    Подключите файловую систему и Git для одного репозитория:

    mcp_servers:
      fs:
        command: "npx"
        args: ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/project"]
      git:
        command: "uvx"
        args: ["mcp-server-git", "--repository", "/home/user/project"]
    

    Запросы: «Изучи структуру проекта и объясни, где живёт конфигурация», «Проверь локальное состояние git и опиши, что изменилось недавно».

    GitHub-ассистент для триажа задач

    mcp_servers:
      github:
        command: "npx"
        args: ["-y", "@modelcontextprotocol/server-github"]
        env:
          GITHUB_PERSONAL_ACCESS_TOKEN: "***"
        tools:
          include: [list_issues, create_issue, update_issue, search_code]
          prompts: false
          resources: false
    

    Запрос: «Перечисли открытые issues про MCP, сгруппируй их по темам и подготовь качественный issue для самой частой ошибки».

    Внутренний API компании

    mcp_servers:
      internal_api:
        url: "https://mcp.internal.example.com"
        headers:
          Authorization: "Bearer ***"
        tools:
          include: [list_customers, get_customer, list_invoices]
          resources: false
          prompts: false
    

    Здесь строгий whitelist гораздо лучше blacklist’а: агент видит только read-инструменты, которые нужны для работы.

    Комбинированные сценарии

    Главная сила MCP — объединение систем без изменения ядра Hermes:

    mcp_servers:
      github:
        command: "npx"
        args: ["-y", "@modelcontextprotocol/server-github"]
        env:
          GITHUB_PERSONAL_ACCESS_TOKEN: "***"
        tools:
          include: [list_issues, create_issue, update_issue, search_code]
          prompts: false
          resources: false
      filesystem:
        command: "npx"
        args: ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/project"]
    

    Запрос: «Изучи локальные файлы проекта, найди баг и создай issue на GitHub с его описанием».

    Hermes как MCP-сервер: `hermes mcp serve`

    Hermes умеет не только подключаться к MCP-серверам, но и сам выступать MCP-сервером. Это позволяет другим MCP-клиентам — Claude Code, Cursor, Codex и любым другим — использовать коммуникационные возможности Hermes: список бесед, чтение истории сообщений и отправку сообщений во все подключённые платформы.

    hermes mcp serve
    

    Команда запускает stdio MCP-сервер; жизненным циклом процесса управляет MCP-клиент. Подключение в Claude Code выглядит так:

    {
      "mcpServers": {
        "hermes": {
          "command": "hermes",
          "args": ["mcp", "serve"]
        }
      }
    }
    

    Сервер exposes 10 инструментов: conversations_list, conversation_get, messages_read, attachments_fetch, events_poll, events_wait, messages_send, channels_list, permissions_list_open, permissions_respond. Встроенный event-bridge опрашивает базу сессий Hermes и даёт MCP-клиентам почти реальное время реакции на входящие сообщения; типы событий — message, approval_requested, approval_resolved. Для операций чтения gateway запускать не нужно, для отправки сообщений — нужно.

    Этот сценарий удобен, когда нужно, чтобы кодовый агент (Claude Code, Cursor) отправлял и читал сообщения Telegram, Discord или Slack через уже настроенный Hermes, не подключая каждую платформу отдельно.

    Частые проблемы и их решение

    MCP-сервер не подключается

    Проверьте, что MCP-зависимости установлены, Node.js и npx доступны:

    cd ~/.hermes/hermes-agent && uv pip install -e ".[mcp]"
    node --version
    npx --version
    

    Затем проверьте конфиг и перезапустите Hermes.

    Сервер подключён, но нужных инструментов нет

    Возможные причины: инструменты отфильтрованы через tools.include/tools.exclude, утилитные обёртки отключены (resources: false, prompts: false), сервер не поддерживает ресурсы/промпты, или сервер выключен через enabled: false. Если фильтрация намеренная — это ожидаемое поведение.

    Инструментов меньше, чем рекламирует сервер

    Это следствие per-server политики и capability-aware регистрации — ожидаемо и обычно желательно.

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

    Используйте enabled: false — конфигурация сохранится, но подключение и регистрация не произойдут.

    Сервер с тяжёлым браузером держит память

    Браузерные MCP-серверы (например, @playwright/mcp) держат полноценный Chromium после первого вызова — сотни мегабайт, которые не освобождаются. Включите автоматическую перезагрузку сервера по простою или возрасту:

    mcp_servers:
      playwright:
        command: "npx"
        args: ["-y", "@playwright/mcp@latest", "--headless"]
        idle_timeout_seconds: 900     # перезапуск после 15 минут простоя
        max_lifetime_seconds: 86400   # и минимум раз в сутки
    

    Сервер перезапускается прозрачно при следующем вызове инструмента, а его инструменты остаются зарегистрированными всё время.

    FAQ

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

    MCP (Model Context Protocol) — открытый стандарт, созданный Anthropic в ноябре 2024 года, который определяет, как AI-агенты подключаются к внешним инструментам и данным. MCP-сервер один раз реализует доступ к сервису (файлы, GitHub, база данных), и любой MCP-клиент — Hermes, Claude, Cursor — может этим доступом пользоваться.

    Зачем Hermes Agent нужен MCP?

    MCP позволяет Hermes использовать инструменты, которые живут за пределами самого агента: GitHub, базы данных, файловые системы, браузерные стеки, внутренние API. Вместо написания встроенного инструмента Hermes под каждый сервис достаточно подключить готовый MCP-сервер.

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

    Добавьте блок mcp_servers в ~/.hermes/config.yaml: для локальных серверов укажите command, args, env; для удалённых — url и headers. Затем запустите hermes chat (или выполните /reload-mcp) и проверьте, что инструменты доступны. Проще всего начать с каталога: hermes mcp install .

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

    Хорошие первые серверы: filesystem (доступ к одной папке проекта), git (один репозиторий), GitHub (с whitelist’ом инструментов), fetch/документационные серверы и один узкий внутренний API. Не лучшие первые серверы — огромные бизнес-системы с массой разрушительных действий и без фильтрации.

    Безопасно ли подключать MCP-серверы к Hermes?

    Безопасность зависит от настройки. Используйте whitelist (tools.include) для чувствительных систем, blacklist (tools.exclude) для удаления опасных действий, enabled: false для отключения, режим trust: untrusted для недоверенных серверов и фильтрацию окружения stdio-серверов. Hermes передаёт stdio-серверам только явно заданный env плюс безопасный базовый набор.

    Может ли Hermes сам быть MCP-сервером?

    Да, команда hermes mcp serve запускает stdio MCP-сервер с 10 инструментами для работы с мессенджерами Hermes (список бесед, чтение истории, отправка сообщений в Telegram/Discord/Slack, обработка запросов на одобрение). К нему можно подключиться из Claude Code, Cursor или любого MCP-клиента.

    Ссылки и документация

  • Официальная документация Hermes Agent по MCP — полное описание возможностей, каталога и безопасности
  • Практический гайд Use MCP with Hermes — паттерны использования и туториал с фильтрацией
  • MCP Config Reference — справочник по ключам конфигурации
  • MCP Registry — реестр опубликованных MCP-серверов
  • modelcontextprotocol/servers — официальные reference-серверы MCP
  • Сайт Model Context Protocol — спецификация и введение в протокол
  • Читайте также на hermeswiki:

  • Hermes Agent и API: как агент работает с внешними сервисами
  • Плагины Hermes Agent: как расширить функционал агента
  • Память AI-агента: как Hermes запоминает контекст между сессиями
  • Безопасность AI-агента: как Hermes защищает данные и ограничивает доступ
  • Как установить Hermes Agent на VPS: пошаговая инструкция