alanflanders/plane-mcp
If you are the rightful owner of plane-mcp 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.
A Model Context Protocol (MCP) server for Plane, an open-source project management tool, enabling AI assistants to interact with Plane instances for issue management.
Plane MCP Server
A Model Context Protocol (MCP) server for Plane, the open-source project management tool. This server enables AI assistants like Cline to interact with your self-hosted Plane instance to create, manage, and search issues.
Perfect for Knowledge Management
This server is ideal for developers who want to:
- 📝 Document problems and solutions while coding
- 🔍 Build a searchable knowledge base of past fixes
- 📊 Track learning progress and technical challenges
- 🏷️ Organize issues with labels and priorities
- 🔄 Keep a history of bugs solved and features implemented
Prerequisites
- Node.js (v18 or later)
- A running Plane instance (Docker setup included)
- Plane API key (generated from your Plane account)
Installation
Step 1: Set up Plane (if not already done)
The Plane instance is already installed in ../plane-selfhost. To start it:
cd ../plane-selfhost
bash setup.sh
# Select option 2 to start Plane
Plane will be accessible at http://localhost:8010
Step 2: Create Your Plane Account
- Open http://localhost:8010 in your browser
- Complete the initial setup form (name, email, company, password)
- Create a workspace and project
Step 3: Generate API Key
- Log into your Plane instance
- Click your profile icon → Profile Settings
- Go to Personal Access Tokens tab
- Click Add personal access token
- Give it a name (e.g., "MCP Server") and optionally set an expiry
- Click Add personal access token
- Copy the generated API key (you won't see it again!)
Step 4: Configure the MCP Server
-
Copy the example environment file:
cp .env.example .env -
Edit
.envand add your configuration:PLANE_URL=http://localhost:8010 PLANE_API_KEY=your_api_key_here PLANE_WORKSPACE=your-workspace-slugTo find your workspace slug:
- In Plane, look at the URL when viewing your workspace
- It's the part after
/(e.g.,http://localhost/my-workspace→ slug ismy-workspace)
Step 5: Add to Cline MCP Configuration
Add this server to your Cline MCP settings file:
Windows: %APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json
macOS/Linux: ~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
Add the following to the mcpServers object:
{
"mcpServers": {
"plane-mcp": {
"command": "node",
"args": ["C:\\Users\\alan\\code\\linear-mcp\\plane-mcp-server.js"],
"disabled": false,
"alwaysAllow": []
}
}
}
Replace the path with the actual path to your plane-mcp-server.js file.
Step 6: Restart Cline
Restart VS Code or reload Cline for the MCP server to be recognized.
Available Tools
🏢 Workspace & Project Management
- get_workspaces - List all workspaces you have access to
- get_projects - List all projects in a workspace
📝 Issue Management
-
create_issue - Create a new issue
- Required:
project_id,title - Optional:
description,priority,state_id,assignee_ids,label_ids,workspace_slug
- Required:
-
get_issues - List issues from a project
- Required:
project_id - Optional:
state,priority,assignee,labels,workspace_slug
- Required:
-
get_issue - Get detailed information about a specific issue
- Required:
project_id,issue_id - Optional:
workspace_slug
- Required:
-
update_issue - Update an existing issue
- Required:
project_id,issue_id - Optional:
title,description,priority,state_id,workspace_slug
- Required:
-
add_comment - Add a comment to an issue
- Required:
project_id,issue_id,comment - Optional:
workspace_slug
- Required:
-
search_issues - Search for issues using text query
- Required:
query - Optional:
project_id,workspace_slug
- Required:
Usage Examples
Example Workflow: Documenting a Bug Fix
You: "I just fixed a bug with async timeouts. Document it in Plane."
Cline: [Uses create_issue]
Title: "Fixed async timeout in data fetcher"
Description: "Problem: Async calls were timing out after 5s
Solution: Added configurable timeout parameter with default of 30s
Code: Updated fetchData() function in utils/api.js"
Priority: medium
Labels: ["bug-fix", "async", "solved"]
---
3 weeks later...
You: "How did I fix that async timeout issue?"
Cline: [Uses search_issues with query "async timeout"]
Found issue: "Fixed async timeout in data fetcher"
[Shows full description with solution]
Example: Creating an Issue
Ask Cline:
"Create a Plane issue to document how I fixed the authentication bug.
Title: Fixed JWT token expiration handling
Description: Added refresh token logic that automatically renews tokens before expiry"
Example: Searching Past Solutions
Ask Cline:
"Search my Plane issues for anything related to database connection pooling"
Example: Listing Projects
Ask Cline:
"Show me all my Plane projects"
Best Practices
- Use Labels: Tag issues with technology, type, or topic (e.g., "python", "bug-fix", "optimization")
- Write Detailed Descriptions: Include problem context, solution, and code snippets
- Set Priorities: Use priority levels to indicate complexity or importance
- Regular Documentation: Create issues as you solve problems, while details are fresh
- Descriptive Titles: Make titles searchable and clear
Troubleshooting
Server won't start
- Check that
.envfile exists and has correct values - Verify Plane is running:
docker psshould show Plane containers - Ensure API key is valid (regenerate if needed)
"workspace_slug is required" error
- Add
PLANE_WORKSPACEto your.envfile, OR - Include
workspace_slugin each request
API authentication errors
- Regenerate your API key in Plane
- Update
.envwith the new key - Restart Cline
Cannot find issues
- Verify you're using the correct
project_id - Check that issues exist in that project
- Ensure your API key has access to the project
Project Structure
linear-mcp/
├── plane-mcp-server.js # Main MCP server implementation
├── package.json # Node.js dependencies
├── .env.example # Example environment configuration
├── .env # Your actual configuration (not in git)
└── README.md # This file
Security Notes
- Never commit
.env- It contains your API key - Store API keys securely
- Use appropriate token expiration dates
- Consider creating separate API keys for different purposes
Related Resources
License
MIT License - Feel free to modify and use as needed.
Contributing
This is a personal tool, but feel free to fork and customize for your needs!