@amaiko-ai/plane-mcp-server
v1.3.1
Published
MCP server for managing Plane intake queue and issue workflows
Downloads
10
Readme
Plane Intake MCP Server
MCP server for managing Plane intake queue (triage workflow). Works with any Plane instance - self-hosted or cloud.
Features
- List intake items with optional status filtering
- Accept intake items and convert to regular issues with labels
- Decline/reject intake items to keep your queue clean
- Mark items as duplicates to reduce noise
Installation
Homebrew (Recommended for macOS/Linux)
brew install https://raw.githubusercontent.com/amaiko-ai/plane-mcp-server/main/Formula/plane-mcp-server.rbThen configure Claude Desktop:
{
"mcpServers": {
"plane-intake": {
"command": "plane-mcp-server",
"args": [],
"env": {
"PLANE_API_KEY": "your-api-key-here",
"PLANE_WORKSPACE_SLUG": "your-workspace-slug",
"PLANE_API_HOST_URL": "https://app.plane.so"
}
}
}
}Config location: ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)
Updates: brew upgrade plane-mcp-server
Windows
Download the Windows binary from releases:
plane-mcp-server-windows-x64.exe
Then configure Claude Desktop at %APPDATA%\Claude\claude_desktop_config.json:
{
"mcpServers": {
"plane-intake": {
"command": "C:\\path\\to\\plane-mcp-server-windows-x64.exe",
"args": [],
"env": {
"PLANE_API_KEY": "your-api-key-here",
"PLANE_WORKSPACE_SLUG": "your-workspace-slug",
"PLANE_API_HOST_URL": "https://app.plane.so"
}
}
}
}Quick Install Script (Alternative - macOS/Linux)
macOS and Linux:
curl -fsSL https://raw.githubusercontent.com/amaiko-ai/plane-mcp-server/main/install.sh | bashThis will download, install, and configure everything automatically.
Manual Installation
Option 1: Standalone Binary
Download the pre-built binary for your platform from the latest release:
- macOS ARM64 (Apple Silicon):
plane-mcp-server-macos-arm64 - macOS x64 (Intel):
plane-mcp-server-macos-x64 - Linux x64:
plane-mcp-server-linux-x64 - Linux ARM64:
plane-mcp-server-linux-arm64 - Windows x64:
plane-mcp-server-windows-x64.exe
Then configure Claude Desktop manually:
{
"mcpServers": {
"plane-intake": {
"command": "/path/to/plane-mcp-server-macos-arm64",
"args": [],
"env": {
"PLANE_API_KEY": "your-api-key-here",
"PLANE_API_HOST_URL": "https://app.plane.so",
"PLANE_WORKSPACE_SLUG": "your-workspace"
}
}
}
}Config location: ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)
Option 2: Via npm (Requires Node.js)
Add to your claude_desktop_config.json:
{
"mcpServers": {
"plane-intake": {
"command": "npx",
"args": ["-y", "@amaiko-ai/plane-mcp-server"],
"env": {
"PLANE_API_KEY": "your-api-key-here",
"PLANE_API_HOST_URL": "https://app.plane.so",
"PLANE_WORKSPACE_SLUG": "your-workspace"
}
}
}
}⚠️ macOS PATH Issue:
On macOS, Claude Desktop (GUI app) may not find npx in your PATH. If you see errors like spawn npx ENOENT, use the absolute path to npx:
# Find your npx location
which npx
# Example output: /usr/local/bin/npx or /Users/you/.nvm/versions/node/v20.0.0/bin/npxThen update your config with the absolute path:
{
"mcpServers": {
"plane-intake": {
"command": "/usr/local/bin/npx",
"args": ["-y", "@amaiko-ai/plane-mcp-server"],
"env": {
"PLANE_API_KEY": "your-api-key-here",
"PLANE_API_HOST_URL": "https://app.plane.so",
"PLANE_WORKSPACE_SLUG": "your-workspace"
}
}
}
}Configuration file locations:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
Claude Code Plugin
If you're using the Amaiko Plane plugin for Claude Code, this server is automatically configured. See the plane plugin for details.
Configuration
The server requires these environment variables:
| Variable | Required | Default | Description |
|----------|----------|---------|-------------|
| PLANE_API_KEY | ✅ Yes | - | Your Plane API key |
| PLANE_WORKSPACE_SLUG | ✅ Yes | - | Your workspace identifier |
| PLANE_API_HOST_URL | ❌ No | https://app.plane.so | Plane instance URL |
Getting Your API Key
- Go to your Plane instance
- Navigate to Settings → API Tokens
- Create a new token
- Copy and use it as
PLANE_API_KEY
Finding Your Workspace Slug
Your workspace slug is in the URL: https://app.plane.so/{workspace-slug}/...
Available Tools
list_intake_items
List all intake items for a project.
Parameters:
project_id(string, required): UUID of the projectstatus(string, optional): Filter by status-2: Pending-1: Declined1: Accepted2: Duplicate
Example:
{
"project_id": "abc-123-def-456",
"status": "-2" // Only pending items
}accept_intake_item
Accept an intake item and convert it to a regular issue.
Parameters:
project_id(string, required): UUID of the projectissue_id(string, required): UUID of the intake issuelabel_ids(array, optional): Label UUIDs to add after accepting
Example:
{
"project_id": "abc-123-def-456",
"issue_id": "issue-789",
"label_ids": ["label-1", "label-2"]
}decline_intake_item
Decline/reject an intake item.
Parameters:
project_id(string, required): UUID of the projectissue_id(string, required): UUID of the intake issue
Example:
{
"project_id": "abc-123-def-456",
"issue_id": "issue-789"
}mark_intake_duplicate
Mark an intake item as duplicate of another issue.
Parameters:
project_id(string, required): UUID of the projectduplicate_issue_id(string, required): UUID of the duplicate intake issueprimary_issue_id(string, required): UUID of the primary issue
Example:
{
"project_id": "abc-123-def-456",
"duplicate_issue_id": "issue-789",
"primary_issue_id": "issue-123"
}Usage Examples
With Claude Desktop
Once configured, you can ask Claude:
"Show me all pending intake items for project ABC"
"Accept intake item XYZ and add labels 'bug' and 'high-priority'"
"Decline intake item ABC"
"Mark intake item DEF as duplicate of issue GHI"With MCP Inspector
For testing and debugging:
npx @modelcontextprotocol/inspector npx @amaiko-ai/plane-mcp-serverDevelopment
Setup
git clone https://github.com/amaiko-ai/plane-mcp-server.git
cd plane-mcp-server
pnpm installBuild
# Build TypeScript
pnpm build
# Build standalone executables (requires Bun)
./scripts/build-executables.shTest Locally
# Set environment variables
export PLANE_API_KEY=your-key
export PLANE_WORKSPACE_SLUG=your-workspace
export PLANE_API_HOST_URL=https://app.plane.so
# Run in development mode
pnpm devTesting with MCP Inspector
export PLANE_API_KEY=your-key
export PLANE_WORKSPACE_SLUG=your-workspace
npx @modelcontextprotocol/inspector pnpm devTroubleshooting
Server won't start
Check environment variables:
echo $PLANE_API_KEY
echo $PLANE_WORKSPACE_SLUGVerify API key works:
curl -H "X-API-Key: $PLANE_API_KEY" \
"https://app.plane.so/api/v1/workspaces/$PLANE_WORKSPACE_SLUG/projects/"Tools not appearing in Claude
- Restart Claude Desktop completely (quit and reopen)
- Check the MCP logs:
- macOS:
~/Library/Logs/Claude/mcp.log - Windows:
%APPDATA%\Claude\Logs\mcp.log
- macOS:
- Verify your
claude_desktop_config.jsonsyntax is valid
API errors
401 Unauthorized:
- Verify your API key is correct
- Check key hasn't expired in Plane settings
404 Not Found:
- Verify workspace slug is correct
- Ensure project IDs are valid UUIDs
Roadmap
- [ ] Support for creating intake items
- [ ] Bulk operations (accept/decline multiple)
- [ ] Filtering by priority, labels, assignee
- [ ] Integration with Plane webhooks
- [ ] Support for custom intake workflows
Contributing
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
License
MIT © Amaiko
