使用说明
平面MCP服务器
一种模型上下文协议(MCP)服务器,使LLM能够与 Plane.so,允许他们通过Plane的API管理项目和问题。使用此服务器,像Claude这样的LLM可以直接与您的项目管理工作流交互,同时保持用户控制和安全性。
⚠️ 重要提示: 此MCP服务器是专门为 飞机云 实例。它仅适用于托管在上的工作区
https://app.plane.so/workspace-slug。如果您使用自托管的Plane安装,则此服务器将不兼容。
注: 这是原始版本的增强版本 kelvin6365/平面mcp服务器,扩展了全面的Plane API功能,包括状态、模块(疾跑)、周期、标签、团队管理、注释、链接、附件、时间跟踪和问题类型。
特性
分页支持
- 基于光标的分页 适用于所有列表操作(项目、问题、模块、周期、标签)
- 可配置页面大小,每页最多100个项目
- 使用下一个/上一个游标浏览大型数据集
- 所有列表工具的一致分页
项目管理
- 按页码列出Plane工作区中的所有项目
- 获取特定项目的详细信息
问题管理
- 使用可自定义属性创建新问题
- 列出并筛选项目中的问题
- 获取有关特定问题的详细信息
- 用新信息更新现有问题
状态管理
- 列出项目中的所有状态
- 获取有关特定州的详细信息
- 使用可自定义属性创建新状态
- 更新现有状态
- 从项目中删除状态
模块(Sprint)管理
- 列出项目中的所有模块(sprint)
- 获取特定模块的详细信息
- 创建具有可自定义属性的新模块
- 更新现有模块
- 从项目中删除模块
- 列出分配给特定模块的问题
- 在模块中添加/删除问题
周期管理
- 列出项目中的所有周期
- 获取特定周期的详细信息
- 创建具有可自定义属性的新循环
- 更新现有周期
- 从项目中删除周期
- 列出分配给特定周期的问题
- 在周期中添加/删除问题
标签管理
- 列出项目中的所有标签
- 获取特定标签的详细信息
- 创建具有可自定义属性的新标签
- 更新现有标签
- 从项目中删除标签
团队和工作空间管理
- 列出工作区中的所有成员
- 列出分配给特定项目的成员
问题评论和沟通
- 列出、创建、更新和删除对问题的评论
- 跟踪讨论历史和协作
问题链接和外部参考
- 将外部链接附加到问题(文档、PR等)
- 管理和更新与问题相关的URL
文件附件
- 列出问题的文件附件
- 为新附件生成上传URL
发行活动和历史
- 查看问题的完整活动历史记录
- 跟踪所有更改和更新
时间跟踪(工作日志)
- 记录在特定问题上花费的时间
- 查看项目范围内的时间跟踪摘要
- 更新和管理工作日志条目
自定义问题类型
- 创建和管理自定义问题类型
- 定义项目特定的问题类别
入院问题(分诊)
- 处理入院/收件箱问题以进行分流
- 在项目分配之前管理问题提交
自定义问题属性
- 为问题类型创建和管理自定义属性
- 支持各种属性类型(文本、数字、日期、选项、布尔值)
- 为选定属性配置下拉选项
- 设置必填字段和验证规则
子问题和关系
- 创建具有父子关系的分层问题结构
- 将现有问题转化为子问题
- 列出并管理子问题树
- 将子问题转换回常规问题
问题转移操作
- 在周期之间转移问题,以更好地进行冲刺管理
- 批量将问题转移到不同的项目阶段
先决条件
- Node.js 22.x或更高版本
- Plane.so API密钥
- Plane.so工作空间
安装
选项1:使用NPM(推荐)
最快的入门方法是使用已发布的npm包:
{
"mcpServers": {
"plane": {
"command": "npx",
"args": [
"-y",
"@disrex/plane-mcp-server"
],
"env": {
"PLANE_API_KEY": "your_plane_api_key_here",
"PLANE_WORKSPACE_SLUG": "your_workspace_slug_here"
}
}
}
}
将此配置添加到您的Claude for Desktop配置文件中:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - 视窗:
%APPDATA%\Claude\claude_desktop_config.json
选项2:手动设置
如果您更喜欢手动设置服务器,请按照以下步骤操作:
- 克隆此存储库:
git clone https://github.com/disrex-group/plane-mcp-server.git
cd plane-mcp-server
- 安装依赖项:
npm install
- 构建服务器:
npm run build
获取您的飞机API证书
要使用此MCP服务器,您需要:
- 平面API键:从您的 个人设置 平面中的(非工作空间设置)
- 工作区蛞蝓:在您的Plane工作区URL中找到(例如。,
https://app.plane.so/workspace-slug/)
获得这些凭据后,在Claude配置中使用它们,如上面的安装选项所示。
可用工具
注: 工具名称使用连字符(例如。,
list-projects),而不是下划线。服务器将自动将下划线转换为连字符以保持兼容性。
列出项目
列出支持分页的Plane工作区中的所有项目。
参数:
per_page(可选):每页项目数(默认值:100,最大值:100)cursor(可选):分页光标格式为“value:offset:is_prev”
例子:
{
"per_page": 50
}
分页示例:
{
"per_page": 25,
"cursor": "project_name:25:false"
}
获取项目
获取特定项目的详细信息。
参数:
project_id:要检索的项目的ID
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef"
}
创建问题
在指定项目中创建新问题。
参数:
project_id:应创建问题的项目的IDname:问题的标题description_html:问题的HTML描述(平面API要求)priority(可选):问题的优先级(“紧急”、“高”、“中”、“低”、“无”)state_id(可选):此问题的状态IDassignees(可选):要分配给此问题的用户ID数组labels(可选):要分配给此问题的标签ID数组
注: 这
assignees和labels参数必须是ID字符串数组。常见错误包括提供字典/对象而不是数组,或者意外地将整个问题数据嵌套在这些字段中。服务器将尝试处理这些情况,但最好使用正确的格式。
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"name": "Implement new feature",
"description_html": "<p>We need to implement the new reporting feature</p>",
"priority": "high",
"assignees": ["user-id-1", "user-id-2"],
"labels": ["446cf3ad-446e-4b7a-8706-14121a0338d7", "ab0c39d4-dcae-4ccd-971a-f4c66d1e7db7"]
}
列出问题
使用可选的筛选和分页列出指定项目中的问题。
参数:
project_id:从中获取问题的项目IDstate_id(可选):按状态ID筛选priority(可选):按优先级筛选assignee_id(可选):按受让人ID筛选per_page(可选):每页项目数(默认值:100,最大值:100)cursor(可选):分页光标格式为“value:offset:is_prev”
示例:
基本过滤:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"priority": "high",
"per_page": 20
}
分页(第一页):
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"per_page": 20
}
使用分页(下一页使用上一个响应中的光标):
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"per_page": 20,
"cursor": "20:1:0"
}
得到问题
获取有关特定问题的详细信息。
参数:
project_id:包含问题的项目的IDissue_id:要检索的问题的ID
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"issue_id": "01def456-7890-12gh-3456-789ijklmnopq"
}
更新问题
更新项目中的现有问题。
参数:
project_id:包含问题的项目的IDissue_id:要更新的问题的IDname(可选):更新了问题的标题description_html(可选):问题的HTML描述(API飞机要求)priority(可选):更新了问题的优先级state_id(可选):更新了问题的状态IDassignees(可选):更新了分配给此问题的用户ID数组labels(可选):更新了分配给此问题的标签ID数组
注: 这
assignees和labels参数必须是ID字符串数组,遵循与创建问题工具相同的格式准则。
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"issue_id": "01def456-7890-12gh-3456-789ijklmnopq",
"priority": "urgent",
"description_html": "<p>Updated description with <strong>more details</strong></p>",
"labels": ["446cf3ad-446e-4b7a-8706-14121a0338d7", "7de2b3d1-ae1a-4651-a3df-717629d70c1a"]
}
状态管理工具
列表状态
列出项目中的所有状态。
参数:
project_id:从中获取状态的项目ID
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef"
}
获取状态
获取特定状态的详细信息。
参数:
project_id:包含状态的项目的IDstate_id:要检索的州的ID
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"state_id": "01def456-7890-12gh-3456-789ijklmnopq"
}
创建状态
在项目中创建新状态。
参数:
project_id:应在其中创建状态的项目的IDname:国家名称group:状态组(“未启动”、“已开始”、“完成”、“取消”)description(可选):状态描述color(可选):州的颜色代码(例如“#ff0000”)
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"name": "In Review",
"group": "started",
"description": "Issues currently under review",
"color": "#ffaa00"
}
更新状态
更新项目中的现有状态。
参数:
project_id:包含状态的项目的IDstate_id:要更新的州的IDname(可选):更新的州名称description(可选):更新状态描述color(可选):更新了州的颜色代码group(可选):已更新状态组
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"state_id": "01def456-7890-12gh-3456-789ijklmnopq",
"name": "Code Review",
"color": "#00ff00"
}
删除状态
从项目中删除状态。
参数:
project_id:包含状态的项目的IDstate_id:要删除的状态的ID
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"state_id": "01def456-7890-12gh-3456-789ijklmnopq"
}
模块(Sprint)管理工具
列出模块
列出具有分页支持的项目中的所有模块(sprint)。
参数:
project_id:要从中获取模块的项目的IDper_page(可选):每页项目数(默认值:100,最大值:100)cursor(可选):分页光标格式为“value:offset:is_prev”
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"per_page": 50
}
分页示例:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"per_page": 25,
"cursor": "module_name:25:false"
}
get模块
获取特定模块的详细信息。
参数:
project_id:包含模块的项目的IDmodule_id:要检索的模块的ID
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"module_id": "01def456-7890-12gh-3456-789ijklmnopq"
}
创建模块
在项目中创建新模块(sprint)。
参数:
project_id:应创建模块的项目的IDname:模块名称description(可选):模块说明start_date(可选):模块的开始日期(YYYY-MM-DD格式)target_date(可选):模块的目标结束日期(YYYY-MM-DD格式)status(可选):模块的状态(“计划”、“进行中”、“暂停”、“已完成”、“取消”)lead(可选):模块引线的用户IDmembers(可选):要分配为模块成员的用户ID数组
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"name": "Sprint 1 - Core Features",
"description": "Initial sprint focusing on core functionality",
"start_date": "2024-01-01",
"target_date": "2024-01-14",
"status": "planned",
"lead": "user-id-1",
"members": ["user-id-1", "user-id-2"]
}
更新模块
更新项目中的现有模块。
参数:
project_id:包含模块的项目的IDmodule_id:要更新的模块的IDname(可选):模块的更新名称description(可选):模块的更新描述start_date(可选):更新模块的开始日期target_date(可选):更新模块的目标结束日期status(可选):模块的更新状态lead(可选):模块负责人的更新用户IDmembers(可选):更新了模块成员的用户ID数组
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"module_id": "01def456-7890-12gh-3456-789ijklmnopq",
"status": "in-progress",
"target_date": "2024-01-21"
}
删除模块
从项目中删除模块。
参数:
project_id:包含模块的项目的IDmodule_id:要删除的模块的ID
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"module_id": "01def456-7890-12gh-3456-789ijklmnopq"
}
列出模块问题
列出特定模块中的所有问题。
参数:
project_id:包含模块的项目的IDmodule_id:从中获取问题的模块的ID
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"module_id": "01def456-7890-12gh-3456-789ijklmnopq"
}
向模块添加问题
向模块添加问题。
参数:
project_id:包含模块的项目的IDmodule_id:要向其中添加问题的模块的IDissues:要添加到模块的问题ID数组
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"module_id": "01def456-7890-12gh-3456-789ijklmnopq",
"issues": ["issue-id-1", "issue-id-2", "issue-id-3"]
}
从模块中删除问题
从模块中删除问题。
参数:
project_id:包含模块的项目的IDmodule_id:要从中删除问题的模块的IDissue_id:要从模块中删除的问题的ID
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"module_id": "01def456-7890-12gh-3456-789ijklmnopq",
"issue_id": "01ghi789-0123-45jk-6789-lmnopqrstuvw"
}
循环管理工具
列表周期
列出具有分页支持的项目中的所有周期。
参数:
project_id:从中获取周期的项目IDper_page(可选):每页项目数(默认值:100,最大值:100)cursor(可选):分页光标格式为“value:offset:is_prev”
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"per_page": 50
}
分页示例:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"per_page": 25,
"cursor": "cycle_name:25:false"
}
获取循环
获取特定周期的详细信息。
参数:
project_id:包含周期的项目的IDcycle_id:要检索的循环的ID
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"cycle_id": "01def456-7890-12gh-3456-789ijklmnopq"
}
创建循环
在项目中创建新循环。
参数:
project_id:应创建循环的项目IDname:循环名称owned_by:将拥有此周期的用户的IDdescription(可选):循环说明start_date(可选):周期的开始日期(YYYY-MM-DD格式)end_date(可选):周期结束日期(YYYY-MM-DD格式)
例子:
{
"project_id": "12345678-1234-5678-9abc-123456789def",
"name": "Q1 2024 Development Cycle",
"owned_by": "87654321-4321-8765-cba9-987654321fed",
"description": "First quarter development cycle",
"start_date": "2024-01-01",
"end_date": "2024-03-31"
}
更新周期
更新项目中的现有循环。
参数:
project_id:包含周期的项目的IDcycle_id:要更新的周期的IDname(可选):循环的更新名称description(可选):更新了循环描述start_date(可选):更新周期的开始日期(YYYY-MM-DD格式)end_date(可选):更新周期结束日期(YYYY-MM-DD格式)
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"cycle_id": "01def456-7890-12gh-3456-789ijklmnopq",
"name": "Q1 2024 Development Cycle - Updated",
"end_date": "2024-04-15"
}
删除周期
从项目中删除循环。
参数:
project_id:包含周期的项目的IDcycle_id:要删除的循环的ID
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"cycle_id": "01def456-7890-12gh-3456-789ijklmnopq"
}
列出循环问题
列出特定周期中的所有问题。
参数:
project_id:包含周期的项目的IDcycle_id:从中获取问题的周期ID
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"cycle_id": "01def456-7890-12gh-3456-789ijklmnopq"
}
在循环中添加问题
将问题添加到循环中。
参数:
project_id:包含周期的项目的IDcycle_id:要添加问题的周期IDissues:要添加到循环中的问题ID数组
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"cycle_id": "01def456-7890-12gh-3456-789ijklmnopq",
"issues": ["issue-id-1", "issue-id-2", "issue-id-3"]
}
从循环中删除问题
从循环中删除问题。
参数:
project_id:包含周期的项目的IDcycle_id:从中删除问题的周期IDissue_id:要从周期中删除的问题的ID
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"cycle_id": "01def456-7890-12gh-3456-789ijklmnopq",
"issue_id": "01ghi789-0123-45jk-6789-lmnopqrstuvw"
}
标签管理工具
列表标签
列出具有分页支持的项目中的所有标签。
参数:
project_id:要从中获取标签的项目的IDper_page(可选):每页项目数(默认值:100,最大值:100)cursor(可选):分页光标格式为“value:offset:is_prev”
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"per_page": 50
}
分页示例:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"per_page": 25,
"cursor": "label_name:25:false"
}
获取标签
获取特定标签的详细信息。
参数:
project_id:包含标签的项目的IDlabel_id:要检索的标签的ID
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"label_id": "01def456-7890-12gh-3456-789ijklmnopq"
}
创建标签
在项目中创建新标签。
参数:
project_id:应创建标签的项目的IDname:标签名称description(可选):标签说明color(可选):标签的颜色代码(例如“#ff0000”)
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"name": "Bug",
"description": "Issues related to bugs",
"color": "#ff0000"
}
更新标签
更新项目中的现有标签。
参数:
project_id:包含标签的项目的IDlabel_id:要更新的标签的IDname(可选):标签的更新名称description(可选):标签的更新描述color(可选):标签的更新颜色代码(例如“#ff0000”)
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"label_id": "01def456-7890-12gh-3456-789ijklmnopq",
"name": "Critical Bug",
"color": "#ff0000",
"description": "Issues that require immediate attention"
}
删除标签
从项目中删除标签。
参数:
project_id:包含标签的项目的IDlabel_id:要删除的标签的ID
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"label_id": "01def456-7890-12gh-3456-789ijklmnopq"
}
团队和工作区管理工具
列出工作区成员
列出工作区中的所有成员。
参数:无
例子:
{}
列出项目成员
列出特定项目中的所有成员。
参数:
project_id:从中获取成员的项目ID
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef"
}
问题评论工具
列出问题注释
列出对特定问题的所有评论。
参数:
project_id:包含问题的项目的IDissue_id:要从中获取评论的问题的ID
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"issue_id": "01def456-7890-12gh-3456-789ijklmnopq"
}
获取问题评论
获取特定注释的详细信息。
参数:
project_id:包含问题的项目的IDissue_id:包含评论的问题的IDcomment_id:要检索的评论的ID
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"issue_id": "01def456-7890-12gh-3456-789ijklmnopq",
"comment_id": "01ghi789-0123-45jk-6789-lmnopqrstuvw"
}
创建问题注释
对某个问题创建新评论。
参数:
project_id:包含问题的项目的IDissue_id:要评论的问题的IDcomment:评论文本
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"issue_id": "01def456-7890-12gh-3456-789ijklmnopq",
"comment": "This looks good, but we need to add unit tests before merging."
}
更新问题注释
更新对某个问题的现有评论。
参数:
project_id:包含问题的项目的IDissue_id:包含评论的问题的IDcomment_id:要更新的评论的IDcomment:更新的评论文本
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"issue_id": "01def456-7890-12gh-3456-789ijklmnopq",
"comment_id": "01ghi789-0123-45jk-6789-lmnopqrstuvw",
"comment": "Updated: This looks good after the latest changes, ready to merge."
}
删除问题注释
从问题中删除评论。
参数:
project_id:包含问题的项目的IDissue_id:包含评论的问题的IDcomment_id:要删除的评论的ID
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"issue_id": "01def456-7890-12gh-3456-789ijklmnopq",
"comment_id": "01ghi789-0123-45jk-6789-lmnopqrstuvw"
}
问题链接工具
列出问题链接
列出附加到问题的所有外部链接。
参数:
project_id:包含问题的项目的IDissue_id:要从中获取链接的问题的ID
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"issue_id": "01def456-7890-12gh-3456-789ijklmnopq"
}
获取问题链接
获取有关特定问题链接的详细信息。
参数:
project_id:包含问题的项目的IDissue_id:包含链接的问题的IDlink_id:要检索的链接的ID
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"issue_id": "01def456-7890-12gh-3456-789ijklmnopq",
"link_id": "01ghi789-0123-45jk-6789-lmnopqrstuvw"
}
创建问题链接
为问题创建新的外部链接。
参数:
project_id:包含问题的项目的IDissue_id:要添加链接的问题的IDtitle:链接的标题/名称url:要链接到的URL
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"issue_id": "01def456-7890-12gh-3456-789ijklmnopq",
"title": "Related Pull Request",
"url": "https://github.com/company/repo/pull/123"
}
更新问题链接
更新现有问题链接。
参数:
project_id:包含问题的项目的IDissue_id:包含链接的问题的IDlink_id:要更新的链接的IDtitle(可选):更新链接的标题/名称url(可选):更新的URL
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"issue_id": "01def456-7890-12gh-3456-789ijklmnopq",
"link_id": "01ghi789-0123-45jk-6789-lmnopqrstuvw",
"title": "Updated Documentation Link",
"url": "https://docs.example.com/updated-section"
}
删除问题链接
从问题中删除外部链接。
参数:
project_id:包含问题的项目的IDissue_id:包含链接的问题的IDlink_id:要删除的链接的ID
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"issue_id": "01def456-7890-12gh-3456-789ijklmnopq",
"link_id": "01ghi789-0123-45jk-6789-lmnopqrstuvw"
}
发布附件工具
列出问题附件
列出问题的所有文件附件。
参数:
project_id:包含问题的项目的IDissue_id:要从中获取附件的问题的ID
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"issue_id": "01def456-7890-12gh-3456-789ijklmnopq"
}
获取问题附件上传url
获取用于将文件附件上载到问题的预签名URL。
参数:
project_id:包含问题的项目的IDissue_id:要附加文件的问题的IDfile_name:要上载的文件的名称file_size:文件大小(字节)content_type:文件的MIME类型(例如,“image/png”、“application/pdf”)
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"issue_id": "01def456-7890-12gh-3456-789ijklmnopq",
"file_name": "screenshot.png",
"file_size": 1024000,
"content_type": "image/png"
}
问题活动工具
列出问题活动
列出问题的所有活动/历史记录。
参数:
project_id:包含问题的项目的IDissue_id:从中获取活动的问题ID
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"issue_id": "01def456-7890-12gh-3456-789ijklmnopq"
}
获取问题活动
获取特定问题活动的详细信息。
参数:
project_id:包含问题的项目的IDissue_id:包含活动的问题的IDactivity_id:要检索的活动的ID
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"issue_id": "01def456-7890-12gh-3456-789ijklmnopq",
"activity_id": "01ghi789-0123-45jk-6789-lmnopqrstuvw"
}
工作日志(时间跟踪)工具
列出问题工作日志
列出特定问题的所有时间日志。
参数:
project_id:包含问题的项目的IDissue_id:要从中获取工作日志的问题的ID
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"issue_id": "01def456-7890-12gh-3456-789ijklmnopq"
}
获取项目总工作日志
获取项目中所有问题记录的总时间。
参数:
project_id:从中获取总工作日志的项目ID
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef"
}
创建问题工作日志
为问题创建新的时间日志条目。
参数:
project_id:包含问题的项目的IDissue_id:要记录时间的问题IDduration:以小时为单位记录的时间(例如,2.5表示2小时30分钟)description(可选):已完成工作的描述
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"issue_id": "01def456-7890-12gh-3456-789ijklmnopq",
"duration": 3.5,
"description": "Fixed the authentication bug and added unit tests"
}
更新问题工作日志
更新现有的工作日志条目。
参数:
project_id:包含问题的项目的IDissue_id:包含工作日志的问题的IDworklog_id:要更新的工作日志的IDduration(可选):以小时为单位记录的更新时间description(可选):已完成工作的最新描述
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"issue_id": "01def456-7890-12gh-3456-789ijklmnopq",
"worklog_id": "01ghi789-0123-45jk-6789-lmnopqrstuvw",
"duration": 4.0,
"description": "Fixed critical bug and updated documentation"
}
删除问题工作日志
从问题中删除工作日志条目。
参数:
project_id:包含问题的项目的IDissue_id:包含工作日志的问题的IDworklog_id:要删除的工作日志的ID
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"issue_id": "01def456-7890-12gh-3456-789ijklmnopq",
"worklog_id": "01ghi789-0123-45jk-6789-lmnopqrstuvw"
}
问题类型工具
列出问题类型
列出项目中的所有自定义问题类型。
参数:
project_id:从中获取问题类型的项目ID
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef"
}
获取问题类型
获取特定问题类型的详细信息。
参数:
project_id:包含问题类型的项目的IDtype_id:要检索的问题类型的ID
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"type_id": "01def456-7890-12gh-3456-789ijklmnopq"
}
创建问题类型
在项目中创建新的自定义问题类型。
参数:
project_id:要在其中创建问题类型的项目的IDname:问题类型的名称description(可选):问题类型的描述
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"name": "Epic",
"description": "Large feature that spans multiple sprints"
}
更新问题类型
更新现有问题类型。
参数:
project_id:包含问题类型的项目的IDtype_id:要更新的问题类型的IDname(可选):问题类型的更新名称description(可选):更新的描述
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"type_id": "01def456-7890-12gh-3456-789ijklmnopq",
"name": "Major Epic",
"description": "Large feature spanning multiple quarters"
}
删除问题类型
从项目中删除问题类型。
参数:
project_id:包含问题类型的项目的IDtype_id:要删除的问题类型的ID
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"type_id": "01def456-7890-12gh-3456-789ijklmnopq"
}
进气问题工具
列出入学问题
列出项目中的所有接收/收件箱问题。
参数:
project_id:从中获取招生问题的项目ID
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef"
}
摄入问题
获取有关特定摄入问题的详细信息。
参数:
project_id:包含进气问题的项目IDissue_id:要检索的摄入问题的ID
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"issue_id": "01def456-7890-12gh-3456-789ijklmnopq"
}
产生摄入问题
创建新的接收/收件箱问题。
参数:
project_id:在中创建进气问题的项目IDname:招生问题的标题description_html(可选):问题的HTML描述priority(可选):问题的优先级(“紧急”、“高”、“中”、“低”、“无”)
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"name": "User reports login issues on mobile app",
"description_html": "<p>Multiple users experiencing login failures on iOS app version 2.1.3</p>",
"priority": "high"
}
更新进气问题
更新现有的摄入问题。
参数:
project_id:包含进气问题的项目IDissue_id:要更新的进气问题IDname(可选):更新标题description_html(可选):更新的HTML描述priority(可选):更新优先级
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"issue_id": "01def456-7890-12gh-3456-789ijklmnopq",
"name": "Updated: Multiple users experiencing login issues on mobile app",
"priority": "urgent",
"description_html": "<p>Updated: Now affecting Android users as well as iOS. Version 2.1.3 and 2.1.4</p>"
}
删除进气问题
删除进气问题。
参数:
project_id:包含进气问题的项目IDissue_id:要删除的取水问题的ID
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"issue_id": "01def456-7890-12gh-3456-789ijklmnopq"
}
列出问题属性
列出特定问题类型的所有自定义属性。
参数:
project_id:项目IDtype_id:要获取属性的问题类型的ID
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"type_id": "01def456-7890-12gh-3456-789ijklmnopq"
}
获得发行财产
获取特定问题属性的详细信息。
参数:
project_id:项目IDtype_id:问题类型的IDproperty_id:要检索的属性的ID
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"type_id": "01def456-7890-12gh-3456-789ijklmnopq",
"property_id": "01ghi789-0123-45jk-6789-lmnopqrstuvw"
}
创建问题属性
为问题类型创建新的自定义属性。
参数:
project_id:项目IDtype_id:问题类型的IDname:属性的内部名称display_name:属性的显示名称property_type:属性类型(文本、数字、日期、选项、多选项、BOOLEAN)description:物业描述(可选)is_required:是否需要此属性(可选)is_multi:是否允许多个值(可选)
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"type_id": "01def456-7890-12gh-3456-789ijklmnopq",
"name": "severity",
"display_name": "Bug Severity",
"property_type": "OPTION",
"description": "Severity level of the bug",
"is_required": true,
"is_multi": false
}
更新问题属性
更新现有问题属性。
参数:
project_id:项目IDtype_id:问题类型的IDproperty_id:要更新的属性的IDname:属性的内部名称(可选)display_name:属性的显示名称(可选)description:物业描述(可选)is_required:是否需要此属性(可选)is_multi:是否允许多个值(可选)
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"type_id": "01def456-7890-12gh-3456-789ijklmnopq",
"property_id": "01ghi789-0123-45jk-6789-lmnopqrstuvw",
"display_name": "Bug Severity Level",
"description": "Updated severity level description"
}
删除问题属性
删除问题属性。
参数:
project_id:项目IDtype_id:问题类型的IDproperty_id:要删除的属性的ID
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"type_id": "01def456-7890-12gh-3456-789ijklmnopq",
"property_id": "01ghi789-0123-45jk-6789-lmnopqrstuvw"
}
列出问题属性选项
列出下拉/选择问题属性的所有选项。
参数:
project_id:项目IDproperty_id:要获取选项的房产ID
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"property_id": "01ghi789-0123-45jk-6789-lmnopqrstuvw"
}
创建问题属性选项
为下拉/选择问题属性创建新选项。
参数:
project_id:项目IDproperty_id:要添加选项的属性的IDname:选项的名称description:选项说明(可选)sort_order:选项的排序顺序(可选)is_default:这是否是默认选项(可选)
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"property_id": "01ghi789-0123-45jk-6789-lmnopqrstuvw",
"name": "Critical",
"description": "Critical severity level",
"sort_order": 1,
"is_default": false
}
更新问题属性选项
更新下拉/选择问题属性的选项。
参数:
project_id:项目IDproperty_id:房产IDoption_id:要更新的选项的IDname:选项名称(可选)description:选项说明(可选)sort_order:选项的排序顺序(可选)is_default:这是否是默认选项(可选)
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"property_id": "01ghi789-0123-45jk-6789-lmnopqrstuvw",
"option_id": "01jkl012-3456-78mn-9012-opqrstuvwxyz",
"name": "High Priority",
"description": "High priority severity level"
}
列出子问题
列出父问题的所有子问题。
参数:
project_id:项目IDparent_issue_id:获取子问题的父问题ID
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"parent_issue_id": "01def456-7890-12gh-3456-789ijklmnopq"
}
创建子问题
在父问题下创建新的子问题。
参数:
project_id:项目IDparent_issue_id:父问题的IDname:子问题的标题description_html:子问题的HTML描述(可选)priority子问题的优先级(紧急、高、中、低、无)(可选)state_id:此子问题的状态ID(可选)assignees:要分配给此子问题的用户ID数组(可选)
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"parent_issue_id": "01def456-7890-12gh-3456-789ijklmnopq",
"name": "Fix validation bug",
"description_html": "<p>Fix the email validation issue in the login form</p>",
"priority": "high"
}
转换为子问题
将现有问题转换为另一个问题的子问题。
参数:
project_id:项目IDissue_id:要转换为子问题的问题的IDparent_issue_id:父问题的ID
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"issue_id": "01ghi789-0123-45jk-6789-lmnopqrstuvw",
"parent_issue_id": "01def456-7890-12gh-3456-789ijklmnopq"
}
转换为问题
将子问题转换回常规问题(删除父关系)。
参数:
project_id:项目IDissue_id:要转换为常规发行的子发行的ID
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"issue_id": "01ghi789-0123-45jk-6789-lmnopqrstuvw"
}
转让问题
将问题从一个周期转移到另一个周期。
参数:
project_id:项目IDcycle_id:从中转移问题的源周期IDnew_cycle_id:将问题转移到的目标周期的ID
例子:
{
"project_id": "01abc123-4567-89de-0123-456789abcdef",
"cycle_id": "01def456-7890-12gh-3456-789ijklmnopq",
"new_cycle_id": "01ghi789-0123-45jk-6789-lmnopqrstuvw"
}
发展
- 安装开发依赖项:
npm install --save-dev typescript @types/node
- 在开发模式下启动服务器:
npm run dev
测试
您可以使用MCP检查器测试服务器:
npx @modelcontextprotocol/inspector node dist/index.js
例子
以下是一些在设置Plane MCP服务器后可以尝试与Claude进行交互的示例:
基础项目与问题管理
- “你能列出我的Plane工作区中的所有项目吗?”
- “请在营销项目中创建一个名为“更新社交媒体策略”的新的高优先级问题”
- “开发项目中的所有高优先级问题是什么?”
- “更新QA项目中的问题#123,将其优先级更改为紧急”
Sprint/模块管理
- “在开发项目中创建一个名为'Q1 2024 Features'的新冲刺,持续时间为2周”
- “显示后端项目当前冲刺中的所有问题”
- “将#456和#789问题添加到“API开发”模块中”
- “项目中当前有哪些冲刺活动?”
工作流和状态管理
- “列出前端项目中可用的所有工作流状态”
- 为后端项目创建一个名为“代码审查”的新状态
- “将问题#123移至“进行中”状态”
周期与计划管理
- “创建2024年第一季度从1月1日到3月31日的开发周期”
- “显示分配给当前开发周期的所有问题”
- “将高优先级问题添加到‘发布准备’周期中”
标签和组织
- 列出项目中所有可用的标签,并创建新的“安全”标签
- “将‘Bug’和‘高优先级’标签应用于问题#789”
团队和成员管理
- “此工作区中的所有成员是谁?”
- “显示分配给后端项目的团队成员”
- “列出当前冲刺中分配给John的所有问题”
高级工作流
- 创建一个新的冲刺,添加5个具体问题,并将其设置为下周一开始
- “显示所有项目的所有逾期问题及其当前状态”
- 创建包含问题、冲刺和团队分配的全面项目状态报告
Claude将使用适当的工具与Plane交互,同时在创建或修改任何数据之前征求您的批准。
安全考虑
- API密钥需要正确的Plane权限才能运行
- 所有修改数据的操作都需要明确的用户批准
- 应适当保护环境变量
- API密钥不应提交给版本控制
贡献
- 从以下位置分叉存储库 discx组/平面mcp服务器
- 创建功能分支(
git checkout -b feature/amazing-feature) - 提交您的更改(
git commit -m 'Add some amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求
徽章
此项目使用几个徽章来提供有关状态、质量和兼容性的快速信息:
可用徽章
-
NPM版本:在npm上显示最新发布的版本
[](https://badge.fury.io/js/@disrex%2Fplane-mcp-server) -
MCP目录质量:Archestra.ai MCP目录中的质量分数
[](https://www.archestra.ai/mcp-catalog/server/plane-mcp-server) -
许可证:MIT许可证徽章
[](https://opensource.org/licenses/MIT) -
CI状态:GitHub操作工作流状态
[](https://github.com/disrex-group/plane-mcp-server/actions/workflows/nodejs-ci.yml) -
TypeScript:技术徽章
[](https://www.typescriptlang.org/) -
Plane.so兼容性:自定义兼容性徽章
[](https://plane.so) -
MCP协议:模型上下文协议徽章
[](https://modelcontextprotocol.io)
创建自定义徽章
您可以使用创建自定义徽章 Shields.io:
- 基本格式:
https://img.shields.io/badge/{label}-{message}-{color} - 动态徽章:使用端点获取实时数据(npm下载、GitHub stars等)
- 样式选项:添加
?style=flat-square,?style=for-the-badge等等。
自定义徽章示例:
[](https://your-link.com)
徽章服务
- Shields.io:最全面的徽章服务
- 徽章愤怒:专门针对软件包管理器
- Archestra.ai MCP目录:MCP服务器的质量徽章
- GitHub操作:自动CI/CD状态徽章
许可证
此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。
支持
如果您遇到任何问题或有疑问:
- 检查 GitHub问题部分
- 请参阅MCP文件 模型上下文协议.io
- 以详细的复制步骤打开新一期
存储库历史记录
这款增强型叉子建立在原始叉子的优良基础之上 kelvin6365/平面mcp服务器,增加了全面的项目管理能力。