MCP
Connect Claude Code, Claude Desktop, Cursor, Codex, and other agents to Plan0.
Getting your MCP URL and API key
- Open the Help center panel in the top toolbar (the
?icon next to the MCP status badge). - Copy your API key.
- Use the config snippet below — replace
<your-api-key>with the copied key.
Config snippet
The same snippet works for all clients that support Streamable HTTP MCP servers:
"mcpServers": { "plan0": { "type": "http", "url": "https://app.plan0.dev/mcp", "headers": { "Authorization": "Bearer <your-api-key>" } }Client-specific setup
Create (or edit) .mcp.json in your project root:
"mcpServers": { "plan0": { "type": "http", "url": "https://app.plan0.dev/mcp", "headers": { "Authorization": "Bearer <your-api-key>" } }Or use the CLI:
claude mcp add plan0 --transport http https://app.plan0.dev/mcp \--header "Authorization: Bearer <your-api-key>"Edit the config file for your platform:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Add the plan0 entry inside "mcpServers" and restart Claude Desktop:
"mcpServers": { "plan0": { "type": "http", "url": "https://app.plan0.dev/mcp", "headers": { "Authorization": "Bearer <your-api-key>" } }Create (or edit) .cursor/mcp.json in your project root:
"mcpServers": { "plan0": { "type": "http", "url": "https://app.plan0.dev/mcp", "headers": { "Authorization": "Bearer <your-api-key>" } }For a global config that applies to all projects, use Cursor's Settings → MCP panel and paste the same JSON.
In your Codex config file (typically ~/.codex/config.yaml or the project-level .codex/config.yaml), add Plan0 under mcpServers:
mcpServers:plan0: type: http url: https://app.plan0.dev/mcp headers: Authorization: 'Bearer <your-api-key>'Refer to the Codex CLI documentation for the exact config file location and format for your version.
Any client that supports Streamable HTTP MCP servers can connect to Plan0.
- URL:
https://app.plan0.dev/mcp - Transport: Streamable HTTP (
"type": "http") - Auth header:
Authorization: Bearer <your-api-key>
How it works
Plan0's MCP server is tied to your open browser tabs. When you have a project open in the browser, the agent can see it via list-connected-projects. One API key = one MCP session; each open browser tab with a project is a "connected project".
Tools
Context-gathering tools
| Tool | What it does |
|---|---|
get-skill | Returns project-tailored how-to documentation for using Plan0's MCP tools |
list-connected-projects | Lists every project currently open in the browser, with versions and the active version |
get-project-settings | Returns the project's Quick Prompts, type definitions, statuses, and linked template |
get-current-canvas-building-blocks | Returns building blocks on the canvas; use detailLevel: "skeleton" for a cheap overview or "full" for detailed data on specific blocks |
verify-canvas | Reports layout issues, duplicates, and orphaned blocks |
Mutation tools
| Tool | What it does |
|---|---|
edit-project-settings | Create, update, or delete a prompt, status, or type — with optional template propagation |
create-building-blocks | Add new building blocks to the canvas |
update-building-blocks | Edit existing building blocks |
delete-building-blocks | Remove building blocks |
rearrange-building-blocks | Reflow the layout of selected blocks |
reparent-building-blocks | Move blocks into a different parent or group |
switch-version | Switch the active version (canvas page) |
Typical agent workflow
Agents typically start by gathering context, then mutate:
list-connected-projects— discover which project is open and which version is active.get-skill— get Plan0-specific guidance for the current task.get-current-canvas-building-blockswithdetailLevel: "skeleton"— read the canvas structure (ids, names, types, statuses). Then call again withdetailLevel: "full"and specificbuildingBlockIdsto load descriptions and connections for only the blocks you need to work with.- Mutate:
create-building-blocks,update-building-blocks,rearrange-building-blocks, etc. verify-canvas— confirm the result looks correct.