dario as MCP server (v3.27)

April 30, 2026 · View on GitHub

dario mcp turns dario itself into a stdio JSON-RPC 2.0 MCP server. Claude Desktop, Cursor, Zed, any MCP-aware editor can introspect dario's state without leaving the editor.

dario mcp        # spawns the MCP server on stdin/stdout — wire it up to your MCP client

Strictly read-only. The exposed tool set is:

ToolWhat it reports
doctorFull aggregated health report — same output as dario doctor
statusOAuth authentication state (authenticated / no-credentials / expired-but-refreshable)
accounts_listPool accounts + expiry times. Never touches API keys.
backends_listConfigured OpenAI-compat backends — keys redacted completely (not even a sk-… prefix)
subagent_statusCC sub-agent install and version-match state
fingerprint_infoRuntime / TLS classification, template source + schema version

Mutations (login, logout, accounts add/remove, backend add/remove, subagent install/remove, proxy start/stop) are not exposed. An MCP client can observe dario; changing dario's state stays a CLI action the user types with intent. The test suite asserts the forbidden-tool set stays forbidden so a future accidental drift gets caught.

Zero runtime deps — the JSON-RPC dispatcher is hand-rolled over Node's readline. src/mcp/protocol.ts + src/mcp/tools.ts + src/mcp/server.ts are each pure over their inputs (streams are injectable, data sources are injectable) so the e2e test runs in-process against a PassThrough pair.