A practical guide to adding local, zero-API-key Model Context Protocol servers to Hermes Agent: filesystem, memory, time, sequential thinking, browser automation, and an optional GitHub connector.
A practical guide for adding free, local Model Context Protocol (MCP) servers to Hermes Agent. These servers run on your own hardware, require no API keys, and extend Hermes with filesystem access, memory, browser automation, sequential thinking, and time utilities.
| MCP Server | What It Does | Runtime | Free? |
|---|---|---|---|
filesystem |
Read, write, search and inspect files under allowed paths. | npx |
Yes |
memory |
Simple durable key/value memory store across sessions. | npx |
Yes |
time |
Current time and timezone conversion. | uvx |
Yes |
sequentialthinking |
A lightweight scratchpad for multi-step reasoning. | npx |
Yes |
playwright |
Real browser automation (navigate, click, evaluate, screenshot). | npx + Chromium |
Yes |
github (optional) |
GitHub issues, PRs, search. Requires a PAT. | npx |
Token needed |
hermes-gateway.service).npm (ships with most Hermes installs).uv/uvx for the time server.# curl installer
curl -LsSf https://astral.sh/uv/install.sh | sh
# or pip if you prefer
pip install uv
Verify:
uv --version
uvx --version
The @playwright/mcp server needs a Chromium binary. Install the free "Chrome for Testing" build:
npx @playwright/mcp install-browser chrome-for-testing
This downloads Chromium into ~/.cache/ms-playwright/ and does not require Google Chrome.
~/.hermes/config.yamlAdd the mcp_servers: block below the rest of your config. Hermes will discover and register the tools automatically on the next gateway restart.
mcp_servers:
filesystem:
command: npx
args:
- -y
- '@modelcontextprotocol/server-filesystem'
- /home/impulsivefps
- /tmp
timeout: 60
memory:
command: npx
args:
- -y
- '@modelcontextprotocol/server-memory'
timeout: 60
time:
command: uvx
args:
- mcp-server-time
timeout: 30
sequentialthinking:
command: npx
args:
- -y
- mcp-sequentialthinking-tools
timeout: 60
playwright:
command: npx
args:
- -y
- '@playwright/mcp'
- --no-sandbox
- --headless
- --browser
- chromium
timeout: 120
github:
command: npx
args:
- -y
- '@modelcontextprotocol/server-github'
env:
GITHUB_PERSONAL_ACCESS_TOKEN: ''
timeout: 120
enabled: false
filesystem: list only directories you want the agent to access. In the example above, /home/impulsivefps and /tmp are allowed.--no-sandbox is required inside many containerized / hardened Linux environments. --headless keeps it lightweight. --browser chromium forces the free Chromium build instead of a system Google Chrome.enabled: true and fill GITHUB_PERSONAL_ACCESS_TOKEN when you want GitHub automation. Keep it disabled until then.Hermes cannot restart its own gateway process from inside an active session. Run this from a separate shell (SSH, TTY, or another host):
systemctl --user restart hermes-gateway
sleep 8
systemctl --user is-active hermes-gateway
Alternatively, save a helper script:
cat > /tmp/restart_hermes.sh <<'EOF'
#!/bin/bash
systemctl --user restart hermes-gateway
sleep 8
systemctl --user is-active hermes-gateway > /tmp/hermes_restart_status.txt
journalctl --user -u hermes-gateway -n 100 --no-pager | grep -iE 'mcp|register|tool' | tail -50 > /tmp/hermes_restart_mcp_logs.txt
EOF
chmod +x /tmp/restart_hermes.sh
bash /tmp/restart_hermes.sh
After restart, the MCP tools appear in Hermes as mcp__<server>__<tool>.
# Hermes command
mcp__filesystem__list_directory path=/home/impulsivefps
mcp__filesystem__read_file path=/home/impulsivefps/.hermes/SOUL.md
mcp__time__get_current_time timezone=Europe/Stockholm
mcp__time__convert_time source_timezone=Europe/Stockholm target_timezone=Asia/Tokyo time=08:00
mcp__sequentialthinking__sequentialthinking_tools \
thought="Plan the next infrastructure change" \
thought_number=1 total_thoughts=3 next_thought_needed=true
mcp__playwright__browser_navigate url=https://example.com
mcp__playwright__browser_evaluate function="() => document.title"
mcp__playwright__browser_take_screenshot filename=example.png
Screenshots and snapshots are written to the server's working directory (usually ~/.hermes/.playwright-mcp/).
unavailable or errors with "MCP server unreachable"bash
journalctl --user -u hermes-gateway -n 100 --no-pagerDon't use @modelcontextprotocol/server-puppeteer on hardened Linux kernels. Use @playwright/mcp with --no-sandbox --headless --browser chromium instead.
Run:
npx @playwright/mcp install-browser chrome-for-testing
Always scope searches to a narrow subdirectory. A recursive search across an entire home directory can hit the configured timeout.
repo and read:user scopes.~/.hermes/config.yaml:
```yaml
github:
command: npx
args:filesystem allowed paths to the minimum required.github disabled until you need it, and never commit the token.--no-sandbox only in trusted, isolated environments.sqlite MCP server for local database access.fetch MCP server to make raw HTTP requests without a browser.systemctl --user restart hermes-gateway && sleep 8 && systemctl --user is-active hermes-gateway