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, когда:
Ключевой принцип хорошей работы с 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/ с правами 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 загрузился, можно несколькими способами:
/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 на строке устанавливает, включает, отключает или удаляет запись. Записи каталога могут требовать:
~/.hermes/.env;auth: oauth, браузер открывается при первом подключении;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-клиента.
Ссылки и документация
Читайте также на hermeswiki: