plane-mcp-server

makeplane/plane-mcp-server

3.6

If you are the rightful owner of plane-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.

The Plane MCP Server enables AI agents and developer tools to interact with Plane workspaces programmatically, facilitating project management and automation.

Tools
46
Resources
0
Prompts
0

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) - Optional
  • PLANE_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 NameDescription
list_projectsList all projects in a workspace with optional pagination and filtering
create_projectCreate a new project with name, identifier, and optional configuration
retrieve_projectRetrieve a project by ID
update_projectUpdate a project with partial data
delete_projectDelete a project by ID
get_project_worklog_summaryGet work log summary for a project
get_project_membersGet all members of a project
get_project_featuresGet features configuration of a project
update_project_featuresUpdate features configuration of a project

Work Items

Tool NameDescription
list_work_itemsList all work items in a project with optional filtering and pagination
create_work_itemCreate a new work item with name, assignees, labels, and other attributes
retrieve_work_itemRetrieve a work item by ID with optional field expansion
retrieve_work_item_by_identifierRetrieve a work item by project identifier and issue sequence number
update_work_itemUpdate a work item with partial data
delete_work_itemDelete a work item by ID
search_work_itemsSearch work items across a workspace with query string

Cycles

Tool NameDescription
list_cyclesList all cycles in a project
create_cycleCreate a new cycle with name, dates, and owner
retrieve_cycleRetrieve a cycle by ID
update_cycleUpdate a cycle with partial data
delete_cycleDelete a cycle by ID
list_archived_cyclesList archived cycles in a project
add_work_items_to_cycleAdd work items to a cycle
remove_work_item_from_cycleRemove a work item from a cycle
list_cycle_work_itemsList work items in a cycle
transfer_cycle_work_itemsTransfer work items from one cycle to another
archive_cycleArchive a cycle
unarchive_cycleUnarchive a cycle

Modules

Tool NameDescription
list_modulesList all modules in a project
create_moduleCreate a new module with name, dates, status, and members
retrieve_moduleRetrieve a module by ID
update_moduleUpdate a module with partial data
delete_moduleDelete a module by ID
list_archived_modulesList archived modules in a project
add_work_items_to_moduleAdd work items to a module
remove_work_item_from_moduleRemove a work item from a module
list_module_work_itemsList work items in a module
archive_moduleArchive a module
unarchive_moduleUnarchive a module

Initiatives

Tool NameDescription
list_initiativesList all initiatives in a workspace
create_initiativeCreate a new initiative with name, dates, state, and lead
retrieve_initiativeRetrieve an initiative by ID
update_initiativeUpdate an initiative with partial data
delete_initiativeDelete an initiative by ID

Intake Work Items

Tool NameDescription
list_intake_work_itemsList all intake work items in a project with optional pagination
create_intake_work_itemCreate a new intake work item in a project
retrieve_intake_work_itemRetrieve an intake work item by work item ID with optional field expansion
update_intake_work_itemUpdate an intake work item with partial data
delete_intake_work_itemDelete an intake work item by work item ID

Work Item Properties

Tool NameDescription
list_work_item_propertiesList work item properties for a work item type
create_work_item_propertyCreate a new work item property with type, settings, and validation rules
retrieve_work_item_propertyRetrieve a work item property by ID
update_work_item_propertyUpdate a work item property with partial data
delete_work_item_propertyDelete a work item property by ID

Users

Tool NameDescription
get_meGet 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.