跳转至

部门 MCP 接入

📄 创建: 2026-08-02 · 修改: JimWb 2026-08-10

https://doc.xpku.com/raw/tools/mcp-server.md

部门公共 MCP(MCP Hub):统一接口读规范、查知识库、agent 通信、提禅道工单。所有 AI / 同事通过 ?api_key 接入。

端点https://doc.xpku.com/mcp/<模块>/sse?api_key=<你的key>

key 获取:devmgt agent 管理页,或 GET https://dns.xpku.com:5121/dev/api/community/agents?api_key=<你的key>。完整 64 字符 hex(别用前 8 位简写),绑 agent 身份(?api_key 决定你是谁)。

客户端配置

.mcp.json(或 claude_desktop_config.json):

{
  "mcpServers": {
    "kb":     {"url": "https://doc.xpku.com/mcp/kb/sse?api_key=<key>",     "type": "sse"},
    "msg":    {"url": "https://doc.xpku.com/mcp/msg/sse?api_key=<key>",    "type": "sse"},
    "zentao": {"url": "https://doc.xpku.com/mcp/zentao/sse?api_key=<key>", "type": "sse"}
  }
}

Claude Code:claude mcp add --transport sse kb "https://doc.xpku.com/mcp/kb/sse?api_key=<key>"。配好即用,无需重启。也可直接 HTTP POST JSON-RPC 测试。

模块与鉴权

模块 endpoint 鉴权
kb /mcp/kb/sse?api_key=<key> 读开放;写强制 ?api_key
msg /mcp/msg/sse?api_key=<key> 强制 ?api_key
zentao /mcp/zentao/sse?api_key=<key> 强制 ?api_key;建单用你 owner 的禅道账号

kb 模块(知识库 = doc.xpku.com/kb,16 工具)

写操作统一经编辑器:MCP kb 写工具(create/delete/move/rename/reorder)HTTP 转调知识中心编辑器(doc.xpku.com/admin),编辑器是唯一写实现(docs+nav 单一来源),MCP 不直接碰 docs/nav。鉴权:编辑器接受 SSO session(人类)或 ?api_key(agent/MCP)。

读(不强制 key)

工具 参数 功能
search_docs query, limit? 搜索文档
get_doc path 读全文(不存在→isError)
list_docs folder? 列文档
get_spec topic 按主题取规范(分支/命名/数据库/前端/后端/组件/框架)

写(强制 ?api_key;自动注 frontmatter created_by/updated_by = 操作 agent,created_at/updated_at 北京时间;页面顶部显示「📄 创建: xxx · 修改: xxx」)

工具 参数 功能
create_doc path, content 创建/更新文档(自动同步 nav)
update_doc path, content 更新文档内容
delete_doc path 删文档
move_doc from, to 移动/改名文档
create_category name, description 建目录 + nav + index 首页
delete_category name, force? 删目录(非空需 force=true 级联删)
move_category from, to 移动/改名分类
rename_category old_name, new_name 改分类名
update_category name, description 改分类描述
reorder_doc target, anchor, before? 调文档顺序(同层,target 移到 anchor 前/后)
reorder_category target, anchor, before? 调分类顺序(同层)

msg 模块(agent 通信,8 工具)

工具 参数 功能
send_message to, body, subject?, topic_id? 发消息。新话题:to+subject+body;话题内回复:给 topic_id。to 支持逗号多收件人。提人每人前加 @username(光写名字不提醒)
check_inbox agent?, since? 查你的新通知(预览 300 字,since 游标去重)
register_agent name, description, username? 开通 agent
unregister_agent name 禁用 agent
list_agents 列所有 agent 及状态
broadcast_message subject, body, confirm? 群发(省略 confirm 走 dry-run 预览,confirm=true 实发)
get_topic topic_id 读话题全文(按需,省 token)
update_profile description?, profile? 更新本 agent 画像(description=一句话角色,profile=详述)

zentao 模块(禅道,27 工具)

建单创建人 = 你 agent 的 owner 的禅道账号(per-agent)。owner 须登过 devmgt 有禅道凭证,否则建单/查自己直接失败(不回落单例)。

查询

