Skip to content

Hermes

Hermes reads MCP servers from ~/.hermes/config.yaml, under mcp_servers. The config is YAML, so add the block below to your existing file. The plugin’s EMCP Tools → Connection screen generates it for your exact site.

mcp_servers:
emcp-tools:
url: "https://your-site.test/wp-json/mcp/emcp-tools-server"
headers:
Authorization: "Basic BASE64_ENCODED_CREDENTIALS"

Generate the base64 credentials:

Terminal window
echo -n "admin:xxxx xxxx xxxx xxxx xxxx xxxx" | base64

Application passwords come from WordPress admin → Users → Profile → Application Passwords.

If the direct HTTP transport gives you handshake trouble, run the bundled proxy over stdio. It handles the session and protocol negotiation:

mcp_servers:
emcp-tools:
command: "npx"
args: ["-y", "@msrbuilds/emcp-proxy@latest"]
env:
WP_URL: "https://your-site.test"
WP_USERNAME: "admin"
WP_APP_PASSWORD: "xxxx xxxx xxxx xxxx xxxx xxxx"
MCP_PROTOCOL_VERSION: "2024-11-05"

Note WP_URL is the bare site (no /wp-json/..., the proxy adds the route), and the app password goes in plain.

Point Hermes at the server URL with no credentials and let the server run the browser sign-in on first connect:

mcp_servers:
emcp-tools:
url: "https://your-site.test/wp-json/mcp/emcp-tools-server"

Requires an HTTPS site with OAuth enabled (EMCP Tools → Connection: on by default on HTTPS). Only administrators can approve. Revoke access any time under Connected apps.

Terminal window
hermes mcp test emcp-tools

Common issues:

  • 401 Unauthorized: the application password or username is wrong, or the base64 encoding is off.
  • HTML instead of JSON: the URL is missing the /wp-json/mcp/emcp-tools-server path and is hitting the site homepage.
  • Handshake timeout on the direct URL: switch to the Node proxy block above.

After a config change, reload with /reload-mcp inside Hermes.