plane-mcp-server
Enables an LLM to act as a project manager across self-hosted Plane workspaces and projects, providing tools for work items, cycles, modules, states, labels, comments, members, and intake triage via Plane's REST API.
README
plane-mcp-server
An MCP (Model Context Protocol) server for self-hosted Plane (Community Edition). It gives Claude 56 tools covering projects, work items, states, labels, cycles, modules, comments, activity history, links, members, and intake triage, enough to act as a project manager across every project in your Plane workspace, from a local chat session.
Built against Plane's public REST API (/api/v1), documented at developers.plane.so. Community Edition covers projects, work items, cycles, modules, intake, and states/labels — this server sticks to that surface. Epics, initiatives, teamspaces, and customers are Plane Commercial/Cloud-only features and are intentionally not included.
Setup
1. Generate a Plane API key
In your Plane instance: Profile Settings → Personal Access Tokens → Add personal access token.
2. Install dependencies and build
cd plane-mcp-server
npm install
npm run build
3. Configure environment variables
Copy .env.example to .env for reference, but note: MCP clients (Claude Desktop, Claude Code) pass environment variables directly in their config, not via a .env file loaded by this process.
| Variable | Required | Description |
|---|---|---|
PLANE_BASE_URL |
Yes | Base URL of your self-hosted instance, e.g. https://plane.mycompany.com (no /api/v1 suffix). |
PLANE_API_KEY |
Yes | Personal Access Token from step 1. |
PLANE_WORKSPACE_SLUG |
No | Default workspace slug (from your Plane URL). If set, tools' workspace_slug argument becomes optional. |
4. Add to your MCP client
Claude Code (claude mcp add or edit .mcp.json):
{
"mcpServers": {
"plane": {
"command": "node",
"args": ["/absolute/path/to/plane-mcp-server/dist/index.js"],
"env": {
"PLANE_BASE_URL": "https://plane.mycompany.com",
"PLANE_API_KEY": "plane_api_xxxxxxxxxxxxxxxxxxxx",
"PLANE_WORKSPACE_SLUG": "acme"
}
}
}
}
Claude Desktop (claude_desktop_config.json): same mcpServers block as above.
Restart the client after editing config. You should see the plane server connect with 56 tools available.
What it can do
- Projects — list/get/create/update/archive/delete, keeping track of every project in a workspace at once.
- Work items (issues) — full CRUD, lookup by UUID or human identifier (
ENG-123), free-text search, and advanced structured-filter search (by state, priority, assignee, labels). - States & labels — inspect and manage each project's workflow columns and tags.
- Cycles (sprints) — create/update/delete, assign or remove work items, read progress counts for status reporting.
- Modules — same lifecycle as cycles, for longer-running feature groupings.
- Comments & activity — read/write discussion threads, read the audit trail of field changes on a work item.
- Links — attach PRs/docs/designs to a work item.
- Members — resolve people's names/emails to UUIDs, staff projects, change roles.
- Intake — triage incoming requests (accept/reject/snooze/duplicate) before they hit the backlog.
Every list/get tool accepts response_format: "markdown" | "json" (markdown by default, for readability; json for further programmatic use), and every tool that needs a workspace defaults to PLANE_WORKSPACE_SLUG if you configured one, so most calls only need a project_id.
Not implemented
Scoped out deliberately to keep the surface focused and CE-only: file/attachment uploads, pages, estimates, time tracking (worklogs), custom work item types/properties, and the commercial-only epics/initiatives/teamspaces/customers/IDP-sync APIs. These can be added later following the same pattern in src/tools/.
A typical multi-project PM session
plane_list_projects— see everything in the workspace.plane_advanced_search_work_itemson the active project with a priority/state filter — find what's urgent. It's project-scoped, so call it once per project to cover the whole workspace.plane_list_cycleson the active project, thenplane_list_cycle_work_items— check current sprint status.plane_update_work_item— move items between states, reassign, reprioritize.plane_add_work_item_comment— leave status notes.plane_list_intake_issues+plane_update_intake_issue— clear the triage queue.
Development
npm run dev # tsx watch, runs src/index.ts directly
npm run build # compile to dist/
npm start # run compiled dist/index.js
Test with the MCP Inspector:
npx @modelcontextprotocol/inspector node dist/index.js
(Set PLANE_BASE_URL / PLANE_API_KEY / PLANE_WORKSPACE_SLUG in the Inspector's environment panel.)
Notes on endpoint stability
This server was built from Plane's hosted API docs (developers.plane.so) plus the documented self-hosting behavior — self-hosted instances share the same /api/v1 surface, but exact behavior can vary slightly by Plane version. If a less common tool (e.g. plane_advanced_search_work_items filter syntax) returns a 400/404 on your instance, prefer the simpler plane_list_work_items / plane_list_states / plane_list_labels tools and filter client-side, or check your instance's own API docs at <your-plane-url>/api/ if exposed.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.