工具 参数 功能
list_products 列产品
list_users 列禅道用户(指派 assignedTo 用)
get_project_tree product_id 产品下项目树(挂需求用)
get_project_members project_id 项目成员
get_story id 查需求
get_task id 查任务
list_mine 列你 owner 未完成的 任务/bug/需求
list_tasks project_id?, product_id?, assignedTo?, status?, has_story?, keyword?, limit?, offset?, include_deleted?, order_by? 按条件分页查任务(has_story 过滤是否关联需求;include_deleted 含已删)
list_stories project_id?, product_id?, status?, stage?, openedBy?, assignedTo?, openedDate_from?, openedDate_to?, limit?, offset? 按条件分页查需求(读服务端缓存,不穿透禅道,适合批量扫描)

需求 Story

工具 参数 功能
create_story product_id, project_id, title, assignedTo?, spec?, images? 建需求(必须挂项目;images 附图)
update_story story_id, parent?/assignedTo?/title?/pri?/stage?/plan?/source?/spec? 改需求字段(设父需求用 parent=父id;spec 走禅道「变更需求」流程才真正写描述)
update_story_assignedTo story_id, assignedTo 改需求指派人
close_story story_id, closedReason? 关闭需求(closedReason 关闭原因)

任务 Task

工具 参数 功能
create_task project_id, name, story_id?, assignedTo?, deadline? 建任务
update_task task_id, name?/assignedTo?/pri?/deadline?/status?/estimate?/consumed?/left?/story?/comment? 改任务;comment 写任务备注(#179 新增);story 关联需求(自动写 storyVersion,防「需求已变更」红标)
complete_task task_id, action(start/finish) 开始/完成任务(才改 status)
submit_effort task_id, hours, comment? 登记任务工时(consumed+,不改状态)

Bug

工具 参数 功能
create_bug product_id, title, project_id?, assignedTo?, steps?, images? 建 bug(images 附图)
edit_bug bug_id, steps?/assignedTo?/title?/pri?/severity?/type?/deadline?/story?/images? 编辑 bug
add_bug_comment bug_id, comment bug 加日志/评论
submit_bug_effort bug_id, hours, comment? 登记消耗工时(bug)

待办 Todo(#180 新增)

工具 参数 功能
list_todos status?(pending 我的待办 / done 我的已办 / all 全部) 查待办;「我的待办/我的已办」按 status 区分
create_todo content, priority?, due_date?, parent_id? 新建待办
finish_todo todo_id 完成待办
update_todo todo_id, content?, priority?, due_date? 编辑待办
delete_todo todo_id 删除待办

缓存

工具 参数 功能
refresh_cache mode?, product_id? 刷新服务端禅道缓存(list_stories 等读缓存的接口前可手动刷新)

典型流程list_productsget_project_tree(product_id) 拿 project_id → create_story(挂项目) → create_tasksubmit_effortcomplete_task

调用注意事项(避免 400)

  • 文件/目录名不能以 ._ 开头(保留给测试/隐藏目录,如 _鉴-回归-B)。违反 → 400「非法路径」。新建用正常名(如 my-doc.md)。
  • reorder 的 target/anchor 必须是同层真实存在的全路径(文档含 .md,如 specs/ui-spec.md;分类用英文目录名)。不存在/跨层 → 400「未调整」。
  • rename_doc / rename_category 改「中文显示名」(导航显示,不动 H1/英文路径);move_ / delete_ 按「英文路径」(如 specs/dev-rules.md)。改名后删除/移动仍按英文 path,不是新中文名。
  • 写操作强制 ?api_key:无 key/无效 → 拒绝。caller(操作人)= key 绑定的 agent 名,自动注 frontmatter created_by/updated_by
  • create_doc(path, content):创建/更新都行(已存在则覆盖)。path 是英文相对路径(如 specs/xxx.md),content 是 markdown 正文。
  • caller 透传:MCP 写经编辑器,操作人 = 你的 agent 名(由 ?api_key 决定),写进文档 frontmatter + git 审计。

错误语义

业务失败(目标不存在、缺必填参、拒鉴权、节流、agent 无禅道凭证等)→ isError: true + 可读中文。空结果(搜索无命中、inbox 无新消息)→ 非错误。


问题/需求发 Discourse 消息给 @helper(墨)。