MCP (Model Context Protocol)

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

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

Что дает вам MCP

  • Доступ к внешним экосистемам инструментов без предварительного написания нативного инструмента Hermes
  • Локальные stdio-серверы и удаленные HTTP MCP-серверы в одной конфигурации
  • Автоматическое обнаружение и регистрация инструментов при запуске
  • Утилитарные обертки для ресурсов и промптов MCP (если они поддерживаются сервером)
  • Фильтрация по серверам, чтобы вы могли предоставить доступ только к тем инструментам MCP, которые действительно хотите показать Hermes

Быстрый старт

  1. Установите поддержку MCP (уже включена, если вы использовали стандартный скрипт установки):
cd ~/.hermes/hermes-agent
uv pip install -e ".[mcp]"
  1. Добавьте сервер MCP в ~/.hermes/config.yaml:
mcp_servers:
filesystem:
command: "npx"
args: ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/projects"]
  1. Запустите Hermes:
hermes chat
  1. Попросите 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.

Общие ключи

КлючТипЗначение
commandstringИсполняемый файл для stdio-сервера MCP
argslistАргументы для stdio-сервера
envmappingПеременные окружения для stdio-сервера
urlstringHTTP-эндпоинт MCP
headersmappingHTTP-заголовки для удаленных серверов
timeoutnumberТайм-аут вызова инструмента
connect_timeoutnumberТайм-аут начального подключения
enabledboolЕсли false, Hermes полностью игнорирует сервер
toolsmappingФильтрация инструментов и политика утилит для каждого сервера

Минимальный пример для 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Зарегистрированное имя
filesystemread_filemcp_filesystem_read_file
githubcreate-issuemcp_github_create_issue
my-apiquery.datamcp_my_api_query_data

На практике вам обычно не нужно вызывать префиксное имя вручную — Hermes видит инструмент и выбирает его в процессе рассуждений.

Утилитарные инструменты MCP

Если это поддерживается, Hermes также регистрирует утилитарные инструменты для ресурсов и промптов MCP:

  • list_resources
  • read_resource
  • list_prompts
  • get_prompt

Они регистрируются для каждого сервера с тем же шаблоном префикса, например:

  • mcp_github_list_resources
  • mcp_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