Plane MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PLANE_API_KEY | No | Personal access token sent as X-API-Key. Alias: PLANE_TOKEN. | |
| PLANE_TIMEOUT | No | Request timeout in seconds. | 30 |
| PLANE_BASE_URL | No | Plane instance URL. The /api/v1 suffix is added automatically when needed. Alias: PLANE_URL. | https://api.plane.so |
| PLANE_OAUTH_TOKEN | No | OAuth access token sent as Authorization: Bearer ... | |
| PLANE_WORKSPACE_SLUG | Yes | Target workspace slug. Alias: PLANE_WORKSPACE. |
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": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_current_userA | Return the profile of the user the Plane API key belongs to. |
| list_workspace_membersA | List every member of the configured workspace. Useful for resolving a person's name to the member UUID expected by the
|
| list_projectsC | List projects in the workspace. |
| get_projectA | Fetch a single project by its UUID. |
| create_projectC | Create a project. |
| update_projectB | Update the provided fields of a project; omitted fields are left unchanged. |
| list_work_itemsB | List work items in a project (paginated). |
| get_work_itemA | Fetch a work item by project UUID and work item UUID. |
| get_work_item_by_identifierA | Fetch a work item by its human identifier, e.g. "PROJ-123". |
| search_work_itemsA | Search work items by text across names, identifiers and descriptions. This is the lightweight, always-available search. For filter-based queries
use |
| advanced_search_work_itemsA | Filtered work item search (Plane's advanced-search endpoint). Supports a structured |
| create_work_itemC | Create a work item in a project. |
| update_work_itemA | Update the provided fields of a work item; omitted fields are unchanged.
|
| delete_work_itemA | Permanently delete a work item. This cannot be undone. Prefer |
| list_statesA | List a project's workflow states (with their UUIDs and groups). Call this before setting the |
| list_labelsA | List a project's labels (with their UUIDs). Use this to resolve label names to the UUIDs expected by the |
| create_labelC | Create a label in a project. |
| list_cyclesA | List a project's cycles (sprints). |
| list_modulesC | List a project's modules. |
| list_commentsA | List the comments on a work item. |
| add_commentC | Add a comment to a work item. |
| update_commentC | Replace the body of an existing work item comment. |
| delete_commentA | Permanently delete a work item comment. This cannot be undone. |
| list_pagesB | List pages — workspace wiki pages, or a project's pages. |
| get_pageA | Fetch a page by UUID (workspace wiki page, or a project page). |
| create_pageA | Create a page — a workspace wiki page, or a page inside a project. |
| update_pageA | Update a page's title and/or body. At least one field is required. Note: updating a page replaces its body, so pass the full content you want. |
| archive_pageA | Archive a page. Archiving is reversible via |
| restore_pageA | Restore a previously archived page. |
| delete_pageA | Permanently delete a page. The page must be archived first. Plane rejects deleting a page that is still active, so call |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| triage_work_items | Ask the model to triage unstarted work items in a project. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| current_user_resource | The authenticated Plane user, as JSON. |
| projects_resource | All projects in the workspace, as JSON. |
TDQS
Scored across 30 tools
Most tools map cleanly to a distinct resource and action. The main potential confusion is between list_work_items, search_work_items, and advanced_search_work_items, but the descriptions clearly distinguish lightweight search from filtered search and paginated listing.
The set overwhelmingly follows a consistent snake_case verb_noun pattern like list_projects, create_work_item, archive_page. Minor deviations like advanced_search_work_items and get_work_item_by_identifier are still readable and predictable.
With 30 tools, this exceeds the 25-tool threshold for a 'too many' rating. The tools are individually useful, but the surface is large enough that an agent may struggle to choose among the many list, get, and search variants.
Core domains are well covered: work items, pages, comments, and projects all have solid lifecycle operations. Minor gaps exist, such as no update/delete for labels and read-only access to cycles and modules, but these are workable limitations rather than blocking dead ends.