Wiki · Integrations

Your app via MCP

MCP fails in two typical ways: the agent is handed an entire tool surface at once, or a server is added where an HTTP request would do.

✅ Verified 17. 10. 2026Source: official documentation →📋 Copy for your AI
🔌
MCP fails in two typical ways: the agent is handed a company's entire tool surface at once, or a server is added where a plain HTTP request would do. Good integration is not “connect everything” but “connect the right thing with the smallest useful surface” — which is why tools get filtered and timeouts set in the configuration.

When MCP makes sense

Use MCPDo not use MCP
A tool already exists in MCP form and you do not want to build oneA built-in Hermes tool already does the job (files, terminal, web)
You need a clean layer onto a company system, database or internal APIThe server exposes a huge surface of dangerous tools you have no time to filter
You want fine-grained control over which tools are visibleIt is one narrow thing and a small script would be simpler and safer

Two shapes of a server

# ~/.hermes/config.yaml — local program (stdio) mcp_servers: my-app: command: "python3" args: ["/opt/mcp/my-app.py"] env: DATABASE_URL: "${DATABASE_URL}" # value from the environment, not hardcoded enabled: true timeout: 120 tools: exclude: ["delete_everything"] # do not hand this to the agent
# a remote server over HTTP mcp_servers: company-api: url: "https://api.company.com/mcp" headers: Authorization: "Bearer ${COMPANY_TOKEN}" # from .env, never in git ssl_verify: true connect_timeout: 60 tools: include: ["find_customer", "create_invoice"]
KeyPurpose
tools.include / tools.excludeWhich tools the agent can see. Start narrow and widen
timeout, connect_timeoutHow long to wait for an answer and for a connection
lazy: trueThe server starts on the first tool call — Hermes boots faster
ssl_verifyTLS verification; a path to your own CA for internal certificates
transport: sseWhen the server speaks the older SSE protocol instead of Streamable HTTP

Step by step

1) run the server on its own and confirm it answers (without Hermes) 2) add the configuration to ~/.hermes/config.yaml 3) hermes mcp list # what Hermes sees 4) try one tool on a harmless query ("find customer 123") 5) only then wire it into a scheduled job or a community

Step 1 matters: if the server does not work alone, inside Hermes it looks like an agent bug and you hunt in the wrong place.

Things to watch

SituationWhat to do
The agent suddenly got “dumber” or more expensiveThe server added dozens of tools and flooded the context — filter with tools.include
Secrets in the configurationWrite ${VARIABLE} and keep the value in .env or a vault
The server sometimes “disappears”Raise timeout or keepalive_interval; for remote servers check ssl_verify
A dangerous tool is accidentally availablePut it in tools.exclude before something happens
The server slows startuplazy: true — tools are registered from the cached schema

How we do it

IntegrationExperience
The application databaseGreat for reading and quick queries; writes only with confirmation
Error monitoringMostly about the right region (de.sentry.io) — the wrong address looks like an outage
Library documentationUseful per library; a global “everything about everything” slows the agent down

Where next

← Back to the wiki