新增禅道项目管理系统插件,含项目集/产品/项目/执行、需求 (story/epic/requirement)、Bug、任务、测试、计划与发布、反馈工单 八个工作流技能,自动配置 MCP 连接(禅道「个人中心 → 获取凭证」 自助生成 14 天 Token)。 MCP Server 是团队自建的 zentao-mcp 网桥(部署在 pm.ops.yixiong-tech.com/mcp),基于开源 openapi-mcp-server 二次开发。 Claude 侧走 userConfig 钥匙链 + 自定义 token 头;Codex 侧受限于官方 插件格式只支持 bearer_token_env_var,走 Authorization: Bearer——网桥 那边已经加了 preferred_header/bearer_mode 配置项统一归一化处理,两条 路径都验证过连通。 三轮审查(静态字段对照 openapi.json、跨文件一致性、真实端点实测) 修正过程中发现的问题,技能文档里引用的工具名全部跟服务器真实注册 的 118 个工具核对过。 同步更新:.claude-plugin/marketplace.json、.agents/plugins/marketplace.json、 README.md、CLAUDE.md 的插件索引与说明;README 补充「获取凭证」操作 截图(已脱敏)。 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016pFx6jnym6kRWRQ5JyDUNv
4.3 KiB
name, description
| name | description |
|---|---|
| zentao-project | 禅道项目集/产品/项目/执行管理:建项目集、建产品、建项目、建执行(迭代)、查层级关系。当用户说「建个产品」「开个新迭代」「这个项目集下有哪些产品」「项目状态」时使用。 |
禅道项目集 / 产品 / 项目 / 执行
前置:先读 zentao-shared(尤其"路径参数不出现在 inputSchema 里"和"ID 层级关系"两节)。
层级与挂靠关系
program 项目集(可选层)
└─ product 产品(program 可选,可以不挂任何项目集独立存在)
└─ project 项目(products 关联字段可选,parent 挂项目集也可选)
└─ execution 执行/迭代(project 必填,execution 必须先有 project)
只有 execution 是强制要有上级的(project 字段必填);product 和 project 的上级
关联都是可选字段,不要假设"没传 program 就建不了产品"。
查
get_programs() 项目集列表
get_programs_programID_products(programID) 某项目集下的产品
get_programs_programID_projects(programID) 某项目集下的项目
get_products() 产品列表(全量)
get_products_productID(productID) 产品详情
get_projects() 项目列表(全量,无单条详情接口)
get_projects_projectID_executions(projectID) 某项目下的执行/迭代
get_executions() 执行列表(全量)
get_executions_executionID(executionID) 执行详情
没有 get_projects_projectID(项目详情接口不存在,见 zentao-shared),要看单个
项目信息从 get_projects() 列表里按 ID 过滤。
建项目集
post_programs({ payload: { name, begin, end, PM?, desc? } })
name/begin/end 必填,日期格式以字段说明为准(一般是 YYYY-MM-DD)。
建产品
post_products({ payload: { name, program?, line?, type?, PO?, QD?, RD?, reviewer?,
acl?, desc? } })
只有 name 必填。type 取值受限:normal 正常 | branch 多分支 | platform 多平台;
acl 是 open 公开 | private 私有——这两个字段写错值会被后端拒绝,不要凭直觉编。
建项目
post_projects({ payload: { name, model, begin, end, workflowGroup, products?, parent?, PM? } })
必填字段比产品多:name/model/begin/end/workflowGroup。
model(项目管理方式)取值受限,创建前跟用户确认清楚要哪种:
scrum 敏捷 | waterfall 瀑布 | kanban 看板 | agileplus 融合敏捷 | waterfallplus 融合瀑布
workflowGroup(项目流程)是付费版功能,开源版可以不传/传空。
parent 是挂靠到哪个项目集(可选);products 是关联的产品(可选,接受多个)。
建执行(迭代)
post_executions({ payload: { project, name, begin, end, lifetime?, days?, products?,
plans?, PO?, QD?, PM?, RD?, acl? } })
project/name/begin/end 必填——project 必填意味着建执行前必须先有一个项目
ID,用 get_projects() 查出来给用户确认要挂在哪个项目下。
lifetime(执行类型)取值:short 短期 | long 长期 | ops 运维。
plans(关联计划)如果要传,格式是"产品 ID + 计划 ID"的二维数组,不是单纯的 ID 列表,
具体结构以工具 inputSchema 为准。
改 / 删
put_programs_programID({ programID, payload: {...} })
put_products_productID({ productID, payload: {...} })
put_projects_projectID({ projectID, payload: {...} })
put_executions_executionID({ executionID, payload: {...} })
delete_programs_programID({ programID }) # 删除前必须确认,不可逆
delete_products_productID({ productID })
delete_projects_projectID({ projectID })
delete_executions_executionID({ executionID })
删除任意一层,其下挂靠的产品/项目/执行/需求/任务等大概率会受影响(具体级联行为以
禅道后端实际处理为准,MCP 这层不做二次拦截)——删除前跟用户明确说清楚删的是哪一层、
可能影响下面挂了什么,参考 zentao-shared 的"删除是不可逆操作"约定。