hermes-docs-mcp
Provides offline full-text search and reading of Hermes Agent documentation, allowing agents to retrieve documentation fragments and full pages from a local cache.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@hermes-docs-mcpSearch the docs for how to configure MCP servers in Hermes Agent"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
hermes-docs-mcp
Локальный MCP-сервер, который даёт агенту полнотекстовый поиск и чтение
документации Hermes Agent (hermes-agent.nousresearch.com/docs) — офлайн,
из локального кэша, без скрейпинга сайта.
Откуда берутся данные
Сайт документации сам публикует машиночитаемые выгрузки — ровно для того, чтобы их скармливали языковым моделям:
Файл | Что это | Размер |
| вся документация одним markdown-файлом, страницы размечены маркерами | ~4.9 МБ, 228 страниц |
| индекс всех страниц по разделам: заголовок, канонический URL, однострочное описание | ~43 КБ |
Сервер скачивает эти два файла (условными запросами по ETag/Last-Modified),
кладёт в кэш, разбирает на страницы и фрагменты по заголовкам и строит BM25-индекс
в памяти. Никакого парсинга HTML, приватных эндпоинтов и обхода защит: только
официальный экспорт, документация под MIT.
Текст, который возвращают инструменты, — это сторонняя документация. Для агента это данные для чтения, а не инструкции к исполнению.
Related MCP server: LocalDocs MCP
Инструменты
Два инструмента — контракт, который ждут удалённые коннекторы (в том числе
ChatGPT/Deep Research): search находит адресуемые фрагменты, fetch отдаёт
страницу за любым из них.
Инструмент | Назначение |
| поиск по документации; возвращает до 8 фрагментов с |
| страница целиком в markdown: |
id фрагмента — это путь/страницы#N, например user-guide/features/mcp#3.
fetch принимает и его, и путь страницы, и полный URL документации, и точный
заголовок.
Про язык запроса. Документация Hermes Agent англоязычная, а поиск здесь лексический (BM25), не семантический: русский запрос не найдёт ничего. Поэтому инструмент просит модель формулировать запрос по-английски, а на пустую выдачу с кириллицей отвечает подсказкой перевести запрос и повторить. Отвечает пользователю ассистент всё равно по-русски.
Установка
Для разработки:
cd hermes-docs-mcp
uv sync
uv run hermes-docs-mcp # stdioДля использования из Claude — см. «Подключение» ниже: рантайм ставится отдельно,
вне ~/Desktop, ~/Documents и ~/Downloads.
macOS: Claude запускает MCP-серверы без доступа к этим трём папкам. venv, лежащий там, умирает ещё до старта Python:
PermissionError: Operation not permitted: .../.venv/pyvenv.cfg, затемFatal Python error: init_import_site. Репозиторий может лежать где угодно — важно только, где стоит рантайм.
Первый вызов любого инструмента, которому нужна документация, скачает выгрузки (~5 МБ). Дальше всё работает из кэша; сеть нужна только при обновлении.
Подключение
Claude Code
Проектный .mcp.json рядом с репозиторием:
{
"mcpServers": {
"hermes-docs": {
"command": "/Users/вы/hermes-docs-mcp/.venv/bin/hermes-docs-mcp",
"args": []
}
}
}Чтобы Claude Code не спрашивал подтверждение, добавьте "enabledMcpjsonServers": ["hermes-docs"]
в .claude/settings.local.json проекта.
Claude Desktop
./scripts/install-desktop-config.shСкрипт собирает wheel, ставит его в ~/hermes-docs-mcp/.venv (путь меняется
через HERMES_DOCS_MCP_PREFIX) и прописывает этот бинарь в конфиг. Идемпотентен,
делает бэкап конфига, отказывается ставить рантайм в папку, закрытую от Claude.
Запускайте при полностью закрытом Claude (Cmd+Q). Приложение держит
claude_desktop_config.jsonв памяти и перезаписывает файл, пока работает, стирая записи, добавленные в обход него, — проверено, в пределах десяти секунд.
Hermes Agent
В ~/.hermes/config.yaml:
mcp_servers:
hermes-docs:
command: uv
args: ["--directory", "/opt/hermes-docs-mcp", "run", "hermes-docs-mcp"]Агент, который умеет искать по собственной документации, сам находит нужные флаги,
ключи конфигурации и форматы SOUL.md вместо того, чтобы угадывать их.
Деплой как удалённый коннектор
Локальный сервер работает только на той машине, где запущен. Чтобы коннектор появился во всех клиентах сразу — в вебе, на телефоне, на других компьютерах — его нужно где-то запустить и подключать по URL.
В репозитории есть render.yaml: в Render → New → Blueprint укажите этот
репозиторий, и сервис поднимется с нужными переменными. URL коннектора —
https://<имя-сервиса>.onrender.com/mcp/ (слэш в конце желателен), транспорт —
Streamable HTTP, авторизации нет.
Что важно понимать про такой инстанс:
он отдаёт публичную документацию и ничего больше: ни файлов, ни секретов, ни пользовательских данных;
аутентификации клиентов у сервера нет, поэтому бинд за пределы loopback требует явного
HERMES_DOCS_MCP_ALLOW_PUBLIC_BIND=1— случайно не выставится;обновлять документацию наружу нечем: инстанс сам перечитывает выгрузки по истечении
HERMES_DOCS_MCP_TTL, но не чаще одного раза вHERMES_DOCS_MCP_MIN_REFRESHсекунд (по умолчанию 300) — превратить его в кнопку «скачай пять мегабайт» не получится;на free-плане Render сервис засыпает без запросов — первый вызов после сна будет дольше обычного.
Настройки (переменные окружения)
Переменная | По умолчанию | Смысл |
|
| источник выгрузок; только https (http — лишь для loopback) |
|
| где лежит кэш; можно подсунуть заранее заполненный каталог |
|
| через сколько секунд кэш считается устаревшим |
|
| таймаут HTTP, секунды |
| не задана |
|
|
|
|
| не задана |
|
|
| внешний адрес инстанса: с ним иконка отдаётся ссылкой, без него — инлайном. На Render подставляется сам |
|
| минимальный интервал между обновлениями доки, секунды |
|
| только для HTTP-транспортов; |
HTTP-транспорты по умолчанию разрешены только на loopback: у сервера нет аутентификации клиентов. Выставить наружу можно, но только осознанно — см. «Деплой как удалённый коннектор» выше.
Полностью офлайн (например, закрытый VPS)
mkdir -p /opt/hermes-docs-cache
curl -fsSL -o /opt/hermes-docs-cache/llms-full.txt https://hermes-agent.nousresearch.com/llms-full.txt
curl -fsSL -o /opt/hermes-docs-cache/docs-llms.txt https://hermes-agent.nousresearch.com/docs/llms.txt
export HERMES_DOCS_MCP_CACHE_DIR=/opt/hermes-docs-cache HERMES_DOCS_MCP_OFFLINE=1Разработка
uv run pytest -q
uv run ruff check .Тесты работают на локальных фикстурах и поднятом на loopback HTTP-сервере;
сеть для них не нужна. Отдельная проверка по «живому» сайту включается флагом
HERMES_DOCS_MCP_LIVE=1.
Лицензия
MIT (код сервера). Сама документация Hermes Agent принадлежит Nous Research и распространяется по условиям их репозитория (MIT). Проект неофициальный.
Available Tools
2 toolsfetchA
Возвращает страницу документации Hermes Agent целиком в markdown.
Принимает id из результатов search — и путь страницы («user-guide/features/mcp»), и id фрагмента с суффиксом («…/mcp#3»), и полный URL страницы документации. Страницы бывают объёмными, поэтому зови только когда фрагментов из search действительно не хватает, а не на каждый результат.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | id из результатов search — либо путь страницы, либо путь с #N |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It discloses that the tool returns the full page in Markdown, that pages can be large, and that multiple id formats are accepted. This is strong coverage for a one-parameter fetch tool, though it could mention failure behavior for invalid ids.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact: three sentences covering function, accepted inputs, and usage caveat. The primary purpose is front-loaded, and every sentence earns its place without meaningless filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no annotations and no output schema, the description is complete: it tells the agent what is returned, what id forms are accepted, and when to prefer this tool over search. Nothing essential is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents 'id' with 100% coverage, so the baseline is 3. The description adds meaningful value by clarifying that 'id' can be a page path, a fragment path with #N, or a full URL — the full-URL variant is not present in the schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: returning an entire Hermes Agent documentation page in Markdown. It also distinguishes itself from the sibling 'search' by returning full pages rather than fragments, and the id formats make the tool's scope immediately clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent when to use this tool: only when search snippets are insufficient, and not for every search result. It names 'search' as the source of ids and as the lighter-weight alternative, providing clear selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchA
Поиск по официальной документации Hermes Agent (228 страниц, на английском).
Зови этот инструмент на любой вопрос про Hermes Agent — установку, настройку, конфигурацию, инструменты, память, скиллы, MCP, мессенджеры, безопасность, развёртывание. Примеры: «как поставить Hermes на сервер», «что писать в SOUL.md», «как подключить Telegram», «какие есть режимы approvals», «чем skills отличаются от memory», «как настроить cron», «как запустить в Docker», «какие провайдеры моделей поддерживаются», «как дать агенту доступ к MCP».
Документация англоязычная, а поиск лексический — формулируй запрос по-английски, даже если пользователь спросил по-русски («как подключить телеграм» → «connect telegram bot gateway»). Отвечать пользователю можно на его языке.
Возвращает фрагменты страниц с адресом id, заголовком, ссылкой и текстом. Отвечай по ним и ссылайся на url; за полной страницей вызывай fetch.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Поисковый запрос |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so thoroughly: it discloses lexical search behavior and the requirement to formulate queries in English even for Russian requests. It also specifies the output shape (fragments with id, title, link, and text), instructs the agent to cite the url, and directs to fetch for full pages.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence is functional: purpose, usage scope, examples, language rule, return format, and integration with fetch. It is front-loaded with the core purpose and well-structured, with no redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter search tool with no annotations and no output schema, the description covers all necessary aspects: what it searches, how to query, what it returns, and what to do for full content. It integrates with the sibling fetch, making the tool pair self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema only says 'Поисковый запрос' (search query), but the description enriches this by explaining the query must be in English due to lexical search and providing transformation examples ('как подключить телеграм' → 'connect telegram bot gateway'). It also clarifies that the user-facing answer can be in the user's language, adding semantic guidance beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Поиск по официальной документации Hermes Agent' (search across official Hermes Agent docs), identifying the exact verb, resource, and scope. It also differentiates from sibling fetch by specifying that it returns fragments and that fetch should be used for full pages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs 'Зови этот инструмент на любой вопрос про Hermes Agent' and provides concrete query examples across many topics. It defines boundaries with its sibling: 'за полной страницей вызывай fetch' (call fetch for full page), leaving no ambiguity about when to use each tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
v0.1.0- First observed
fetch - First observed
search
TDQS
Scored across 2 tools
The two tools have clearly distinct purposes: search returns relevant fragments from the documentation, while fetch retrieves a full page in markdown. Their descriptions explicitly state when to use each, leaving no ambiguity for an agent.
Both tool names are single, simple verbs (search, fetch) that directly describe their actions. This consistent minimalist pattern is predictable and easy to remember.
With only 2 tools, the server feels slightly thin for a documentation MCP, though the scope is narrow and focused on search + retrieval. According to the calibration, 1-2 tools is borderline, but each tool clearly earns its place.
The pair of search and fetch covers the core documentation lookup workflow well: find relevant fragments, then fetch the full page if needed. A minor gap is the lack of direct browsing or listing of documentation sections, but agents can work around this via search.
Maintenance
Related MCP Connectors
Verified doc corpora for agents: grep-first retrieval, hashed pages, Merkle+RFC-3161 receipts
DevDocs.io keyless docs index + entry search + content (Angular, MDN, Rust, etc.).
Host an agent's pages at clean, permanent URLs. Publish, organize, edit, search and re-find docs.
Agent-native MCP server over the public saagarpatel.dev corpus. Read-only, stateless.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceOn-device documentation search for agents54MIT
- FlicenseNot gradedqualityDmaintenanceCreates a local database of indexed technical documentation from web crawls and local files, enabling AI agents to efficiently search and retrieve documentation through MCP tools.1-
- AlicenseNot gradedqualityBmaintenanceProvides local technical documentation with hybrid search (semantic + BM25) for AI agents, ensuring access to up-to-date framework docs.MIT
- AlicenseNot gradedqualityCmaintenanceEnables MCP clients to search, navigate, and read the complete Hermes Agent documentation through a local SQLite FTS5 index, with tools for full-text search, page reading, and browsing documentation structure.MIT