Plane问题管理服务器

用于管理Plane问题队列(分类工作流)的服务器,支持自托管或云端实例。

  • by amaiko-ai
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 amaiko-ai/plane-mcp-server

使用说明

飞机进气口MCP服务器

用于管理的MCP服务器 飞机 入院队列(分流工作流程)。适用于任何Plane实例-自托管或云。

特性

招生管理(核心)

  • 列出摄入项目 具有可选的状态过滤和摘要统计信息
  • 接受摄入项目 并转换为带有标签的常规问题
  • 拒绝/拒绝摄入项目 保持队列整洁
  • 将项目标记为重复项 降低噪音

上下文发现

  • 列出项目 查找项目ID和标识符
  • 通过可读ID获取问题 (例如FIRST-123)用于快速访问
  • 列出项目问题 查找重复项并理解上下文
  • 列出标签 查找用于对已接受项目进行分类的ID
  • 列表状态 了解项目工作流程
  • 获取工作区成员 用于分配问题

协作

  • 添加评论 记录分流决定和注意事项
  • 获取问题评论 回顾讨论历史

安装

Homebrew(推荐用于macOS/Linux)

brew install https://raw.githubusercontent.com/amaiko-ai/plane-mcp-server/main/Formula/plane-mcp-server.rb

然后配置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"
      }
    }
  }
}

配置位置: ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)

更新: brew upgrade plane-mcp-server

视窗

从下载并解压缩Windows二进制文件 发布:

  • plane-mcp-server-windows-x64.exe.zip (提取以获得 .exe)

然后在以下位置配置Claude Desktop %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"
      }
    }
  }
}

快速安装脚本(替代方案-macOS/Linux)

macOS和Linux:

curl -fsSL https://raw.githubusercontent.com/amaiko-ai/plane-mcp-server/main/install.sh | bash

这将自动下载、安装和配置所有内容。

手动安装

选项1:独立二进制

从以下网址下载适用于您平台的预构建二进制文件 最新版本:

  • macOS ARM64 (苹果硅): plane-mcp-server-macos-arm64.xz
  • macOS x64 (英特尔): plane-mcp-server-macos-x64.xz
  • Linux x64: plane-mcp-server-linux-x64.xz
  • Linux ARM64: plane-mcp-server-linux-arm64.xz
  • Windows x64: plane-mcp-server-windows-x64.exe.zip

下载后:

macOS/Linux:

# Decompress the binary
xz -d plane-mcp-server-macos-arm64.xz

# Make it executable
chmod +x plane-mcp-server-macos-arm64

# macOS only: Remove quarantine attribute to allow execution
xattr -d com.apple.quarantine plane-mcp-server-macos-arm64

窗户:

# Extract the zip file (right-click → Extract All)
# Or via PowerShell:
Expand-Archive plane-mcp-server-windows-x64.exe.zip

然后手动配置Claude Desktop:

{
  "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"
      }
    }
  }
}

配置位置: ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)

选项2:通过npm(需要Node.js)

Click to expand npm installation instructions

添加到您的 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问题:

在macOS上,Claude Desktop(GUI应用程序)可能找不到 npx 在你的路径。如果您看到以下错误 spawn npx ENOENT,使用绝对路径 npx:

# Find your npx location
which npx
# Example output: /usr/local/bin/npx or /Users/you/.nvm/versions/node/v20.0.0/bin/npx

然后用绝对路径更新你的配置:

{
  "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"
      }
    }
  }
}

配置文件位置:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 窗户: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json

Claude代码插件

如果您使用的是Claude Code的Amaiko Plane插件,则会自动配置此服务器。请参阅 平面插件 了解详情。

配置

服务器需要以下环境变量:

变量 必填 默认 描述
PLANE_API_KEY ✅ 是 - 您的飞机API密钥
PLANE_WORKSPACE_SLUG ✅ 是 - 您的工作区标识符
PLANE_API_HOST_URL ❌ 没有 https://app.plane.so 平面实例URL

获取API密钥

  1. 转到你的Plane实例
  2. 导航至 设置 → API令牌
  3. 创建新令牌
  4. 复制并将其用作 PLANE_API_KEY

寻找你的工作空间

您的工作区slug位于URL中: https://app.plane.so/{workspace-slug}/...

可用工具

上下文发现

list_项目

列出工作区中的所有项目以查找项目ID和标识符。

参数: 无

例子:

// No parameters needed

答复:

{
  "total": 5,
  "projects": [
    {
      "id": "abc-123",
      "name": "Product Development",
      "identifier": "PROD",
      "description": "Main product features"
    }
  ]
}

获取问题

使用可读标识符(例如FIRST-123)获取问题详细信息。比使用UUID容易得多!

参数:

  • project_identifier (字符串,必填):项目标识符(例如“FIRST”)
  • issue_number (字符串,必填):发行号(例如“123”)

例子:

{
  "project_identifier": "FIRST",
  "issue_number": "123"
}

列表_项目_问题

列出项目中的问题。有助于查找重复项和理解上下文。默认情况下最多返回20个问题。

参数:

  • project_id (string,必填):项目的UUID
  • limit (数字,可选):要返回的最大问题数(默认值:20,最大值:100)

例子:

{
  "project_id": "abc-123",
  "limit": 50
}

list_labels

列出项目中的所有标签。对已接受的摄入项目进行分类至关重要。

参数:

  • project_id (string,必填):项目的UUID

例子:

{
  "project_id": "abc-123"
}

答复:

{
  "total": 10,
  "labels": [
    {
      "id": "label-uuid",
      "name": "bug",
      "color": "#FF0000",
      "description": "Bug reports"
    }
  ]
}

