|
| 1 | +--- |
| 2 | +title: MCP Server for Claude Code |
| 3 | +description: Install and use the Plane MCP Server with Claude Code CLI. Manage work items, projects, cycles, and modules from your terminal with AI. |
| 4 | +keywords: plane, mcp server, claude code, cli, ai, project management, work items, developer tools |
| 5 | +--- |
| 6 | + |
| 7 | +# MCP Server for Claude Code |
| 8 | + |
| 9 | +[Claude Code](https://docs.anthropic.com/en/docs/claude-code) is Anthropic's CLI tool for agentic |
| 10 | +coding. By connecting the Plane MCP Server to Claude Code, you can manage your Plane workspace |
| 11 | +directly from the terminal — create work items, plan cycles, search across projects, and more, |
| 12 | +all through natural language. |
| 13 | + |
| 14 | +<Note> |
| 15 | +Beta |
| 16 | +The Plane MCP Server is currently in **Beta**. Some aspects of the API may change. Please send any |
| 17 | +issues to support@plane.so. |
| 18 | +</Note> |
| 19 | + |
| 20 | +## Prerequisites |
| 21 | + |
| 22 | +- **Claude Code**: [Install Claude Code](https://docs.anthropic.com/en/docs/claude-code/getting-started) if you haven't already. |
| 23 | +- **Node.js 22+**: Required for HTTP transports. Verify with `node --version`. |
| 24 | +- **Python 3.10+** and **uvx**: Required only for the local Stdio transport. Verify with `python --version` and `uvx --version`. |
| 25 | +- **Plane API Key**: For PAT or Stdio transports, generate one from **Workspace Settings > API Tokens** in Plane. |
| 26 | + |
| 27 | +## Setup methods |
| 28 | + |
| 29 | +Choose the transport method that fits your setup. |
| 30 | + |
| 31 | +| Method | Best for | Auth | |
| 32 | +| ------------------------------------- | ---------------------------- | --------------------- | |
| 33 | +| [HTTP with OAuth](#http-with-oauth) | Plane Cloud, interactive use | Browser-based OAuth | |
| 34 | +| [HTTP with PAT](#http-with-pat-token) | CI/CD, automated workflows | API key in headers | |
| 35 | +| [Local Stdio](#local-stdio) | Self-hosted Plane instances | Environment variables | |
| 36 | + |
| 37 | +## HTTP with OAuth |
| 38 | + |
| 39 | +The simplest way to connect to Plane Cloud. Run this in your terminal: |
| 40 | + |
| 41 | +```bash |
| 42 | +claude mcp add --transport http plane https://mcp.plane.so/http/mcp |
| 43 | +``` |
| 44 | + |
| 45 | +After adding the server, start Claude Code and run `/mcp` to authenticate via your browser. |
| 46 | + |
| 47 | +## HTTP with PAT token |
| 48 | + |
| 49 | +For automated workflows or when you prefer token-based auth: |
| 50 | + |
| 51 | +```bash |
| 52 | +claude mcp add-json plane '{ |
| 53 | + "type": "http", |
| 54 | + "url": "https://mcp.plane.so/http/api-key/mcp", |
| 55 | + "headers": { |
| 56 | + "Authorization": "Bearer <YOUR_API_KEY>", |
| 57 | + "X-Workspace-slug": "<YOUR_WORKSPACE_SLUG>" |
| 58 | + } |
| 59 | +}' |
| 60 | +``` |
| 61 | + |
| 62 | +Replace `<YOUR_API_KEY>` and `<YOUR_WORKSPACE_SLUG>` with your actual values. |
| 63 | + |
| 64 | +## Local Stdio |
| 65 | + |
| 66 | +For self-hosted Plane instances, use the Stdio transport which runs locally: |
| 67 | + |
| 68 | +```bash |
| 69 | +claude mcp add-json plane '{ |
| 70 | + "type": "stdio", |
| 71 | + "command": "uvx", |
| 72 | + "args": ["plane-mcp-server", "stdio"], |
| 73 | + "env": { |
| 74 | + "PLANE_API_KEY": "<YOUR_API_KEY>", |
| 75 | + "PLANE_WORKSPACE_SLUG": "<YOUR_WORKSPACE_SLUG>", |
| 76 | + "PLANE_BASE_URL": "https://your-plane-instance.com" |
| 77 | + } |
| 78 | +}' |
| 79 | +``` |
| 80 | + |
| 81 | +### Environment variables |
| 82 | + |
| 83 | +| Variable | Required | Description | |
| 84 | +| ---------------------- | -------- | --------------------------------------------------------------------- | |
| 85 | +| `PLANE_API_KEY` | Yes | API key from your workspace settings | |
| 86 | +| `PLANE_WORKSPACE_SLUG` | Yes | Your workspace slug (found in your Plane URL) | |
| 87 | +| `PLANE_BASE_URL` | No | API URL for self-hosted instances. Defaults to `https://api.plane.so` | |
| 88 | + |
| 89 | +## Scope options |
| 90 | + |
| 91 | +Control where the MCP server configuration is stored by adding a `--scope` flag: |
| 92 | + |
| 93 | +```bash |
| 94 | +# Available only to you in the current project (default) |
| 95 | +claude mcp add --scope local --transport http plane https://mcp.plane.so/http/mcp |
| 96 | + |
| 97 | +# Shared via .mcp.json, committed to version control |
| 98 | +claude mcp add --scope project --transport http plane https://mcp.plane.so/http/mcp |
| 99 | + |
| 100 | +# Available across all your projects |
| 101 | +claude mcp add --scope user --transport http plane https://mcp.plane.so/http/mcp |
| 102 | +``` |
| 103 | + |
| 104 | +## Verify the connection |
| 105 | + |
| 106 | +After setup, verify the Plane MCP Server is connected: |
| 107 | + |
| 108 | +```bash |
| 109 | +# List all configured MCP servers |
| 110 | +claude mcp list |
| 111 | + |
| 112 | +# Get details for the Plane server |
| 113 | +claude mcp get plane |
| 114 | +``` |
| 115 | + |
| 116 | +Inside Claude Code, run `/mcp` to check the server status and see the available tools. |
| 117 | + |
| 118 | +## Available tools |
| 119 | + |
| 120 | +The Plane MCP Server exposes 55+ tools across these categories: |
| 121 | + |
| 122 | +| Category | Tools | Examples | |
| 123 | +| ------------------------ | ----- | --------------------------------------------------------------- | |
| 124 | +| **Projects** | 9 | List, create, update, delete projects; get members and features | |
| 125 | +| **Work Items** | 7 | Create, list, search, update, delete work items | |
| 126 | +| **Cycles** | 12 | Manage cycles, add/remove work items, transfer, archive | |
| 127 | +| **Modules** | 11 | Manage modules, add/remove work items, archive | |
| 128 | +| **Initiatives** | 5 | Create and manage workspace-level initiatives | |
| 129 | +| **Intake** | 5 | Manage intake work items for triage | |
| 130 | +| **Work Item Properties** | 5 | Manage custom properties on work items | |
| 131 | +| **Users** | 1 | Get current authenticated user info | |
| 132 | + |
| 133 | +## Examples |
| 134 | + |
| 135 | +Here are common tasks you can perform by chatting with Claude Code after connecting the Plane MCP Server. |
| 136 | + |
| 137 | +### List projects in your workspace |
| 138 | + |
| 139 | +**Prompt:** |
| 140 | + |
| 141 | +``` |
| 142 | +List all projects in my workspace. |
| 143 | +``` |
| 144 | + |
| 145 | +Claude Code calls `list_projects` and returns a summary of all projects including their identifiers, lead, and status. |
| 146 | + |
| 147 | +### Create a work item |
| 148 | + |
| 149 | +**Prompt:** |
| 150 | + |
| 151 | +``` |
| 152 | +Create a bug in project WEB titled "Fix login redirect loop" and assign it to me. |
| 153 | +``` |
| 154 | + |
| 155 | +Claude Code calls `get_me` to find your user ID, then `create_work_item` with the project ID, name, and assignee. |
| 156 | + |
| 157 | +### Search across work items |
| 158 | + |
| 159 | +**Prompt:** |
| 160 | + |
| 161 | +``` |
| 162 | +Search for work items related to "authentication" across the workspace. |
| 163 | +``` |
| 164 | + |
| 165 | +Claude Code calls `search_work_items` with the query string and returns matching results from all projects. |
| 166 | + |
| 167 | +### Plan a cycle |
| 168 | + |
| 169 | +**Prompt:** |
| 170 | + |
| 171 | +``` |
| 172 | +Create a new cycle called "Sprint 24" in project WEB starting today and |
| 173 | +ending in 2 weeks. Add work items WEB-102, WEB-115, and WEB-118 to it. |
| 174 | +``` |
| 175 | + |
| 176 | +Claude Code calls `create_cycle` with the name and dates, then `add_work_items_to_cycle` to attach the specified items. |
| 177 | + |
| 178 | +### Triage intake items |
| 179 | + |
| 180 | +**Prompt:** |
| 181 | + |
| 182 | +``` |
| 183 | +Show me all intake items in project MOBILE and accept the ones related to |
| 184 | +crash reports. |
| 185 | +``` |
| 186 | + |
| 187 | +Claude Code calls `list_intake_work_items` to retrieve pending items, then `update_intake_work_item` to accept the relevant ones. |
| 188 | + |
| 189 | +### Get a project overview |
| 190 | + |
| 191 | +**Prompt:** |
| 192 | + |
| 193 | +``` |
| 194 | +Give me a summary of project BACKEND — what cycles are active, how many |
| 195 | +open work items are there, and who are the members? |
| 196 | +``` |
| 197 | + |
| 198 | +Claude Code calls `retrieve_project`, `list_cycles`, `list_work_items`, and `get_project_members` to assemble a full overview. |
| 199 | + |
| 200 | +### Manage modules |
| 201 | + |
| 202 | +**Prompt:** |
| 203 | + |
| 204 | +``` |
| 205 | +Create a module called "Auth Revamp" in project WEB and add all work items |
| 206 | +tagged with the "auth" label to it. |
| 207 | +``` |
| 208 | + |
| 209 | +Claude Code calls `create_module`, then `list_work_items` with label filtering, and finally `add_work_items_to_module` to associate the items. |
| 210 | + |
| 211 | +### Move work items between cycles |
| 212 | + |
| 213 | +**Prompt:** |
| 214 | + |
| 215 | +``` |
| 216 | +Transfer all incomplete work items from "Sprint 23" to "Sprint 24" in |
| 217 | +project WEB. |
| 218 | +``` |
| 219 | + |
| 220 | +Claude Code calls `list_cycles` to find both cycle IDs, then `transfer_cycle_work_items` to move unfinished items. |
| 221 | + |
| 222 | +## Managing the server |
| 223 | + |
| 224 | +```bash |
| 225 | +# Remove the Plane MCP server |
| 226 | +claude mcp remove plane |
| 227 | + |
| 228 | +# Re-add with a different transport |
| 229 | +claude mcp add --transport http plane https://mcp.plane.so/http/mcp |
| 230 | +``` |
| 231 | + |
| 232 | +## Troubleshooting |
| 233 | + |
| 234 | +### MCP server not connecting |
| 235 | + |
| 236 | +If the server fails to start, launch Claude Code with the debug flag: |
| 237 | + |
| 238 | +```bash |
| 239 | +claude --mcp-debug |
| 240 | +``` |
| 241 | + |
| 242 | +This shows detailed logs during MCP server initialization. |
| 243 | + |
| 244 | +### Authentication errors (OAuth) |
| 245 | + |
| 246 | +Clear saved OAuth tokens and re-authenticate: |
| 247 | + |
| 248 | +```bash |
| 249 | +rm -rf ~/.mcp-auth |
| 250 | +``` |
| 251 | + |
| 252 | +Then restart Claude Code and run `/mcp` to authenticate again. |
| 253 | + |
| 254 | +### Server timeout on startup |
| 255 | + |
| 256 | +If the MCP server times out during initialization, increase the timeout: |
| 257 | + |
| 258 | +```bash |
| 259 | +MCP_TIMEOUT=10000 claude |
| 260 | +``` |
| 261 | + |
| 262 | +This sets a 10-second startup timeout (default is lower). |
| 263 | + |
| 264 | +### Python or Node.js not found |
| 265 | + |
| 266 | +Ensure the required runtime is installed and available on your `PATH`: |
| 267 | + |
| 268 | +```bash |
| 269 | +# For HTTP transports |
| 270 | +node --version # Should be 22+ |
| 271 | + |
| 272 | +# For Stdio transport |
| 273 | +python --version # Should be 3.10+ |
| 274 | +uvx --version |
| 275 | +``` |
| 276 | + |
| 277 | +### Getting help |
| 278 | + |
| 279 | +If issues persist: |
| 280 | + |
| 281 | +1. Check your credentials and workspace slug |
| 282 | +2. Run `claude mcp list` to verify the configuration |
| 283 | +3. Contact support at support@plane.so for Plane-specific issues |
| 284 | +4. Visit the [Plane MCP Server repository](https://github.com/makeplane/plane-mcp-server) for known issues |
0 commit comments