MCP (Model Context Protocol)
MCP позволяет Hermes Agent подключаться к внешним серверам инструментов, благодаря чему агент может использовать инструменты, находящиеся за пределами самого Hermes — GitHub, базы данных, файловые системы, стеки браузеров, внутренние API и многое другое.
Если вы когда-либо хотели, чтобы Hermes использовал инструмент, который уже существует где-то еще, MCP — это обычно самый чистый способ сделать это.
Что дает вам MCP
- Доступ к внешним экосистемам инструментов без предварительного написания нативного инструмента Hermes
- Локальные stdio-серверы и удаленные HTTP MCP-серверы в одной конфигурации
- Автоматическое обнаружение и регистрация инструментов при запуске
- Утилитарные обертки для ресурсов и промптов MCP (если они поддерживаются сервером)
- Фильтрация по серверам, чтобы вы могли предоставить доступ только к тем инструментам MCP, которые действительно хотите показать Hermes
Быстрый старт
- Установите поддержку MCP (уже включена, если вы использовали стандартный скрипт установки):
cd ~/.hermes/hermes-agent
uv pip install -e ".[mcp]"
- Добавьте сервер MCP в
~/.hermes/config.yaml:
mcp_servers:
filesystem:
command: "npx"
args: ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/projects"]
- Запустите Hermes:
hermes chat
- Попросите Hermes использовать возможности, предоставляемые MCP.
Например:
Выведи список файлов в /home/user/projects и опиши структуру репозитория.
Hermes обнаружит инструменты сервера MCP и будет использовать их как любые другие инструменты.
Два типа серверов MCP
Stdio-серверы
Stdio-серверы запускаются как локальные подпроцессы и взаимодействуют через stdin/stdout.
mcp_servers:
github:
command: "npx"
args: ["-y", "@modelcontextprotocol/server-github"]
env:
GITHUB_PERSONAL_ACCESS_TOKEN: "***"
Используйте stdio-серверы, когда:
- сервер установлен локально
- вам нужен доступ к локальным ресурсам с низкой задержкой
- вы следуете документации сервера MCP, которая содержит
command,argsиenv
HTTP-серверы
HTTP MCP-серверы — это удаленные эндпоинты, к которым Hermes подключается напрямую.
mcp_servers:
remote_api:
url: "https://mcp.example.com/mcp"
headers:
Authorization: "Bearer ***"
Используйте HTTP-серверы, когда:
- сервер MCP размещен удаленно
- ваша организация предоставляет внутренние эндпоинты MCP
- вы не хотите, чтобы Hermes запускал локальный подпроцесс для этой интеграции
Справочник базовой конфигурации
Hermes читает конфигурацию MCP из ~/.hermes/config.yaml в разделе mcp_servers.
Общие ключи
| Ключ | Тип | Значение |
|---|---|---|
command | string | Исполняемый файл для stdio-сервера MCP |
args | list | Аргументы для stdio-сервера |
env | mapping | Переменные окружения для stdio-сервера |
url | string | HTTP-эндпоинт MCP |
headers | mapping | HTTP-заголовки для удаленных серверов |
timeout | number | Тайм-аут вызова инструмента |
connect_timeout | number | Тайм-аут начального подключения |
enabled | bool | Если false, Hermes полностью игнорирует сервер |
tools | mapping | Фильтрация инструментов и политика утилит для каждого сервера |
Минимальный пример для stdio
mcp_servers:
filesystem:
command: "npx"
args: ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"]
Минимальный пример для HTTP
mcp_servers:
company_api:
url: "https://mcp.internal.example.com"
headers:
Authorization: "Bearer ***"
Как Hermes регистрирует инструменты MCP
Hermes добавляет префиксы к инструментам MCP, чтобы они не конфликтовали со встроенными названиями:
mcp_<server_name>_<tool_name>
Примеры:
| Сервер | Инструмент MCP | Зарегистрированное имя |
|---|---|---|
filesystem | read_file | mcp_filesystem_read_file |
github | create-issue | mcp_github_create_issue |
my-api | query.data | mcp_my_api_query_data |
На практике вам обычно не нужно вызывать префиксное имя вручную — Hermes видит инструмент и выбирает его в процессе рассуждений.
Утилитарные инструменты MCP
Если это поддерживается, Hermes также регистрирует утилитарные инструменты для ресурсов и промптов MCP:
list_resourcesread_resourcelist_promptsget_prompt
Они регистрируются для каждого сервера с тем же шаблоном префикса, например:
mcp_github_list_resourcesmcp_github_get_prompt
Важно
Эти утилитарные инструменты теперь зависят от возможностей сессии:
- Hermes регистрирует утилиты для ресурсов только если сессия MCP действительно поддерживает операции с ресурсами
- Hermes регистрирует утилиты для промптов только если сессия MCP действительно поддерживает операции с промптами
Таким образом, сервер, который предоставляет вызываемые инструменты, но не ресурсы/промпты, не получит этих дополнительных оберток.
Безопасность
Поскольку серверы MCP могут быть удаленными или выполнять локальный код, Hermes предоставляет несколько контрольных точек безопасности.
Песочница
Stdio-серверы запускаются как подпроцессы Hermes. Они наследуют окружение Hermes, если вы явно не укажете env в своей конфигурации. Обратитесь к документации конкретных серверов MCP, чтобы случайно не раскрыть чувствительные ключи.
Политика «Разрешения»
По умолчанию Hermes будет запрашивать разрешение перед выполнением любого инструмента с сервера MCP, так же как он делает это для встроенных инструментов. Вы можете настроить автоматическое одобрение, используя глобальный параметр allow_tools или конфигурацию tools для конкретного сервера (см. ниже).
Расширенная фильтрация инструментов и утилиты
Иногда сервер предоставляет 50 инструментов, но вы хотите, чтобы Hermes видел только 5. Или вы хотите автоматически одобрять определенные инструменты с доверенного сервера.
mcp_servers:
big_server:
command: "..."
tools:
# Список конкретных разрешенных инструментов. Если опущен, разрешены все.
include: ["important_tool", "safe_tool"]
# Инструменты, которые должны пропускать запрос подтверждения пользователя
allow: ["safe_tool"]
# Установите true, чтобы включить list_resources/read_resource для этого сервера
include_resources: true
# Установите true, чтобы включить list_prompts/get_prompt для этого сервера
include_prompts: true