list_states

列出项目中的所有工作流状态。

参数:

  • project_id (string,必填):项目的UUID

例子:

{
  "project_id": "abc-123"
}

get_workspace_members

获取工作区中的所有成员以分配问题。

参数: 无

例子:

// No parameters needed

答复:

{
  "total": 15,
  "members": [
    {
      "id": "user-uuid",
      "name": "John Doe",
      "email": "john@example.com",
      "role": 20
    }
  ]
}

评论

add_issue_comment

为问题或条目添加评论。非常适合记录分流决策。

参数:

  • project_id (string,必填):项目的UUID
  • issue_id (string,必填):问题的UUID
  • comment (字符串,必填):注释文本(纯文本,自动转换为HTML)

例子:

{
  "project_id": "abc-123",
  "issue_id": "issue-789",
  "comment": "Accepted as feature request. Assigning to sprint 24."
}

获取问题注释

获取某个问题或进气项目的所有评论。

参数:

  • project_id (string,必填):项目的UUID
  • issue_id (string,必填):问题的UUID

例子:

{
  "project_id": "abc-123",
  "issue_id": "issue-789"
}

招生管理

list_intake_items

以优化的响应格式列出项目的所有接收项目,包括汇总统计数据。

参数:

  • project_id (string,必填):项目的UUID
  • status (字符串,可选):按状态筛选
    • -2:待定
    • -1:拒绝
    • 1:接受
    • 2:重复

例子:

{
  "project_id": "abc-123-def-456",
  "status": "-2"  // Only pending items
}

答复:

{
  "summary": {
    "total": 47,
    "pending": 35,
    "accepted": 8,
    "declined": 3,
    "duplicate": 1
  },
  "items": [
    {
      "id": "uuid",
      "sequence_id": 123,
      "name": "Bug in login",
      "status": "pending",
      "priority": "high",
      "created_at": "2025-01-11T10:00:00Z"
    }
  ],
  "note": "Showing 50 of 47 items"
}

accept_intake_item

接受一个摄入项目并将其转化为常规问题。

参数:

  • project_id (string,必填):项目的UUID
  • issue_id (string,必填):摄入问题的UUID
  • label_ids (数组,可选):接受后添加标签UUID

例子:

{
  "project_id": "abc-123-def-456",
  "issue_id": "issue-789",
  "label_ids": ["label-1", "label-2"]
}

decline_intake_item

拒绝/拒绝摄入项目。

参数:

  • project_id (string,必填):项目的UUID
  • issue_id (string,必填):摄入问题的UUID

例子:

{
  "project_id": "abc-123-def-456",
  "issue_id": "issue-789"
}

标记_获取_复制

将一个条目标记为另一个问题的副本。

参数:

  • project_id (string,必填):项目的UUID
  • duplicate_issue_id (string,必填):重复摄入问题的UUID
  • primary_issue_id (字符串,必填):主要问题的UUID

例子:

{
  "project_id": "abc-123-def-456",
  "duplicate_issue_id": "issue-789",
  "primary_issue_id": "issue-123"
}

用法示例

使用克劳德桌面

配置后,您可以询问Claude:

基本摄入管理:

"Show me all pending intake items for project PROD"
"Accept PROD-123 and label it as a bug"
"Decline PROD-124 with a comment explaining why"
"Mark PROD-125 as duplicate of PROD-100"

上下文发现:

"List all my projects"
"Show me details for issue FIRST-123"
"Find recent issues in project ABC that might be related to 'authentication'"
"What labels are available in the Product project?"
"Who are the members in this workspace?"

智能工作流:

"Check PROD-123, find if there are duplicates, and if not, accept it with 'feature' label"
"Review all pending intake items, add comments to each explaining the triage decision"
"List all high-priority bugs in FIRST project to help me triage new intake items"

与MCP检查员一起

用于测试和调试:

npx @modelcontextprotocol/inspector npx @amaiko-ai/plane-mcp-server

发展

设置

git clone https://github.com/amaiko-ai/plane-mcp-server.git
cd plane-mcp-server
pnpm install

构建

# Build TypeScript
pnpm build

# Build standalone executables (requires Bun)
./scripts/build-executables.sh

本地测试

# 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 dev

MCP检验员测试

export PLANE_API_KEY=your-key
export PLANE_WORKSPACE_SLUG=your-workspace
npx @modelcontextprotocol/inspector pnpm dev

故障排除

服务器无法启动

检查环境变量:

echo $PLANE_API_KEY
echo $PLANE_WORKSPACE_SLUG

验证API关键工作:

curl -H "X-API-Key: $PLANE_API_KEY" \
  "https://app.plane.so/api/v1/workspaces/$PLANE_WORKSPACE_SLUG/projects/"

工具未出现在Claude中

  1. 完全重新启动Claude Desktop(退出并重新打开)
  2. 检查MCP日志:
    • macOS: ~/Library/Logs/Claude/mcp.log
    • 窗户: %APPDATA%\Claude\Logs\mcp.log
  3. 验证您的 claude_desktop_config.json 语法有效

API错误

401未经授权:

  • 验证您的API密钥是否正确
  • 检查Plane设置中的密钥是否未过期

404未找到:

  • 验证工作区段塞是否正确
  • 确保项目ID是有效的UUID

路线图

  • []支持创建进气项目
  • []批量操作(接受/拒绝倍数)
  • []按优先级、标签、受让人筛选
  • []与Plane webhooks集成
  • []支持自定义进气工作流程

贡献

欢迎投稿!拜托:

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 如果适用,添加测试
  5. 提交拉取请求

许可证

MIT© Amaiko

链接

支持