Plane MCP Server
OfficialThe Plane MCP Server enables AI agents and developer tools to interact programmatically with Plane workspaces. You can:
Create and manage projects directly from your AI or app interface
Update tasks programmatically (progress, assignments, properties, comments)
Move issues through workflows and update states dynamically
Organize work with labels, modules, and cycles
Analyze team data across projects
Build intelligent applications that interact seamlessly with Plane, such as AI agents logging work or bots maintaining project organization
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Plane MCP Serverlist all open issues in the marketing project"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Plane MCP Server
A Model Context Protocol server for Plane. Gives an AI agent tools to read and manage projects, work items, cycles, modules, releases, customers and more.
Built on FastMCP and the official
plane-sdk.
28 tools, one per Plane resource, covering 183 operations
Local or remote — stdio, streamable HTTP, SSE
OAuth or API key authentication
Quick start
Get an API key from Plane: Workspace Settings → API tokens.
Add this to your MCP client's configuration:
{
"mcpServers": {
"plane": {
"command": "uvx",
"args": ["plane-mcp-server", "stdio"],
"env": {
"PLANE_API_KEY": "<your-api-key>",
"PLANE_WORKSPACE_SLUG": "<your-workspace-slug>"
}
}
}
}uvx needs no install step. Requires Python 3.10+.
For a self-hosted Plane, add "PLANE_BASE_URL": "https://plane.example.com".
Related MCP server: Plane MCP Server
Transports
stdio — local
Runs as a subprocess of your MCP client. Configuration as shown above; needs
PLANE_API_KEY and PLANE_WORKSPACE_SLUG.
PLANE_API_KEY=... PLANE_WORKSPACE_SLUG=... uvx plane-mcp-server stdioHTTP with OAuth — hosted
https://mcp.plane.so/http/mcp
The OAuth flow is handled on connect; no credentials in your config. For clients
without native remote MCP support, bridge with mcp-remote:
{
"mcpServers": {
"plane": {
"command": "npx",
"args": ["mcp-remote@latest", "https://mcp.plane.so/http/mcp"]
}
}
}Requires Node.js 22+.
HTTP with a personal access token — hosted
https://mcp.plane.so/http/api-key/mcp
Header | Value |
|
|
|
|
{
"mcpServers": {
"plane": {
"command": "npx",
"args": ["mcp-remote@latest", "https://mcp.plane.so/http/api-key/mcp"],
"headers": {
"Authorization": "Bearer <PAT>",
"X-Workspace-slug": "<workspace-slug>"
}
}
}
}SSE — deprecated
https://mcp.plane.so/sse is maintained for backward compatibility only. Use an
HTTP transport instead.
Tools
The server advertises 28 tools, one per resource. Each takes an action
parameter that selects the operation:
workitem(action="create", project_id=..., name="Fix login")
workitem(action="list", project_id=..., pql='state__group = "started"')
cycle(action="archive", project_id=..., cycle_id=...)Every tool's description lists its actions with their required and optional parameters, so the catalogue is self-documenting at call time.
→ Full tool and action reference
Querying work items
List, count and search accept PQL, Plane's query language:
workitem(action="list", project_id=..., pql='state__group = "started" AND priority = "urgent"')
workitem(action="count", pql='assignees__id = "<member id>"', group_by="state_id")Call get_pql_reference for the full syntax, operators and worked examples.
Upgrading from the per-operation tools
Earlier releases exposed one tool per API operation. Existing integrations keep
working: 169 of those 177 names still resolve to the consolidated tool, so a
saved prompt or script calling create_work_item or list_cycles needs no
change. They are no longer advertised, and they keep the parameter names they
shipped with (work_item_id, not workitem_id).
Seven names chose between two operations with a parameter
(manage_project_archive(archive=False)), which one tool-and-action pair cannot
reproduce; calling one tells you its replacement. get_pql_reference is
unchanged.
Configuration
Authentication
Variable | Required for | Purpose |
| stdio | API key |
| stdio | Target workspace |
| optional | Plane API URL (default |
The remote transports carry credentials in the connection — the OAuth flow or the PAT headers — and need none of these.
Self-hosting the server itself:
Variable | Purpose |
| Internal URL for server-to-server calls, preferred over |
| OAuth token storage; falls back to in-memory |
| OAuth client credentials and base URL |
| Path prefix for the HTTP routes, when mounted behind a proxy — |
OAuth redirect URIs
The OAuth transports validate each client's redirect URI against an allowlist. Common clients (Cursor, VS Code, Claude.ai, ChatGPT connectors, localhost) are allowed by default.
To onboard a new client without a release, append patterns:
export PLANE_OAUTH_ALLOWED_REDIRECT_URIS="https://newclient.com/cb,https://other.app/oauth/*"* matches any port, path segment or subdomain. Keep the host pinned and
wildcard only the port or path.
Logging
Structured JSON. Each tool call logs its name, duration, status and — when available — an opaque user id and the workspace slug.
export LOG_USER_INFO=true # also log the display name (PII); default falseOnly the OAuth and PAT transports carry a display name; stdio is unaffected.
Development
git clone https://github.com/makeplane/plane-mcp-server
cd plane-mcp-server
uv pip install -e ".[dev]"Run the server against a workspace:
PLANE_API_KEY=... PLANE_WORKSPACE_SLUG=... python -m plane_mcp stdio
python -m plane_mcp http # port 8211Tests, format, lint:
pytest # no network or credentials needed
ruff format plane_mcp/ tests/ # line length 120
ruff check plane_mcp/ tests/ # rules E, F, I, UP, BThe suite runs fully offline — every action of every resource is
executed against a stand-in that binds each call against the genuine plane-sdk
signature. See plane_mcp/tools/README.md.
Live integration tests are skipped unless you point them at a running server:
export PLANE_TEST_API_KEY=... PLANE_TEST_WORKSPACE_SLUG=...
export PLANE_TEST_MCP_URL=http://localhost:8211 # optional; this is the default
pytest tests/test_integration.py -vThey write real data to that workspace.
Repository layout
Path | Contents |
| entry point; picks the transport from |
| one factory per transport |
| resolves credentials into a |
| OAuth provider and header auth |
| the tool surface: one module per Plane resource |
| shared building blocks for the tool surface |
| PQL syntax reference served to models |
Contributing
Pull requests welcome. Please run pytest and ruff check before submitting; new
tools should come with the invariants described in
plane_mcp/tools/README.md.
See CONTRIBUTING.md and CODE_OF_CONDUCT.md.
Migrating from the Node.js server
@makeplane/plane-mcp-server (Node.js) is deprecated and unmaintained. This
Python implementation replaces it.
Node.js | Python |
|
|
|
|
|
|
Replace the command and args with the stdio configuration in
Quick start.
License
MIT — see LICENSE.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseBqualityFmaintenanceA Model Context Protocol server that enables LLMs to interact with Plane.so, allowing them to manage projects and issues through Plane's API for streamlined project management workflows.640MIT
- AlicenseBqualityCmaintenanceA Model Context Protocol (MCP) server that enables LLMs to interact with Plane.so, allowing them to manage projects and issues through Plane's API. Using this server, LLMs like Claude can directly interact with your project management workflows while maintaining user control and security.76261MIT
- AlicenseBqualityCmaintenanceAn MCP server that enables LLMs to fully manage a Plane workspace, including projects, work items, states, labels, cycles, modules, comments, and members.38MIT
- AlicenseNot gradedqualityBmaintenanceMCP server for the Plane project management API, enabling issue retrieval, listing, commenting, state changes, and creation.1MIT
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
A Model Context Protocol server for Wix AI tools
A Model Context Protocol (MCP) application for automated GitHub PR analysis and issue management.…
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/makeplane/plane-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server