MCP Tool Bus

The bus resolves a server.tool name, routes to a connection, validates args against the input schema, applies a per-server rate limit, opens a trace span, and calls. Retries happen on failure unless the tool is annotated destructive.

Transports

TransportUse
stdioLocal subprocess
sseServer-sent events
httpHTTP request/response
websocketBidirectional
inprocessBuilt-in server, no network

Built-in servers

Hanflow ships seven built-in MCP servers: code_exec, filesystem, http_request, shell, vector_search, web_fetch, web_search. The default config wires web_search as in-process.

mcp_servers:
  web_search: { transport: inprocess }
  filesystem:
    transport: stdio
    command: node
    args: ["./mcp/fs-server.js"]

Calling a tool

- id: search
  type: Tool
  config:
    tool: web_search.search
    args: { query: "{{input.q}}" }

Tool names must be in server.tool form. Destructive tools are not retried.