collectionLABSCO SUMMARY
Plane stops being a tab you switch to in order to answer a question about your own work.
The daily tools are shaped for an agent rather than mirrored from the REST API: assignees change one person at a time instead of resubmitting the list, count_work_items answers "how many urgent" without fetching the items, and complete_cycle exists because Plane has no complete action of its own. The far edges of the surface — estimate points, relation definitions, property options — only matter once you are automating Plane rather than using it. If you would rather not keep an API key in your client config, take the hosted OAuth endpoint instead: it serves the same tools and handles sign-in when you connect.
What it is
A server over the Plane work-tracking API, covering projects, work items, cycles, modules, initiatives, milestones, intake, pages, estimates and workspace configuration. The current release groups them as one tool per resource with an action parameter; the per-operation names it used to advertise, such as create_work_item and list_cycles, still resolve.
What you get
- Work items created, updated, archived, searched by text and related to one another, with a single assignee or label added or removed instead of replacing the whole list
- Plane Query Language filtering on work item, cycle and module listings, and get_pql_reference to return the syntax while you are composing a filter
- Counts grouped by state, priority, project or type, so distribution questions are answered without pulling full work item payloads
- Cycle handling shaped around Plane's own model: complete_cycle closes a cycle by setting its end date to today, and manage_cycle_archive backdates a still-active cycle before archiving it
- Intake triage with the status codes Plane uses, including snoozed with a date and duplicate pointing at another work item
- Custom work item types and properties created, scoped and given values, with resolve_work_item_type finding or creating a type that is usable inside a project
- Attachments listed, fetched from a public URL, handed back as a presigned download link, or read into the conversation as text up to 1 MB or an image up to 5 MB
Requirements
Locally, Python 3.10 or newer plus PLANE_API_KEY and PLANE_WORKSPACE_SLUG in the client config — the key comes from Workspace Settings → API tokens — with PLANE_BASE_URL added for a self-hosted Plane. Hosted instead: https://mcp.plane.so/http/mcp handles OAuth on connect and needs no credentials in your config, or https://mcp.plane.so/http/api-key/mcp takes a personal access token plus an X-Workspace-slug header. Initiatives are a workspace feature that has to be switched on before the initiative tools answer. MIT.
Setup effort
One command plus a key — uvx plane-mcp-server stdio, then supply credentials
USE CASES
Clearing the intake queue
Read what landed in intake, then set each item's triage status — accepted turns it into an active work item, duplicate points at the item it repeats, snoozed needs a date — and leave the reasoning as a comment on the way through.
Answering "where is the release"
Ask for counts grouped by state or priority before pulling any item bodies, then narrow with a PQL filter and list only what is left. The syntax reference comes back as a tool call, so the filter is composed in the same turn rather than guessed at.
Closing out a sprint
Move whatever did not finish into the next cycle, close the current one, and archive it. Plane treats a cycle as complete once its end date is in the past, which is why both closing and archiving set that date for you.
Filing a bug from a screenshot someone linked
Create the work item, pull the file in from its public URL, and read it back so the model can describe what it shows before labelling the item. Images come back as an image up to 5 MB, text formats as a string up to 1 MB.
Working out what blocks what
Read the relation definitions first — built-in dependencies are fixed scheduling and blocking types, custom ones carry their own outward and inward labels — then relate the items using the definition that matches how the team actually talks.
Reporting time against a project
Pull the project-level worklog summary for the totals, drop into a single item's logs when a number looks wrong, and add the entry someone forgot. Durations are recorded in minutes.
30 tools
Listed in project docs. Your client may show a different list.
customercustomer_propertycustomer_requestcycleget_pql_referenceinitiativeintakelabelmembermilestonemodulepageprojectproject_estimatereleaserelease_labelrelease_tagstatetemplatework_logworkitemworkitem_activityworkitem_attachmentworkitem_commentworkitem_linkworkitem_propertyworkitem_relationworkitem_typeworkspaceBEFORE YOU INSTALL
What to know first
Tools you get
30 tools named in the project's documentation.
Requires
- uvx on PATH
- PLANE_API_KEY in your environment
INSTALLATION
Connect your client
Add the block to your client, or run the command directly.
Server setup
Configuration file
{
"mcpServers": {
"plane": {
"command": "uvx",
"args": [
"plane-mcp-server",
"stdio"
],
"env": {
"PLANE_API_KEY": "<YOUR_PLANE_API_KEY>",
"PLANE_WORKSPACE_SLUG": "<YOUR_PLANE_WORKSPACE_SLUG>"
}
}
}
}uvx
uvx plane-mcp-server stdioHosted endpoint
https://mcp.plane.so/http/mcpAdd this hosted endpoint to your MCP client, then sign in.