Skip to main content

hermes-agent-mcp

Operate your local Hermes Agent install from any MCP client — without exposing it to the network.

hermes-agent-mcp is a Model Context Protocol server that wraps the local hermes CLI over stdio. Point Claude Code, Cursor, Codex or any other MCP-capable agent at it and they can hand Hermes a task, read and change its config, manage cron jobs, restart the gateway and run hermes doctor — without a terminal and without ever seeing a token.

uvx hermes-agent-mcp

That is the whole install. No ports, no tunnel, no OAuth. It runs as a child process of your MCP client, on the same machine as Hermes, and nothing leaves the box.

Why this exists

Hermes is a great always-on agent, but everything about operating it happens in a terminal: hermes cron edit, hermes config set, hermes gateway restart. If the agent that wants to do those things has no terminal — a desktop app, a coding assistant sandboxed away from your shell — it is stuck asking a human to type for it.

There is already a good project called hermes-mcp by mlennie. It solves a different problem: reaching Hermes remotely, over HTTP through a cloudflared tunnel with OAuth, so a hosted client can delegate tasks. If that is what you need, use it.

This project was written by someone who did not want that. Opening a Hermes gateway to the internet means an agent with a shell is one leaked token away from anyone. hermes-agent-mcp stays local on purpose:

  • it never listens on a port — MCP over stdio only
  • it never handles credentials — it calls the CLI, which already has them
  • it exposes the operations surface (cron, config, gateway, doctor, skills), not just "send a prompt"
hermes-agent-mcp (this) hermes-mcp (mlennie)
Transport stdio, local process HTTP, tunnel + OAuth
Reachable from MCP clients on the same machine Anywhere
Surface 16 tools: ask + cron, config, gateway, doctor, skills, sessions 4 tools: ask, check, cancel, reset
Typed config.yaml writes Yes
Network exposure None By design

Tools

Tool What it does
hermes_status Server config, whether the CLI answers, which tools are enabled
hermes_ask Hand the agent a task and get its reply (one non-interactive turn)
doctor hermes doctor health report
gateway_status / gateway_restart Messaging gateway state and restart
cron_list / cron_create / cron_edit / cron_run / cron_runs Scheduled jobs, including per-job model and reasoning effort
config_get / config_set Typed reads and writes against config.yaml
skills_list Installed skills
sessions_list Recent sessions
model_info Default model, provider and Nous Portal status
shell Run a shell command on the host — off by default

config_set fixes a real trap

hermes config set platforms.telegram.reply_to_mode off stores the YAML boolean False, not the string "off". Several Hermes options compare against the string, so the setting silently does nothing. config_set takes an explicit value_type (str, int, float, bool, null, json), writes a .bak before touching the file, and returns the resulting section so you can see what landed.

Setup

Claude Code

claude mcp add hermes -- uvx hermes-agent-mcp

Cursor / Windsurf / Claude Desktop

{
  "mcpServers": {
    "hermes": {
      "command": "uvx",
      "args": ["hermes-agent-mcp"]
    }
  }
}

Hermes itself

Hermes can drive its own install — useful for a supervisor profile that manages other profiles. Add to ~/.hermes/config.yaml:

mcp_servers:
  hermes:
    command: uvx
    args: ["hermes-agent-mcp"]

From a clone

git clone https://github.com/woonyong-choi/hermes-agent-mcp
cd hermes-agent-mcp
uv tool install -e .

Configuration

Everything is an environment variable, so the same server works on macOS, Linux, WSL and inside a container that mounts someone else's ~/.hermes.

Variable Default Meaning
HERMES_HOME ~/.hermes Hermes data directory
HERMES_MCP_BIN hermes on PATH Path to the CLI
HERMES_MCP_ALLOW_WRITE 1 Allow tools that change state (cron edit, config set, restart). Set 0 for read-only
HERMES_MCP_ALLOW_SHELL 0 Enable the shell tool
HERMES_MCP_TIMEOUT 120 Seconds for ordinary CLI calls
HERMES_MCP_ASK_TIMEOUT 900 Seconds for hermes_ask
HERMES_MCP_MAX_OUTPUT 40000 Characters returned per call before truncation

Security model

This server gives a language model the ability to operate an agent that has a terminal. The design assumes the model is talking to untrusted content and keeps the blast radius small:

  • Argument lists, never a shell. Every CLI call is subprocess.run([...]) with shell=False. Prompt text cannot become shell syntax.
  • Subcommand allowlist. Only config, cron, doctor, gateway, model, portal, profile, sessions, skills, tools and --version are reachable. hermes auth and anything that handles credentials is not, on purpose.
  • Redaction on every return. Telegram bot tokens, Anthropic/OpenAI/GitHub/Slack/AWS keys and JWTs are replaced with [redacted] before output reaches the model. .env is never read.
  • Read-only mode. HERMES_MCP_ALLOW_WRITE=0 blocks every state-changing verb.
  • Shell is opt-in. shell refuses to run until you set HERMES_MCP_ALLOW_SHELL=1, and you should only do that on a machine you control, for an agent you trust.

See SECURITY.md for reporting.

Releasing

Tag a version and CI publishes to PyPI via Trusted Publishing and attaches the wheel to a GitHub release:

git tag v0.1.0 && git push --tags

server.json at the repo root is the manifest for the MCP Registry; publish it with mcp-publisher publish after the PyPI release exists.

Development

uv venv && source .venv/bin/activate
uv pip install -e ".[dev]"
pytest
ruff check .

Tests do not need a Hermes install; the runner is exercised against a missing binary and the config writer against a temp directory.

Compatibility

Built against Hermes Agent 0.21.x. The CLI is moving fast — if a subcommand's flags change, the tool returns the CLI's own error text rather than guessing. Issues and PRs that track upstream changes are welcome.

License

MIT. Hermes Agent is MIT-licensed by Nous Research; this project is independent and not affiliated with them.

Release files for hermes-agent-mcp 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for hermes-agent-mcp 0.1.0
File Size Uploaded
hermes_agent_mcp-0.1.0.tar.gz 15.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for hermes-agent-mcp 0.1.0
File Interpreter ABI Platform
hermes_agent_mcp-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 30.1 kB

Release files / hermes_agent_mcp-0.1.0.tar.gz

Download URL hermes_agent_mcp-0.1.0.tar.gz
Size 15.8 kB
Tags Source
SHA-256 checksum
How to use checksums
d170809ebb7068a636855c9c1ab8814fb7f7ee66fcac567c61e94f669d304e6d
BLAKE2b-256 checksum
How to use checksums
5f415507f42dd7797d3dbd24489c16b9e60c62adde45226d484c3d4ea02a510f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / hermes_agent_mcp-0.1.0-py3-none-any.whl

Download URL hermes_agent_mcp-0.1.0-py3-none-any.whl
Size 14.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f280fe86858f2911e41b11ecceac9447689e0b1c1ce79f376013cdc622ed0e98
BLAKE2b-256 checksum
How to use checksums
c997d906ce97e3b141bf682182778d1174bb51ee046532545d2bd88a4ba0285d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

0.1.1

2 release files

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page