yunxiao-projex-mcp
This MCP server exposes Alibaba Cloud Yunxiao Projex project-management tools scoped to a single configured project.
Read project metadata, current AccessKey user, project members, work-item types/fields/statuses, work items, comments, and sprints.
Query/paginate work items by category, status, assignee, sprint, title, or
assigned_to_me; retrieve individual work items and checkisMine.Create/update work items, including custom fields and Markdown/RichText descriptions; delete work items with explicit
confirm=true.Create/update work-item comments and delete comments with explicit
confirm=true; reply viaparent_id.Create sprints with owner IDs and dates; list/get existing sprints; sprint update/delete are not provided.
Download authenticated work-item files/images from rich-text
fileIdentifiers up to 10 MiB, optionally saving locally.Enforces project scoping and Bot credentials; destructive actions require confirmation, and some project administration/attachment uploads/relations/etc. are out of scope.
Provides tools for interacting with Alibaba Cloud Yunxiao Projex project management, enabling management and retrieval of work items, sprints, comments, project members, and project metadata through the Projex OpenAPI.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@yunxiao-projex-mcp list the open work items in the current sprint"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
云效 Projex 项目管理 MCP
An MCP server for Alibaba Cloud Yunxiao (阿里云云效) Projex project management. It exposes work items, sprints, comments, members, current-user identity, project metadata and authenticated file downloads as MCP tools over stdio.
基于阿里云云效 Projex OpenAPI 的 MCP 服务。使用 YUNXIAO_USER_* Bot Key,所有工具固定作用于 YUNXIAO_API_PROJECT_ID 指定的项目,无法访问其他项目。
安装
从 PyPI 运行,无需本地克隆:
uvx yunxiao-projex-mcp或安装到本地环境:
uv tool install yunxiao-projex-mcp本地开发:
uv sync --all-extrasRelated MCP server: nod-mcp
配置
支持以下环境变量:
变量 | 必填 | 说明 |
| 是 | 云效 Bot AccessKey ID |
| 是 | 云效 Bot AccessKey Secret |
| 否 | 当前 AccessKey 用户的云效显示名(如 |
| 是 | 云效组织 ID |
| 是 | 云效 Projex 项目 ID |
| 否 | 默认 |
标准 mcpServers 配置(Magpie / Claude Desktop / Cursor 等通用):
{
"mcpServers": {
"aliyun-yunxiao-projex": {
"command": "uvx",
"args": ["yunxiao-projex-mcp"],
"env": {
"YUNXIAO_USER_ACCESS_KEY_ID": "your-access-key-id",
"YUNXIAO_USER_ACCESS_KEY_SECRET": "your-access-key-secret",
"YUNXIAO_USER_NAME": "yunxiao-bot",
"YUNXIAO_API_ORG_ID": "your-organization-id",
"YUNXIAO_API_PROJECT_ID": "your-project-id",
"YUNXIAO_API_ENDPOINT": "devops.cn-hangzhou.aliyuncs.com"
}
}
}
}YUNXIAO_API_ENDPOINT 可省略,省略时使用默认值;YUNXIAO_USER_NAME 也可省略,MCP 会通过当前 AccessKey 自动识别。
如果设置 YUNXIAO_USER_NAME,值必须与当前 AccessKey 用户在云效的显示名完全一致(不是 AccessKey ID,也不是 aliyun_ram:... 完整 username)。
多个 Agent 要区分身份时,必须各自使用独立的 AccessKey;共享同一个 AccessKey 会被视为同一个用户。
本地 .env
从源码运行时,可在项目根目录放置 .env:
YUNXIAO_API_ORG_ID=...
YUNXIAO_API_PROJECT_ID=...
YUNXIAO_API_ENDPOINT=devops.cn-hangzhou.aliyuncs.com
YUNXIAO_USER_ACCESS_KEY_ID=...
YUNXIAO_USER_ACCESS_KEY_SECRET=...
YUNXIAO_USER_NAME=yunxiao-bot建议执行 chmod 600 .env,并确保 .env 不被提交到版本库。
接入 Codex
codex mcp add aliyun-yunxiao-projex \
--env YUNXIAO_API_ORG_ID=... \
--env YUNXIAO_API_PROJECT_ID=... \
--env YUNXIAO_USER_ACCESS_KEY_ID=... \
--env YUNXIAO_USER_ACCESS_KEY_SECRET=... \
--env YUNXIAO_USER_NAME=yunxiao-bot \
-- uvx yunxiao-projex-mcp
codex mcp list等价的 ~/.codex/config.toml 配置:
[mcp_servers.aliyun-yunxiao-projex]
command = "uvx"
args = ["yunxiao-projex-mcp"]
[mcp_servers.aliyun-yunxiao-projex.env]
YUNXIAO_API_ORG_ID = "..."
YUNXIAO_API_PROJECT_ID = "..."
YUNXIAO_USER_ACCESS_KEY_ID = "..."
YUNXIAO_USER_ACCESS_KEY_SECRET = "..."
YUNXIAO_USER_NAME = "yunxiao-bot"接入 Magpie
该服务已发布到官方 MCP Registry,名称为 io.github.MrLinWang/aliyun-yunxiao-projex-mcp。在 Magpie 的 Discover 中搜索 yunxiao、projex、aliyun 或 mcp 即可找到,安装时按提示填写环境变量。
也可以直接编辑 Magpie 的 MCP 配置,使用上面的 mcpServers JSON 片段。
配套 Skill
仓库中的 skills/yunxiao-projex/ 是配合本 MCP 使用的 Agent Skill,包含查询、写入、工作项生命周期状态同步、自身负责人识别和附件下载约定。
在仓库根目录执行以下命令,链接到 Codex 技能目录,后续 git pull 会自动同步。
如果目标位置已有实体目录,先移走,避免在其中生成嵌套链接:
mkdir -p "${CODEX_HOME:-$HOME/.codex}/skills"
ln -sfn "$PWD/skills/yunxiao-projex" "${CODEX_HOME:-$HOME/.codex}/skills/yunxiao-projex"该 Skill 依赖已配置的 aliyun-yunxiao-projex MCP(若注册为其他名称,工具前缀会随之变化),
不会另行保存或读取云效凭据。
新增或修改 MCP 工具、参数或权限边界时,应同步更新该 Skill,并运行:
python3 "${CODEX_HOME:-$HOME/.codex}/skills/.system/skill-creator/scripts/quick_validate.py" \
skills/yunxiao-projex工具
只读:get_project、get_current_user、list_project_members、list_workitem_types、list_workitem_fields、list_workitem_statuses、list_workitems、get_workitem、get_workitem_file、list_workitem_comments、list_sprints、get_sprint。
写入:create_workitem、update_workitem、create_workitem_comment、update_workitem_comment、create_sprint。
删除:delete_workitem、delete_workitem_comment,均要求 confirm=true。
使用约定
assigned_to、owner_ids、participants、trackers、verifier使用项目成员的账号 ID,可通过list_project_members获取。判断工作项负责人是否为自己时,调用
get_current_user获取当前用户的identifier,或直接使用list_workitems的assigned_to_me=true;list_workitems/get_workitem返回的isMine为true/false。isMine为null表示未配置YUNXIAO_USER_NAME且自动识别失败,可调用get_current_user查看原因。YUNXIAO_USER_NAME只用于识别当前用户,不能直接传给assigned_to;assigned_to仍使用成员 identifier。提交 PR 后,Skill 会把实际 PR 链接写回对应云效工作项的评论,不能只写在最终答复里;已有评论仅在有误时更正,否则新建评论。
更新云效进展时默认新建评论,不修改此前已提交的评论;只有旧评论内容有误时才编辑原评论。
创建工作项前先查
list_workitem_types、list_workitem_fields和list_workitem_statuses;必填自定义字段(例如priority)通过custom_fields传入选项 ID。实现或修复已绑定的工作项时,Skill 会先读取当前状态流并按阶段推进:开工进入进行中,交付进入验证态,验收后再关闭;只读查询不改状态。
list_project_members内部固定使用targetType=Space。描述和评论默认使用 Markdown;日期使用
YYYY-MM-DD。get_workitem_file使用 Bot Key 认证获取下载地址并下载内容。传入工作项 identifier(workitem_id)及描述等富文本图片 URL 中的fileIdentifier(file_id);PNG、JPEG、GIF、WebP 以图片内容返回,其他文件以 Base64 嵌入资源返回,最大 10 MiB。客户端只读取
structuredContent、不渲染 MCP 图片块时,给get_workitem_file传save_to(目录或完整文件名)将附件保存到本地;返回 JSON 中的path可直接用于view_image等本地查看工具。删除评论和删除工作项会先校验资源属于当前项目,再执行删除;工作项删除为异步生效,列表索引可能需要数秒刷新。
create_workitem_comment默认创建顶级评论,回复评论时才需要传parent_id。
权限限制
当前 Bot 角色为“开发机器人”,修改项目字段、管理项目成员会返回 403。
不包含工时/预估、附件上传、工作项关联、工作项动态、项目创建/删除、迭代修改/删除。
代码库与流水线不在本服务范围内。
测试
.venv/bin/python -m pytest -m "not live"
YUNXIAO_LIVE_TESTS=1 .venv/bin/python -m pytest -m "live and not live_write"
YUNXIAO_LIVE_TESTS=1 YUNXIAO_LIVE_WRITE_TESTS=1 .venv/bin/python -m pytest -m live_write写入测试会创建 __mcp_probe__ 临时工作项并在结束时删除;create_sprint 不做线上写入测试,因为云效未提供删除迭代接口。
许可证
Available Tools
19 toolscreate_sprintA
在当前项目创建迭代。日期格式为 YYYY-MM-DD;owner_ids 使用成员账号 ID。云效没有删除迭代的接口。
Inputs: name (required), owner_ids (required), end_date, start_date. Returns: object
create_workitemA
在当前项目创建工作项。assigned_to 使用成员账号 ID;custom_fields 用于必填自定义字段,例如 priority。
Inputs: subject (required), category (required), assigned_to (required), workitem_type_id (required), +8 more. Returns: object
create_workitem_commentB
给当前项目内的工作项添加评论,默认 Markdown 格式。
Inputs: content (required), workitem_id (required), parent_id, format_type. Returns: object
delete_workitemBDestructive
删除当前项目内的工作项。必须显式传 confirm=true。
Inputs: confirm (required), workitem_id (required). Returns: object
delete_workitem_commentBDestructive
删除当前项目内工作项的一条评论。必须显式传 confirm=true。
Inputs: confirm (required), comment_id (required), workitem_id (required). Returns: object
get_current_userARead-only
获取当前 AccessKey 对应的云效用户及其在当前项目中的成员 ID。identifier 可用于与 assignedTo 比较;YUNXIAO_USER_NAME 设置后会严格校验。
Inputs: no named parameters. Returns: object
get_projectBRead-only
获取当前配置项目的基本信息。
Inputs: no named parameters. Returns: object
get_sprintARead-only
获取当前项目内单个迭代的信息。
Inputs: sprint_id (required). Returns: object
get_workitemBRead-only
获取当前项目内单个工作项的完整信息;isMine 表示负责人是否为当前 AccessKey 用户。
Inputs: workitem_id (required). Returns: object
get_workitem_fileARead-only
认证下载当前项目工作项中的文件或图片。图片直接返回图像内容;其他文件返回 Base64。可传 save_to 将文件保存到本地(目录或完整路径),返回的 path 可用 view_image 等工具查看。仅支持描述等富文本中的 fileIdentifier,最大 10 MiB。
Inputs: file_id (required), workitem_id (required), save_to.
list_project_membersARead-only
列出当前项目成员及其角色,返回可用于 assigned_to 的账号 ID。
Inputs: no named parameters. Returns: object
list_sprintsCRead-only
分页列出当前项目的迭代。
Inputs: next_token, max_results. Returns: object
list_workitem_commentsBRead-only
列出当前项目内某个工作项的评论。
Inputs: workitem_id (required). Returns: object
list_workitem_fieldsBRead-only
列出指定工作项类型的字段定义、是否必填及选项。
Inputs: workitem_type_id (required). Returns: object
list_workitemsARead-only
分页查询当前项目的工作项。可按标题、状态、负责人、迭代筛选;多个状态值按同一条件的可选值处理。assigned_to_me=true 只返回当前 AccessKey 用户负责的工作项;结果含 isMine。
Inputs: category (required), sprint_id, next_token, status_ids, +4 more. Returns: object
list_workitem_statusesBRead-only
列出指定工作项大类或类型的可用状态流。
Inputs: category (required), workitem_type_id. Returns: object
list_workitem_typesARead-only
列出当前项目指定大类(Req/Bug/Task)下的工作项类型。
Inputs: category (required). Returns: object
update_workitemBDestructiveIdempotent
更新当前项目内的工作项。fields 是字段 identifier 到新值的映射,不能包含 description;description 单独使用 description 参数更新。
Inputs: workitem_id (required), fields, description, description_format. Returns: object
update_workitem_commentCDestructiveIdempotent
修改当前项目内工作项的一条评论。
Inputs: content (required), comment_id (required), workitem_id (required), format_type. Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 19 tools
Most tools target distinct resources and actions: project metadata, workitems, comments, and sprints each have clearly separated operations. The three metadata lookups (list_workitem_types/fields/statuses) and the member-related pair (get_current_user vs list_project_members) could be momentarily confused, but the descriptions distinguish them well enough.
Every tool follows a strict snake_case verb_noun convention (get_, list_, create_, update_, delete_) applied consistently across projects, workitems, comments, and sprints. Sub-resources are composed predictably, e.g. list_workitem_comments, create_workitem_comment, create_sprint.
Nineteen tools is at the upper edge of comfortable, but the domain (workitems, comments, sprints, plus schema/introspection helpers) justifies nearly all of them. Each tool maps to a real operation rather than being redundant, though a couple of the metadata listers could arguably be consolidated.
Workitems and comments have full CRUD coverage, and the metadata/introspection tools (types, fields, statuses, members) support correct create/update calls. The main gap is sprints, which only offer list/get/create with no update or delete (the latter explicitly unavailable via the API), so sprint lifecycle management is partially a dead end.
Related MCP Connectors
Manage Pipefork API projects, drafts, connections, secrets, and deployments through MCP.
Manage Timequip projects, tasks, comments, members, and dashboards through MCP.
Project management shared by people and AI agents, with persistent project state through MCP.
Discovery, OAuth, project operations, and exact project MCP handoff for Spala backend projects.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables MCP-compatible clients to manage Zoho Sprints projects, sprints, items, statuses, and comments via the Zoho Sprints REST API.1-

nod-mcpofficial
AlicenseDqualityBmaintenanceProvides repository-backed project management tools for creating, updating, and listing work items, viewing project info, kanban boards and timelines, and exploring dependency graphs.8111 PyPI1MIT- FlicenseNot gradedqualityAmaintenanceEnables MCP clients to read a project's Git-backed kickoff, acceptance criteria, handoff package, progress, and next step, and to append validated, audited progress events as project records. It provides short-lived scoped credentials and fail-closed tool allowlisting for safe, resumable AI-assisted development.-
- FlicenseNot gradedqualityAmaintenanceEnables MCP clients to read a project’s kickoff card, acceptance criteria, AGENTS rules, handoff package, progress, Git trail, and next step, and to append validated, audited, idempotent progress events as Git-backed project records.-