Plane MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PLANE_API_KEY | Yes | Your Plane personal access token | |
| PLANE_BASE_URL | Yes | The base URL of your Plane instance (e.g., https://plane.nzminds.com) | |
| PLANE_ALLOW_DELETE | No | Set to true to enable destructive delete_* tools (default: false) | |
| PLANE_WORKSPACE_SLUG | Yes | The slug of your Plane workspace (e.g., nzmt) | |
| PLANE_DEFAULT_PROJECT_ID | No | Optional fallback project ID when no project_id is provided to tools |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_projectsA | List all projects in the workspace. Use this to discover project IDs, names, and identifiers (the short code like 'TRAVELXS'). |
| get_projectA | Get full details of a single project by its UUID. |
| find_projectA | Find projects whose name or identifier contains |
| create_projectB | Create a project. |
| update_projectB | Update a project's editable fields. Only provided fields change. |
| list_work_itemsA | List all work items in a project (paginated automatically).
|
| get_work_itemA | Get a single work item by its UUID. |
| get_work_item_by_numberA | Look up a work item by its human number (e.g. 391 for TRAVELXS-391). |
| search_work_itemsB | Full-text search work items in a project by name/content. |
| create_work_itemB | Create a work item. Only
|
| update_work_itemB | Update any fields of a work item. Only provided fields change.
To change STATUS, pass |
| set_work_item_statusA | Change a work item's status by setting its state UUID. Convenience wrapper around update_work_item. Use list_states to map a status name (Backlog/Todo/In Progress/Done...) to its UUID. |
| list_statesA | List a project's states (statuses) with their UUIDs, names, and groups. Call this first to map a status name like 'In Progress' to its UUID before creating/updating work items. |
| find_stateA | Find a state by (case-insensitive) name and return it, or None. |
| create_stateC | Create a state. color is a hex like '#60646C'. group must be one of: backlog, unstarted, started, completed, cancelled. |
| update_stateB | Update a state. Only provided fields change. |
| list_labelsA | List a project's labels with their UUIDs (needed to tag work items). |
| create_labelB | Create a label. color is a hex like '#FF0000'. |
| update_labelA | Update a label. Only provided fields change. |
| list_cyclesA | List a project's cycles (sprints) with their UUIDs and dates. |
| get_cycleB | Get a single cycle by UUID. |
| create_cycleC | Create a cycle. Dates are 'YYYY-MM-DD'. owned_by is a member UUID. |
| update_cycleC | Update a cycle. Only provided fields change. |
| list_cycle_work_itemsB | List the work items assigned to a cycle. |
| add_work_items_to_cycleC | Add one or more work items (by UUID) to a cycle. |
| remove_work_item_from_cycleC | Remove a single work item from a cycle. |
| list_modulesA | List a project's modules with their UUIDs. |
| get_moduleB | Get a single module by UUID. |
| create_moduleB | Create a module. status: backlog|planned|in-progress|paused|completed|cancelled. lead/members are member UUIDs. |
| update_moduleB | Update a module. Only provided fields change. |
| list_module_work_itemsB | List the work items assigned to a module. |
| add_work_items_to_moduleB | Add one or more work items (by UUID) to a module. |
| remove_work_item_from_moduleB | Remove a single work item from a module. |
| list_commentsA | List all comments on a work item. |
| add_commentB | Add a comment to a work item. comment_html accepts HTML, e.g. 'Looks good'. access: INTERNAL or EXTERNAL. |
| update_commentC | Edit an existing comment. |
| list_membersA | List workspace members with their UUIDs, emails, and display names.
Use the returned member UUID for |
| find_memberA | Find members whose email or display name contains |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 38 tools
Tools are generally distinct, with clear separation via resource type (project, work item, cycle, module, comment, label, member, state) and action. The main overlap is set_work_item_status being a convenience wrapper around update_work_item, but descriptions clarify the purpose. Some pairs like list_projects/find_project could be confused but are well-defined.
Names follow a consistent verb_noun pattern (list_*, get_*, create_*, update_*, find_*, add_*, remove_*). Variations like get_work_item_by_number and set_work_item_status are logically extended forms, not inconsistent. The convention is uniform across all 38 tools.
With 38 tools, the server is well over the 25+ threshold that typically indicates too many. While the scope is broad (multiple project management entities), the set includes many similar list/get/update tools per resource, making it feel heavy. A more streamlined set could consolidate some operations.
The server covers create, read, and update for most resources, plus work item status changes and assignment to cycles/modules. However, there are no delete operations for any entity (projects, work items, labels, cycles, modules, comments, states), which is a notable gap in CRUD coverage. Also missing get_label and get_comment, but these are less critical.