plane-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PLANE_EMAIL | Yes | Login email | |
| PLANE_API_KEY | Yes | API key from Settings → API Tokens | |
| PLANE_BASE_URL | Yes | Your Plane CE instance URL | |
| PLANE_PASSWORD | Yes | Login password | |
| PLANE_WORKSPACE_SLUG | Yes | Workspace slug from URL |
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
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| plane-project-listA | List all projects in the workspace. |
| plane-project-detailC | Get details of a specific project. |
| plane-project-createB | Create a new project in the workspace. |
| plane-project-updateB | Update project settings (name, description, network). |
| plane-work-item-listA | List work items (issues) in a project with optional filters. |
| plane-work-item-detailA | Get full details of a work item including description, comments count, and relationships. |
| plane-work-item-createB | Create a new work item (issue). Description accepts markdown (default) or HTML. |
| plane-work-item-updateA | Update a work item. Only include fields you want to change. |
| plane-work-item-deleteB | Delete a work item. |
| plane-work-item-comment-listA | List all comments on a work item. |
| plane-work-item-comment-addA | Add a comment to a work item. Accepts markdown (default) or HTML. |
| plane-work-item-link-addB | Add a URL link to a work item. |
| plane-work-item-activityA | Get the activity history of a work item (state changes, assignments, comments, etc.). |
| plane-state-listA | List all workflow states in a project (Backlog, Todo, In Progress, Done, Cancelled). |
| plane-state-createC | Create a new workflow state in a project. |
| plane-label-listB | List all labels in a project. |
| plane-label-createB | Create a new label in a project. |
| plane-label-deleteC | Delete a label from a project. |
| plane-page-listB | List all pages in a project. |
| plane-page-detailA | Get page metadata AND readable HTML content. Returns the page object with description_html (the actual content), not the Yjs binary. |
| plane-page-get-contentA | Get the readable HTML content of a page. Returns the description_html field from the page model (NOT the Yjs binary endpoint). Optionally strips Plane editor classes for cleaner reading. |
| plane-page-createA | Create a new page with optional content in one call. Accepts markdown (default) or HTML. Markdown is auto-converted to Plane-formatted HTML with proper editor classes. |
| plane-page-updateB | Update page metadata (title, access level). |
| plane-page-set-contentA | Replace the entire page body. Accepts markdown (default) or HTML. Markdown is auto-converted to Plane-formatted HTML with proper editor classes (headings, paragraphs, blockquotes). |
| plane-page-append-contentA | Append content to the end of an existing page without replacing existing content. Accepts markdown (default) or HTML. |
| plane-page-insert-imageA | Insert an already-uploaded image asset into a page. Generates the proper element and appends it to the page content. Upload the image first with plane-asset-upload. |
| plane-page-deleteC | Delete a page from a project. |
| plane-asset-uploadA | Upload a file to Plane and get an asset UUID back. Supports local file paths or base64 data. The returned asset_id can be used with plane-page-insert-image to embed images in pages. 3-step presigned upload: create record → upload to storage → mark complete. Max file size: 5 MB. |
| plane-asset-deleteB | Delete an uploaded asset from the workspace. |
| plane-member-listB | List all members of a project. |
| plane-workspace-member-listB | List all members of the workspace. |
| plane-workspace-inviteA | Invite a user to the workspace by email. They must accept the invite before they can be added to projects. Role: 5=Guest, 10=Viewer, 15=Member, 20=Admin. |
| plane-workspace-invitation-listA | List pending workspace invitations. |
| plane-workspace-invitation-deleteB | Delete/revoke a pending workspace invitation. |
| plane-project-member-addA | Add an existing workspace member to a project. The user must already be a workspace member (accepted invite). Role: 5=Guest, 10=Viewer, 15=Member, 20=Admin. |
| plane-project-member-removeB | Remove a member from a project. |
| plane-module-listA | List all modules in a project. Modules group related issues together. |
| plane-module-detailC | Get details of a specific module. |
| plane-module-createB | Create a new module in a project. |
| plane-module-add-issuesC | Add issues to a module. |
| plane-module-remove-issueB | Remove an issue from a module. |
| plane-cycle-listB | List all cycles (sprints) in a project. |
| plane-cycle-detailC | Get details of a specific cycle. |
| plane-cycle-createB | Create a new cycle (sprint) in a project. |
| plane-cycle-add-issuesC | Add issues to a cycle. |
| plane-cycle-remove-issueB | Remove an issue from a cycle. |
| plane-instance-getA | Get instance settings (name, version, edition, domain, auth config). Requires admin access. |
| plane-instance-updateA | Update instance settings (name, domain, telemetry). Requires admin access. |
| plane-instance-config-getA | Get all instance configuration keys (auth providers, SMTP, AI, etc). Requires admin access. Categories: AUTHENTICATION, GOOGLE, GITHUB, GITLAB, GITEA, SMTP, AI, UNSPLASH, WORKSPACE_MANAGEMENT, INTERCOM |
| plane-instance-config-updateA | Update instance configuration keys. Pass key-value pairs. Example keys: ENABLE_SIGNUP, ENABLE_MAGIC_LINK_LOGIN, ENABLE_EMAIL_PASSWORD, IS_GOOGLE_ENABLED, GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, EMAIL_HOST, EMAIL_HOST_USER, EMAIL_HOST_PASSWORD, EMAIL_PORT, EMAIL_FROM, LLM_PROVIDER, LLM_MODEL, LLM_API_KEY, UNSPLASH_ACCESS_KEY, DISABLE_WORKSPACE_CREATION |
| plane-workspace-getA | Get workspace settings (name, slug, logo, organization_size, timezone). |
| plane-workspace-updateB | Update workspace settings (name, organization_size, timezone). |
| plane-workspace-logo-uploadB | Upload a new workspace logo. Accepts a local file path. Uses the presigned upload flow with entity_type WORKSPACE_LOGO. |
| plane-user-profile-getA | Get the current user profile (display name, avatar, theme, onboarding state). |
| plane-user-profile-updateA | Update the current user profile (display name, theme preferences). |
| plane-auth-statusA | Check authentication status for both v1 API key and session-based auth. Useful for debugging connection issues. |
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 56 tools
Each tool targets a specific resource and action (e.g., plane-cycle-create vs plane-cycle-list). Clear prefixes and distinct verbs (upload, create, list, update, delete) make it easy for an agent to differentiate. Only minor overlap exists (e.g., page content tools) but descriptions clarify differences.
All tools follow the pattern plane-<resource>-<action> in lowercase snake_case. Actions are consistently verbs (create, list, update, delete, add, remove) with rare noun usage (detail, status) that still fits the pattern. No mixing of conventions (e.g., camelCase) exists.
With 56 tools, the server is on the high end of typical MCP servers. While the tools cover many aspects of the Plane platform (assets, cycles, pages, work items, workspace), the fragmentation (e.g., 8 page tools) may overwhelm agents. Slightly over-scoped but not extreme.
Covers core CRUD for work items, projects, pages, and workspace but missing delete/update for cycles, modules, and states. Also lacks page commenting and label updates. Notable gaps exist in lifecycle coverage, which may force workarounds.