Docs · MCP server
Drive Corvi from any MCP client.
corvi mcp-serve exposes your plan library over the Model Context Protocol — list and search plans, read Markdown and todos, fan todos into parallel-safe waves, and check a diff against a plan. Local over stdio, off the Corvi app binary.
What it is
corvi mcp-serve turns the Corvi app into an MCP server. It speaks the Model Context Protocol over stdio and serves the plan library already on your Mac — no upload. Any MCP client can connect and pull your plans into whatever agent loop it runs.
There are three Corvi-and-MCP relationships; keep them straight:
- Corvi as an MCP server (this guide): a client drives Corvi. Your plans become tools and resources. Read-only by default, runs on your machine.
- The Claude Code plugin (/docs/claude-code): the same server wrapped as a one-command install with a bundled skill. Reach for it if Claude Code is your client.
- Corvi consuming external MCP servers (/docs/egress): the other direction.
corvi run --mcp <server>lets the planner call your tools, gated by the egress boundary.
Run it
An MCP client launches the bundled binary over stdio. It reads the default plan store, or $CORVI_DATA_DIR if set, and reloads per request — so a plan you save in the app appears without a restart.
corvi mcp-serve
# or a specific store:
corvi mcp-serve --data-dir ~/Library/Application\ Support/CorviRegister it with a client by adding a corvi entry to its mcpServers config — see Configuration for the snippet. The app's Connect action writes exactly that entry into Claude Code (~/.claude.json) or Cursor (~/.cursor/mcp.json), preserving every other server it finds.
The tools it exposes
Six tools are always available, and every one only reads — reading the local store costs nothing:
list_plans— every plan with id, title, type, workspace, created date, and todo count.search_plans— find plans whose title, prompt, or body matches a query.get_plan— a plan's full Markdown plus structured fields (todos, tests, criteria, verification, consensus) by id.get_plan_todos— the actionable todo checklist (id, title, done, files, acceptance).plan_dispatch— decompose pending todos into ordered, parallel-safe waves by file-disjointness and declared dependencies; same-wave todos touch no shared files. A dependency cycle is rejected with a readable report before scheduling.plan_verify— structurally check changed files against a plan's pending todos; passgit diff --name-onlyoutput and it reports which todos conform, which are missing changes, and which paths weren't declared.
Plans are also offered as MCP resources: each is addressable as corvi://plan/<id> and resolves to its Markdown, so a client that browses resources can attach a plan as context directly.
One tool can spend
A seventh tool, create_plan, drafts a fresh Quick Plan for a task and saves it — a single paid model call on your own key. It ships available because the client already prompts before every tool call, so your approval is the spend gate. Set CORVI_MCP_ALLOW_CREATE=0 in the server's env to make the server strictly read-only — with it set, create_plan isn't advertised at all.
mcp-files-serve — the grounded-files broker
A second server, corvi mcp-files-serve --workspace <path>, serves one workspace's files — read_file, search_code, and list_dir — through the workspace broker trust boundary. It exposes read-only repo access, not plans, obeying the broker's deny rules (.env, .git, secrets), its byte caps, and its no-escape-outside-the-workspace rule.
It exists so an external agent can explore your repo only through that boundary instead of its own filesystem tools — same handlers, same denial messages, and same caps as the in-process planner.
Troubleshooting
Both mcp-serve and mcp-files-serve ship in every build — nothing extra to install. If a client can't reach the server:
- Binary path. The
commandmust be the bundled binary atCorvi.app/Contents/Resources/corvi. Point it wherever the app lives if it isn't in/Applications. - No plans listed? Confirm the server reads the right store — set
CORVI_DATA_DIRor pass--data-dir. It reloads per request, so new plans appear without a restart. - Want it read-only? Set
CORVI_MCP_ALLOW_CREATE=0andcreate_plandisappears from the tool list.
On Claude Code, the one-command plugin wraps this server with a guided skill. To connect it to the work your team already does, see integrations.