Agent access (MCP)
zurdo mcp serve: the structural index, Pyxis retrieval, the compound loop's state and manual sign-offs, served to coding agents over the Model Context Protocol.
zurdo v1.36.0
Agents spend much of each iteration re-reading the tree to learn where a type lives or who calls a function. The Lumen index already knows. zurdo mcp serve hands those answers, and a few about runs and sign-offs, to any Model Context Protocol client.
The server
zurdo mcp serve speaks MCP over stdio. A client launches it as a subprocess in the repository root; it takes no flags and serves until stdin closes. It needs [lumen] enabled = true, and refuses at startup otherwise. To add it to your own client, register a stdio server with command zurdo and args ["mcp", "serve"].
The tools
| Tool | Family | Arguments | Answers like |
|---|---|---|---|
search_symbols | structural | name, limit | zurdo lumen query --name |
file_outline | structural | path, limit | --outline |
find_callers | structural | name, limit | --callers |
find_references | structural | name, limit | --references |
match_lessons | compound | prd | zurdo reason match |
run_report | compound | prd | zurdo report --format json |
pending_signoffs | review | prd | zurdo review --no-prompt |
sign_off | review | prd, address, by, note | zurdo review --sign-off |
find_related | retrieval | query, limit | zurdo pyxis query |
- Structural tools repair the index before each call, so an agent asking about a file it just edited gets the new answer.
limitdefaults to 20;0lifts it. An empty answer is the textno results. - Compound tools are read-only:
match_lessonscounts no lesson use, andrun_reportwrites no file and refuses a PRD with no run. - Review tools are covered on Signing off manual checks.
pending_signoffsis read-only and takes no lock.sign_offwrites: it appends to the review log and can flip a task topassed, irreversibly. find_relatedappears only with[pyxis] enabled = true. Its rows are labelledlexicalorhybridand point at files, never lines. See Pyxis.
← initialize
{"id":1,"result":{"capabilities":{"tools":{}},"protocolVersion":"2025-06-18",
"serverInfo":{"name":"zurdo","version":"1.36.0"}}}
← tools/call find_callers {"name":"install_limiter"}
{"id":3,"result":{"content":[{"type":"text",
"text":"install_limiter\tbuild_router\tsrc/app.rs:6:20"}],"isError":false}}
← tools/call search_symbols {"name":"load"}
{"id":4,"result":{"content":[{"type":"text",
"text":"segment\tmethod\tAppConfig::load\tsrc/config.rs:6:5"}],"isError":false}}
Every answer is the CLI's own output. A call the CLI would refuse (a PRD outside the repo, an invalid address) comes back as a result with isError: true and the CLI's message, not as a protocol error.
Letting zurdo run hand the server to the agent
A run can register the server with the agent it launches. It's off by default:
[lumen]
enabled = true # required: a server with no index has nothing to answer
[mcp]
inject_server = true # master switch
strict_claude_config = false # claude only; see below
[mcp.adapters] # per-provider gates
anthropic = true
codex = true
copilot = false
All three gates must be open: inject_server, [lumen] enabled, and the provider's adapter. Otherwise the agent's command line is exactly what it would be without the feature. Zurdo registers the running binary once at run start:
| Provider | Registration | Gate default |
|---|---|---|
claude | --mcp-config .zurdo/mcp-claude.json, plus --strict-mcp-config only with strict_claude_config = true | on |
codex | -c mcp_servers.zurdo.* overrides; nothing written to your codex config | on |
copilot | --additional-mcp-config @.zurdo/mcp-copilot.json | off |
Warning
strict_claude_config cuts off your other servers. --strict-mcp-config makes claude ignore every MCP server configured elsewhere. Leave it off unless you want only Zurdo's.
copilot defaults off because an organization's policy can disable third-party MCP servers, which costs a failed connection every iteration. Verification never depends on the server: Zurdo still checks every criterion against the tree.
Troubleshooting
| Symptom | Fix |
|---|---|
zurdo mcp serve exits at once | Enable Lumen. |
| The agent never sees the server | Check all three gates. copilot defaults off. |
find_related is missing | Set [pyxis] enabled = true. |
claude lost your own MCP servers | Set strict_claude_config = false. |
| A compound or review tool returns an error result | Fix the PRD or address as you would for the CLI twin. |