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/Corvi

Register 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; pass git diff --name-only output 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 command must be the bundled binary at Corvi.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_DIR or pass --data-dir. It reloads per request, so new plans appear without a restart.
  • Want it read-only? Set CORVI_MCP_ALLOW_CREATE=0 and create_plan disappears 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.