MCP server for Plane project management platform with SSE transport support
The Plane MCP server demonstrates basic tool organization with consistent naming patterns (verb_noun convention across all 21 tools) and structured parameter definitions using JSON Schema. However, it suffers from significant gaps in tool and parameter descriptions, lacks output schema documentation, and provides minimal error handling guidance. Parameter descriptions are present but often generic (e.g., 'Workspace slug', 'Project ID'). No tool descriptions exceed 200 characters, and many lack actionable context about when to use each tool or what happens on failure. The server registers tools with FastMCP using a modular registration pattern, which is sound architecturally, but the quality of individual tool definitions is mediocre. Most tools accept only positional identifiers (workspace_slug, project_id) without accepting human-friendly names, forcing agents into discovery detours.
Missing tool descriptions. No tool has a description visible in the provided schema. LLMs cannot determine when or why to select a tool without this.
Output schemas not documented. No tools show documented return types or output field descriptions. LLMs cannot plan downstream tool chaining or extract the right data without knowing what fields to expect.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 49 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 48 | - | v1 |
Parameter descriptions are generic and lack actionable context. Parameters like 'Workspace slug', 'Project ID', 'Issue ID' do not explain what format is expected, where to obtain them, or what error to expect if missing. LLMs need format constraints (e.g., 'Workspace slug: alphanumeric identifier from Plane workspace settings') to avoid invalid input.
Tools require opaque system IDs (workspace_slug, project_id, issue_id) with no fallback to human-friendly names. This forces agents into unnecessary discovery calls and mismatches the chat data model where users reference entities by name, not internal identifier.
No error handling guidance. Tools provide no indication of how to recover from failures (e.g., 'workspace not found', 'permission denied'). LLMs cannot self-correct without recovery hints like 'Try list_workspaces() to find the correct workspace slug.'
No pagination metadata or limits documented. List tools (list_projects, list_issues, list_modules, list_cycles, list_module_issues, list_cycle_issues, list_worklogs) do not declare whether they accept limit/offset, return total counts, or cap results. Large result sets risk context window exhaustion.
No tool annotations. Tools are not tagged with readOnlyHint, destructiveHint, or idempotentHint. Create and update tools (create_project, create_issue, update_issue, create_module, add_issue_to_module, create_cycle, add_issue_to_cycle, create_worklog) have side effects but lack destructiveHint/idempotentHint metadata to guide agent planning.
No confirmation or dry-run pattern for destructive operations. create_project, create_issue, update_issue, and create operations lack a confirmation step or dry-run mode. Agents cannot preview changes before committing, risking unintended side effects.
Parameter chaining not documented. update_issue accepts workspace_slug, project_id, and issue_id but the parameter descriptions do not explain that create_issue output should provide these IDs for downstream use. Tool chains are implicit and error-prone.