{"id":27671530,"url":"https://github.com/makeplane/plane-mcp-server","last_synced_at":"2026-03-03T18:04:49.113Z","repository":{"id":288392776,"uuid":"962294285","full_name":"makeplane/plane-mcp-server","owner":"makeplane","description":"Plane's Official Model Context Protocol Server 🔌 ⌨️ 🔥","archived":false,"fork":false,"pushed_at":"2026-02-25T10:31:42.000Z","size":237,"stargazers_count":161,"open_issues_count":18,"forks_count":63,"subscribers_count":5,"default_branch":"canary","last_synced_at":"2026-02-25T14:56:19.046Z","etag":null,"topics":["mcp-server","model-context-protocol"],"latest_commit_sha":null,"homepage":"https://plane.so","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/makeplane.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-04-08T00:13:08.000Z","updated_at":"2026-02-25T10:17:40.000Z","dependencies_parsed_at":"2025-10-30T12:16:47.921Z","dependency_job_id":null,"html_url":"https://github.com/makeplane/plane-mcp-server","commit_stats":null,"previous_names":["makeplane/plane-mcp-server"],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/makeplane/plane-mcp-server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/makeplane%2Fplane-mcp-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/makeplane%2Fplane-mcp-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/makeplane%2Fplane-mcp-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/makeplane%2Fplane-mcp-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/makeplane","download_url":"https://codeload.github.com/makeplane/plane-mcp-server/tar.gz/refs/heads/canary","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/makeplane%2Fplane-mcp-server/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30054019,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-03T17:46:22.538Z","status":"ssl_error","status_checked_at":"2026-03-03T17:46:22.036Z","response_time":61,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["mcp-server","model-context-protocol"],"created_at":"2025-04-24T23:36:59.589Z","updated_at":"2026-03-03T18:04:49.096Z","avatar_url":"https://github.com/makeplane.png","language":"Python","readme":"# Plane MCP Server\n\nA Model Context Protocol (MCP) server for Plane integration. This server provides tools and resources for interacting with Plane through AI agents.\n\n## Features\n\n* 🔧 **Plane Integration**: Interact with Plane APIs and services\n* 🔌 **Multiple Transports**: Supports stdio, SSE, and streamable HTTP transports\n* 🌐 **Remote \u0026 Local**: Works both locally and as a remote service\n* 🛠️ **Extensible**: Easy to add new tools and resources\n\n## Usage\n\nThe server supports three transport methods. **We recommend using `uvx`** as it doesn't require installation.\n\n### 1. Stdio Transport (for local use)\n\n**MCP Client Configuration** (using uvx - recommended):\n\n```json\n{\n  \"mcpServers\": {\n    \"plane\": {\n      \"command\": \"uvx\",\n      \"args\": [\"plane-mcp-server\", \"stdio\"],\n      \"env\": {\n        \"PLANE_API_KEY\": \"\u003cyour-api-key\u003e\",\n        \"PLANE_WORKSPACE_SLUG\": \"\u003cyour-workspace-slug\u003e\",\n        \"PLANE_BASE_URL\": \"https://api.plane.so\"\n      }\n    }\n  }\n}\n```\n\n### 2. Remote HTTP Transport with OAuth\n\nConnect to the hosted Plane MCP server using OAuth authentication.\n\n**URL**: `https://mcp.plane.so/http/mcp`\n\n**MCP Client Configuration** (for tools like Claude Desktop without native remote MCP support):\n\n```json\n{\n  \"mcpServers\": {\n    \"plane\": {\n      \"command\": \"npx\",\n      \"args\": [\"mcp-remote@latest\", \"https://mcp.plane.so/http/mcp\"]\n    }\n  }\n}\n```\n\n**Note**: OAuth authentication will be handled automatically when connecting to the remote server.\n\n### 3. Remote HTTP Transport using PAT Token\n\nConnect to the hosted Plane MCP server using a Personal Access Token (PAT).\n\n**URL**: `https://mcp.plane.so/api-key/mcp`\n\n**Headers**:\n- `Authorization: Bearer \u003cPAT_TOKEN\u003e`\n- `X-Workspace-slug: \u003cSLUG\u003e`\n\n**MCP Client Configuration** (for tools like Claude Desktop without native remote MCP support):\n\n```json\n{\n  \"mcpServers\": {\n    \"plane\": {\n      \"command\": \"npx\",\n      \"args\": [\"mcp-remote@latest\", \"https://mcp.plane.so/http/api-key/mcp\"],\n      \"headers\": {\n        \"Authorization\": \"Bearer \u003cPAT_TOKEN\u003e\",\n        \"X-Workspace-slug\": \"\u003cSLUG\u003e\"\n      }\n    }\n  }\n}\n```\n\n### 4. SSE Transport (Legacy)\n\n⚠️ **Legacy Transport**: SSE (Server-Sent Events) transport is maintained for backward compatibility. New implementations should use the HTTP transport (sections 2 or 3) instead.\n\nConnect to the hosted Plane MCP server using OAuth authentication via Server-Sent Events.\n\n**URL**: `https://mcp.plane.so/sse`\n\n**MCP Client Configuration** (for tools that support SSE transport):\n\n```json\n{\n  \"mcpServers\": {\n    \"plane\": {\n      \"command\": \"npx\",\n      \"args\": [\"mcp-remote@latest\", \"https://mcp.plane.so/sse\"]\n    }\n  }\n}\n```\n\n**Note**: OAuth authentication will be handled automatically when connecting to the remote server. This transport is deprecated in favor of the HTTP transport.\n\n\n## Configuration\n\n### Authentication\n\nThe server requires authentication via environment variables:\n\n- `PLANE_BASE_URL`: Base URL for Plane API (default: `https://api.plane.so`) - Optional\n- `PLANE_API_KEY`: API key for authentication (required for stdio transport)\n- `PLANE_WORKSPACE_SLUG`: Workspace slug identifier (required for stdio transport)\n- `PLANE_ACCESS_TOKEN`: Access token for authentication (alternative to API key)\n\n**Example** (for stdio transport):\n```bash\nexport PLANE_BASE_URL=\"https://api.plane.so\"\nexport PLANE_API_KEY=\"your-api-key\"\nexport PLANE_WORKSPACE_SLUG=\"your-workspace-slug\"\n```\n\n**Note**: For remote HTTP transports (OAuth or PAT), authentication is handled via the connection method (OAuth flow or PAT headers) and does not require these environment variables.\n\n## Available Tools\n\nThe server provides comprehensive tools for interacting with Plane. All tools use Pydantic models from the Plane SDK for type safety and validation.\n\n### Projects\n\n| Tool Name | Description |\n|-----------|-------------|\n| `list_projects` | List all projects in a workspace with optional pagination and filtering |\n| `create_project` | Create a new project with name, identifier, and optional configuration |\n| `retrieve_project` | Retrieve a project by ID |\n| `update_project` | Update a project with partial data |\n| `delete_project` | Delete a project by ID |\n| `get_project_worklog_summary` | Get work log summary for a project |\n| `get_project_members` | Get all members of a project |\n| `get_project_features` | Get features configuration of a project |\n| `update_project_features` | Update features configuration of a project |\n\n### Work Items\n\n| Tool Name | Description |\n|-----------|-------------|\n| `list_work_items` | List all work items in a project with optional filtering and pagination |\n| `create_work_item` | Create a new work item with name, assignees, labels, and other attributes |\n| `retrieve_work_item` | Retrieve a work item by ID with optional field expansion |\n| `retrieve_work_item_by_identifier` | Retrieve a work item by project identifier and issue sequence number |\n| `update_work_item` | Update a work item with partial data |\n| `delete_work_item` | Delete a work item by ID |\n| `search_work_items` | Search work items across a workspace with query string |\n\n### Cycles\n\n| Tool Name | Description |\n|-----------|-------------|\n| `list_cycles` | List all cycles in a project |\n| `create_cycle` | Create a new cycle with name, dates, and owner |\n| `retrieve_cycle` | Retrieve a cycle by ID |\n| `update_cycle` | Update a cycle with partial data |\n| `delete_cycle` | Delete a cycle by ID |\n| `list_archived_cycles` | List archived cycles in a project |\n| `add_work_items_to_cycle` | Add work items to a cycle |\n| `remove_work_item_from_cycle` | Remove a work item from a cycle |\n| `list_cycle_work_items` | List work items in a cycle |\n| `transfer_cycle_work_items` | Transfer work items from one cycle to another |\n| `archive_cycle` | Archive a cycle |\n| `unarchive_cycle` | Unarchive a cycle |\n\n### Modules\n\n| Tool Name | Description |\n|-----------|-------------|\n| `list_modules` | List all modules in a project |\n| `create_module` | Create a new module with name, dates, status, and members |\n| `retrieve_module` | Retrieve a module by ID |\n| `update_module` | Update a module with partial data |\n| `delete_module` | Delete a module by ID |\n| `list_archived_modules` | List archived modules in a project |\n| `add_work_items_to_module` | Add work items to a module |\n| `remove_work_item_from_module` | Remove a work item from a module |\n| `list_module_work_items` | List work items in a module |\n| `archive_module` | Archive a module |\n| `unarchive_module` | Unarchive a module |\n\n### Initiatives\n\n| Tool Name | Description |\n|-----------|-------------|\n| `list_initiatives` | List all initiatives in a workspace |\n| `create_initiative` | Create a new initiative with name, dates, state, and lead |\n| `retrieve_initiative` | Retrieve an initiative by ID |\n| `update_initiative` | Update an initiative with partial data |\n| `delete_initiative` | Delete an initiative by ID |\n\n### Intake Work Items\n\n| Tool Name | Description |\n|-----------|-------------|\n| `list_intake_work_items` | List all intake work items in a project with optional pagination |\n| `create_intake_work_item` | Create a new intake work item in a project |\n| `retrieve_intake_work_item` | Retrieve an intake work item by work item ID with optional field expansion |\n| `update_intake_work_item` | Update an intake work item with partial data |\n| `delete_intake_work_item` | Delete an intake work item by work item ID |\n\n### Work Item Properties\n\n| Tool Name | Description |\n|-----------|-------------|\n| `list_work_item_properties` | List work item properties for a work item type |\n| `create_work_item_property` | Create a new work item property with type, settings, and validation rules |\n| `retrieve_work_item_property` | Retrieve a work item property by ID |\n| `update_work_item_property` | Update a work item property with partial data |\n| `delete_work_item_property` | Delete a work item property by ID |\n\n### Users\n\n| Tool Name | Description |\n|-----------|-------------|\n| `get_me` | Get current authenticated user information |\n\n**Total Tools**: 55+ tools across 8 categories\n\n## Development\n\n### Running Tests\n\n```bash\npytest\n```\n\n### Code Formatting\n\n```bash\nblack plane_mcp/\nruff check plane_mcp/\n```\n\n## License\n\nMIT License - see LICENSE for details.\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n## Deprecation Notice\n\n⚠️ **The Node.js-based `plane-mcp-server` is deprecated and no longer maintained.**\n\nThis repository represents the new Python+FastMCP based implementation of the Plane MCP server. If you were using the previous Node.js version, please migrate to this Python-based version for continued support and updates.\n\nThe new implementation offers:\n- Better type safety with Pydantic models\n- Improved performance with FastMCP\n- Enhanced tool coverage\n- Active maintenance and development\n\nFor migration assistance, please refer to the configuration examples in this README or open an issue for support.\n\n**Old Node.js Configuration (Deprecated):**\n\nIf you were using the previous Node.js-based `@makeplane/plane-mcp-server`, your configuration looked like this:\n\n```json\n{\n  \"mcpServers\": {\n    \"plane\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"@makeplane/plane-mcp-server\"\n      ],\n      \"env\": {\n        \"PLANE_API_KEY\": \"\u003cYOUR_API_KEY\u003e\",\n        \"PLANE_API_HOST_URL\": \"\u003cHOST_URL_FOR_SELF_HOSTED\u003e\",\n        \"PLANE_WORKSPACE_SLUG\": \"\u003cYOUR_WORKSPACE_SLUG\u003e\"\n      }\n    }\n  }\n}\n```\n\n**Please migrate to the new Python-based configuration shown in the Usage section above.**\n\n","funding_links":[],"categories":["Productivity","📚 Projects (1974 total)","APIs and HTTP Requests","Official Servers","Support \u0026 Service Management","📦 Other","MCP Servers \u0026 Protocol"],"sub_categories":["Project Management","MCP Servers","How to Submit"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmakeplane%2Fplane-mcp-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmakeplane%2Fplane-mcp-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmakeplane%2Fplane-mcp-server/lists"}