plane-mcp-server
MCP server for Plane integration, enabling AI agents to interact with Plane APIs and services for project management tasks.
README
Plane MCP Server
A Model Context Protocol (MCP) server for Plane integration. This server provides tools and resources for interacting with Plane through AI agents.
Features
- š§ Plane Integration: Interact with Plane APIs and services
- š Multiple Transports: Supports stdio, SSE, and streamable HTTP transports
- š Remote & Local: Works both locally and as a remote service
- š ļø Extensible: Easy to add new tools and resources
Usage
The server supports three transport methods. We recommend using uvx as it doesn't require installation.
1. Stdio Transport (for local use)
MCP Client Configuration (using uvx - recommended):
{
"mcpServers": {
"plane": {
"command": "uvx",
"args": ["plane-mcp-server", "stdio"],
"env": {
"PLANE_API_KEY": "<your-api-key>",
"PLANE_WORKSPACE_SLUG": "<your-workspace-slug>",
"PLANE_BASE_URL": "https://api.plane.so"
}
}
}
}
2. Remote HTTP Transport with OAuth
Connect to the hosted Plane MCP server using OAuth authentication.
URL: https://mcp.plane.so/http/mcp
MCP Client Configuration (for tools like Claude Desktop without native remote MCP support):
{
"mcpServers": {
"plane": {
"command": "npx",
"args": ["mcp-remote@latest", "https://mcp.plane.so/http/mcp"]
}
}
}
Note: OAuth authentication will be handled automatically when connecting to the remote server.
3. Remote HTTP Transport using PAT Token
Connect to the hosted Plane MCP server using a Personal Access Token (PAT).
URL: https://mcp.plane.so/api-key/mcp
Headers:
Authorization: Bearer <PAT_TOKEN>X-Workspace-slug: <SLUG>
MCP Client Configuration (for tools like Claude Desktop without native remote MCP support):
{
"mcpServers": {
"plane": {
"command": "npx",
"args": ["mcp-remote@latest", "https://mcp.plane.so/http/api-key/mcp"],
"headers": {
"Authorization": "Bearer <PAT_TOKEN>",
"X-Workspace-slug": "<SLUG>"
}
}
}
}
4. SSE Transport (Legacy)
ā ļø Legacy Transport: SSE (Server-Sent Events) transport is maintained for backward compatibility. New implementations should use the HTTP transport (sections 2 or 3) instead.
Connect to the hosted Plane MCP server using OAuth authentication via Server-Sent Events.
URL: https://mcp.plane.so/sse
MCP Client Configuration (for tools that support SSE transport):
{
"mcpServers": {
"plane": {
"command": "npx",
"args": ["mcp-remote@latest", "https://mcp.plane.so/sse"]
}
}
}
Note: OAuth authentication will be handled automatically when connecting to the remote server. This transport is deprecated in favor of the HTTP transport.
Configuration
Authentication
The server requires authentication via environment variables:
PLANE_BASE_URL: Base URL for Plane API (default:https://api.plane.so) - OptionalPLANE_API_KEY: API key for authentication (required for stdio transport)PLANE_WORKSPACE_SLUG: Workspace slug identifier (required for stdio transport)PLANE_ACCESS_TOKEN: Access token for authentication (alternative to API key)
Example (for stdio transport):
export PLANE_BASE_URL="https://api.plane.so"
export PLANE_API_KEY="your-api-key"
export PLANE_WORKSPACE_SLUG="your-workspace-slug"
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.
Available Tools
The server provides comprehensive tools for interacting with Plane. All tools use Pydantic models from the Plane SDK for type safety and validation.
Projects
| Tool Name | Description |
|---|---|
list_projects |
List all projects in a workspace with optional pagination and filtering |
create_project |
Create a new project with name, identifier, and optional configuration |
retrieve_project |
Retrieve a project by ID |
update_project |
Update a project with partial data |
delete_project |
Delete a project by ID |
get_project_worklog_summary |
Get work log summary for a project |
get_project_members |
Get all members of a project |
get_project_features |
Get features configuration of a project |
update_project_features |
Update features configuration of a project |
Work Items
| Tool Name | Description |
|---|---|
list_work_items |
List all work items in a project with optional filtering and pagination |
create_work_item |
Create a new work item with name, assignees, labels, and other attributes |
retrieve_work_item |
Retrieve a work item by ID with optional field expansion |
retrieve_work_item_by_identifier |
Retrieve a work item by project identifier and issue sequence number |
update_work_item |
Update a work item with partial data |
delete_work_item |
Delete a work item by ID |
search_work_items |
Search work items across a workspace with query string |
Cycles
| Tool Name | Description |
|---|---|
list_cycles |
List all cycles in a project |
create_cycle |
Create a new cycle with name, dates, and owner |
retrieve_cycle |
Retrieve a cycle by ID |
update_cycle |
Update a cycle with partial data |
delete_cycle |
Delete a cycle by ID |
list_archived_cycles |
List archived cycles in a project |
add_work_items_to_cycle |
Add work items to a cycle |
remove_work_item_from_cycle |
Remove a work item from a cycle |
list_cycle_work_items |
List work items in a cycle |
transfer_cycle_work_items |
Transfer work items from one cycle to another |
archive_cycle |
Archive a cycle |
unarchive_cycle |
Unarchive a cycle |
Modules
| Tool Name | Description |
|---|---|
list_modules |
List all modules in a project |
create_module |
Create a new module with name, dates, status, and members |
retrieve_module |
Retrieve a module by ID |
update_module |
Update a module with partial data |
delete_module |
Delete a module by ID |
list_archived_modules |
List archived modules in a project |
add_work_items_to_module |
Add work items to a module |
remove_work_item_from_module |
Remove a work item from a module |
list_module_work_items |
List work items in a module |
archive_module |
Archive a module |
unarchive_module |
Unarchive a module |
Initiatives
| Tool Name | Description |
|---|---|
list_initiatives |
List all initiatives in a workspace |
create_initiative |
Create a new initiative with name, dates, state, and lead |
retrieve_initiative |
Retrieve an initiative by ID |
update_initiative |
Update an initiative with partial data |
delete_initiative |
Delete an initiative by ID |
Intake Work Items
| Tool Name | Description |
|---|---|
list_intake_work_items |
List all intake work items in a project with optional pagination |
create_intake_work_item |
Create a new intake work item in a project |
retrieve_intake_work_item |
Retrieve an intake work item by work item ID with optional field expansion |
update_intake_work_item |
Update an intake work item with partial data |
delete_intake_work_item |
Delete an intake work item by work item ID |
Work Item Properties
| Tool Name | Description |
|---|---|
list_work_item_properties |
List work item properties for a work item type |
create_work_item_property |
Create a new work item property with type, settings, and validation rules |
retrieve_work_item_property |
Retrieve a work item property by ID |
update_work_item_property |
Update a work item property with partial data |
delete_work_item_property |
Delete a work item property by ID |
Users
| Tool Name | Description |
|---|---|
get_me |
Get current authenticated user information |
Total Tools: 55+ tools across 8 categories
Development
Running Tests
pytest
Code Formatting
black plane_mcp/
ruff check plane_mcp/
License
MIT License - see LICENSE for details.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Deprecation Notice
ā ļø The Node.js-based plane-mcp-server is deprecated and no longer maintained.
This 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.
The new implementation offers:
- Better type safety with Pydantic models
- Improved performance with FastMCP
- Enhanced tool coverage
- Active maintenance and development
For migration assistance, please refer to the configuration examples in this README or open an issue for support.
Old Node.js Configuration (Deprecated):
If you were using the previous Node.js-based @makeplane/plane-mcp-server, your configuration looked like this:
{
"mcpServers": {
"plane": {
"command": "npx",
"args": [
"-y",
"@makeplane/plane-mcp-server"
],
"env": {
"PLANE_API_KEY": "<YOUR_API_KEY>",
"PLANE_API_HOST_URL": "<HOST_URL_FOR_SELF_HOSTED>",
"PLANE_WORKSPACE_SLUG": "<YOUR_WORKSPACE_SLUG>"
}
}
}
}
Please migrate to the new Python-based configuration shown in the Usage section above.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.