codearts-req
Integrates with Huawei Cloud CodeArts Req requirement management API, providing tools to create CodeArts Req projects and list projects with pagination, search, filtering, and sorting.
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., "@codearts-reqCreate a new Scrum project named mobile-app in CodeArts"
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.
codearts-req-mcp-server
本地 stdio 类型的 MCP Server,封装华为云 CodeArts 需求管理(CodeArts Req) API,使用 AK/SK + SDK-HMAC-SHA256 签名鉴权。
服务名:
codearts-req传输方式:stdio(进程标准输入/输出,不监听端口)
运行时:Node.js(ESM)
SDK:
@modelcontextprotocol/sdk工具:
create_project、list_projects
功能
工具 | HTTP 请求 | 说明 |
|
| 创建 CodeArts 需求项目 |
|
| 分页查询项目列表 |
服务不会在启动时因为缺少环境变量而退出。缺少配置或参数错误会以 isError: true 的结构化中文结果返回给 MCP 客户端,便于智能体自行修正。
Related MCP server: plane-mcp
目录结构
codearts-req-mcp-server/
├── server.mjs # MCP Server、参数校验、签名、API 调用
├── package.json
├── package-lock.json
├── README.md
├── LICENSE
└── test/
├── signing.test.mjs # 签名算法与固定测试向量
├── tools.test.mjs # 参数校验、结果与错误处理
└── mcp-server.test.mjs # 真实 stdio + 本地 mock API 集成测试环境要求
Node.js >= 18.17.0(使用内置
fetch、AbortController、node:test)npm 9+(随 Node.js 安装即可)
已开通 CodeArts Req,并拥有创建/查询项目权限的华为云访问密钥(AK/SK)
安装
cd codearts-req-mcp-server
npm install环境变量
变量 | 必填 | 说明 |
| 是 | CodeArts Req 终端节点,如 |
| 是 | 华为云访问密钥 AK |
| 是 | 华为云访问密钥 SK |
终端节点与区域有关。华北-北京四使用 projectman-ext.cn-north-4.myhuaweicloud.com,其他区域请从
CodeArts Req 终端节点 查询。
CODEARTS_REQ_ENDPOINT 可以写成完整 URL,也可以只写域名(服务会自动补 https://):
https://projectman-ext.cn-north-4.myhuaweicloud.com
projectman-ext.cn-north-4.myhuaweicloud.comAK/SK 等价于账号凭证,请通过环境变量或 MCP 客户端的
environment注入,不要写入代码、README 或提交到 Git。
Linux / macOS
export CODEARTS_REQ_ENDPOINT="https://projectman-ext.cn-north-4.myhuaweicloud.com"
export CODEARTS_REQ_AK="你的AK"
export CODEARTS_REQ_SK="你的SK"Windows PowerShell
$env:CODEARTS_REQ_ENDPOINT = "https://projectman-ext.cn-north-4.myhuaweicloud.com"
$env:CODEARTS_REQ_AK = "你的AK"
$env:CODEARTS_REQ_SK = "你的SK"启动
npm start
# 等价于
node server.mjs服务启动后等待 MCP 客户端通过 stdin 发送 JSON-RPC 消息,不会在终端打印工具结果。直接运行后看不到输出是正常现象,请通过 MCP 客户端或 MCP Inspector 调试:
npx @modelcontextprotocol/inspector node server.mjs码道配置
码道 IDE 与码道 CLI 的配置字段不同,请按使用的客户端选择。
码道 IDE:mcp_settings.json
码道 IDE 的项目级配置文件实际位于:
<项目根目录>/.codeartsdoer/mcp/mcp_settings.json也可以通过 设置 → MCP 工具 → 配置 MCP 打开该文件。配置示例:
{
"mcpServers": {
"codearts-req": {
"type": "stdio",
"command": "C:\\Program Files\\nodejs\\node.exe",
"args": [
"E:\\shiyan\\1-8\\codearts-req-mcp-server\\server.mjs"
],
"cwd": "E:\\shiyan\\1-8\\codearts-req-mcp-server",
"env": {
"CODEARTS_REQ_ENDPOINT": "https://projectman-ext.cn-north-4.myhuaweicloud.com",
"CODEARTS_REQ_AK": "你的AK",
"CODEARTS_REQ_SK": "你的SK"
},
"disabled": false,
"timeout": 60000
}
}
}注意:
码道 IDE 使用
stdio类型:command是字符串,脚本路径放在args数组中,环境变量字段名是env。command建议写 Node.js 的绝对路径,可用where node查询;Windows 路径在 JSON 中写成\\转义形式,或使用正斜杠。保存后等待 MCP 工具页显示服务已连接;如未生效,重启 IDE 或在该页面重启 MCP Server。
码道 CLI:codearts_cli.jsonc
项目级配置放在项目根目录的 .codeartsdoer/codearts_cli.jsonc;个人级配置放在
~/.codeartsdoer/codearts_cli.jsonc(Windows 为 C:\Users\<用户名>\.codeartsdoer\)。
{
"mcp": {
"codearts-req": {
"type": "local",
"command": [
"node",
"E:/shiyan/1-8/codearts-req-mcp-server/server.mjs"
],
"environment": {
"CODEARTS_REQ_ENDPOINT": "https://projectman-ext.cn-north-4.myhuaweicloud.com",
"CODEARTS_REQ_AK": "你的AK",
"CODEARTS_REQ_SK": "你的SK"
},
"enabled": true,
"timeout": 60000
}
}
}保存并重启码道 CLI 后,执行 /mcps 查看 codearts-req 是否为 Enabled。
其他 MCP 客户端
使用常见 mcpServers 格式的客户端(命令与参数分开)可这样配置:
{
"mcpServers": {
"codearts-req": {
"command": "node",
"args": [
"E:/shiyan/1-8/codearts-req-mcp-server/server.mjs"
],
"env": {
"CODEARTS_REQ_ENDPOINT": "https://projectman-ext.cn-north-4.myhuaweicloud.com",
"CODEARTS_REQ_AK": "你的AK",
"CODEARTS_REQ_SK": "你的SK"
}
}
}
}工具说明
create_project
创建项目,对应 POST /v4/project。
参数 | 类型 | 必填 | 约束 |
| string | 是 | 1-128 字符 |
| enum | 是 |
|
| string | 否 | 项目描述 |
| string | 否 | 企业项目 ID |
| string | 否 | 0-64 字符 |
| enum(integer) | 否 |
|
template_id 含义:
10001:IPD-系统设备类10002:IPD-独立软件类10003:IPD-自运营软件/云服务类
成功返回示例:
{
"project_id": "2e76d6f0b2c5403796e36bf63c5d5561",
"project_num_id": 708168641,
"project_name": "demo-project",
"project_type": "scrum",
"user_num_id": 700145037
}调用示例(MCP 客户端视角):
{
"name": "create_project",
"arguments": {
"project_name": "demo-project",
"project_type": "ipd",
"description": "由 MCP 创建",
"template_id": 10002
}
}list_projects
查询项目列表,对应 GET /v4/projects。
参数 | 类型 | 必填 | 约束 |
| integer | 否 | 默认 0,0-10000,且必须是 |
| integer | 否 | 默认 10,1-1000 |
| string | 否 | 按项目名称或描述模糊查询 |
| enum | 否 |
|
| string | 否 | 格式 |
| boolean | 否 | 是否归档 |
| enum | 否 |
|
sort 的字段可使用 API 支持的项目字段,例如:
name:asc
name:asc,created_on:desc成功返回示例:
{
"projects": [
{
"project_id": "41bd3eab86544863b8fc92ffcd35e3c8",
"project_name": "demo-project",
"project_type": "scrum"
}
],
"total": 1
}错误处理
所有错误都作为 MCP 工具结果返回:isError: true,content[0].text 为 JSON 字符串。服务不会静默吞错,也不会因为单次工具调用失败而退出。
| 触发条件 | 附加字段 |
| 参数缺失、类型错误、枚举/范围/倍数/排序格式不合法 |
|
| 缺少 |
|
API 原始 | CodeArts Req 返回非 2xx |
|
| DNS、连接失败、TLS、超时等网络异常 |
|
| 未预期的内部异常(兜底) |
|
INVALID_ARGUMENTS
{
"error_code": "INVALID_ARGUMENTS",
"error_msg": "参数校验失败:offset:须为 limit(当前为 10)的整数倍",
"details": [
"offset:须为 limit(当前为 10)的整数倍"
]
}MISSING_CONFIG
{
"error_code": "MISSING_CONFIG",
"error_msg": "配置缺失或无效:缺少环境变量 CODEARTS_REQ_ENDPOINT、CODEARTS_REQ_AK、CODEARTS_REQ_SK",
"missing": [
"CODEARTS_REQ_ENDPOINT",
"CODEARTS_REQ_AK",
"CODEARTS_REQ_SK"
]
}API 错误透传
CodeArts Req 返回 4xx/5xx 时,原始错误码和错误信息会原样透传,并补充 HTTP 状态码:
{
"error_code": "PM.00000001",
"error_msg": "项目名称已存在",
"http_status": 400
}NETWORK_ERROR
{
"error_code": "NETWORK_ERROR",
"error_msg": "请求 CodeArts Req API 时发生网络异常,请检查网络、终端节点与代理设置",
"detail": "connect ECONNREFUSED 127.0.0.1:443"
}AK/SK 签名说明
实现遵循华为云 API 签名指南的 SDK-HMAC-SHA256:
构造 CanonicalRequest:HTTP 方法、CanonicalURI、CanonicalQueryString、CanonicalHeaders、SignedHeaders、SHA-256(RequestPayload)。
构造 StringToSign:
SDK-HMAC-SHA256\n<X-Sdk-Date>\nSHA-256(CanonicalRequest)。计算
Signature = HexEncode(HMAC-SHA256(SK, StringToSign))。发送
X-Sdk-Date与Authorization:
Authorization: SDK-HMAC-SHA256 Access=<AK>, SignedHeaders=content-type;host;x-sdk-date, Signature=<签名>实现细节:
X-Sdk-Date使用 UTC 格式YYYYMMDDTHHMMSSZ,本地时钟与标准时间偏差超过 15 分钟会被网关拒绝。CanonicalURI 必须以
/结尾(例如签名/v4/project/,实际请求/v4/project)。查询参数按 RFC 3986 编码(空格为
%20),按编码后的参数名升序排序;空值和false不会被丢弃。固定签名
content-type、host、x-sdk-date;host由 Node.jsfetch根据 URL 自动设置。不跟随 HTTP 重定向,避免将签名请求转发到其他主机。
测试
npm test当前共 53 个用例,使用 Node.js 内置 node:test,不访问真实华为云:
签名测试:CanonicalQueryString、CanonicalURI、CanonicalHeaders、UTC 时间、固定 HMAC 测试向量。
工具测试:创建/查询参数边界、
ipd模板约束、错误码透传、网络异常、超时、异常响应。MCP 集成测试:启动真实 stdio 子进程,通过官方 MCP Client 执行
tools/list与tools/call,用本地 HTTP 服务验证方法、路径、查询参数、请求体、签名头和错误恢复;测试侧会独立重算Authorization签名,校验实际发出的 host、路径、查询串和请求体。
常见问题
工具返回 MISSING_CONFIG
MCP 客户端启动子进程时不会自动继承你终端里临时 export 的变量。请在码道 IDE 配置的 env(码道 CLI 为 environment)中显式写入三个变量,或在启动 MCP 客户端前设置系统环境变量。
返回 401 / APIG.0301
检查 AK/SK 是否正确、是否已启用。
检查本机时间是否准确(签名有效期通常为 15 分钟)。
检查终端节点区域是否与账号/项目区域一致。
返回 PM.02100546 / “该企业租户服务处于关闭状态”
说明当前企业租户未开通 CodeArts Req 服务。AK/SK 和签名可能已经正确,但业务层拒绝创建项目。请前往华为云控制台开通/购买 CodeArts 套餐(其中包含需求管理服务),开通后重试。参见 官方 FAQ。
返回 403
AK/SK 对应的 IAM 用户或委托缺少 CodeArts Req 项目创建/查询权限。请在 IAM 中补充相应权限后重试。
返回 404 或连接失败
确认
CODEARTS_REQ_ENDPOINT使用 CodeArts Req 的终端节点,例如projectman-ext.cn-north-4.myhuaweicloud.com。确认 URL 使用
https://,且没有多余路径、查询参数。如果使用代理,请确认运行 Node.js 的网络环境能访问该终端节点。
offset 报“须为 limit 的整数倍”
分页偏移量必须从 0 开始按页大小递增,例如 limit=10 时 offset 只能是 0、10、20……
码道中服务启动失败
先在本机执行
node server.mjs,确认没有模块缺失;若缺少模块,在项目目录执行npm install。使用 Node.js 的绝对路径,例如
C:\\Program Files\\nodejs\\node.exe。确认码道 IDE 的
type、command、args、env字段,或码道 CLI 的type、command、environment字段拼写正确,保存后重启客户端。Windows 路径中的反斜杠必须转义,或改用
/。
参考文档
License
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
Manage Pipefork API projects, drafts, connections, secrets, and deployments through MCP.
Governed MCP gateway: one endpoint for your tools, with credential custody and audit log.
Project management MCP for AI agents with safe task reads and writes.
Project management shared by people and AI agents, with persistent project state through MCP.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides project management capabilities through terminal, web UI, or MCP stdio, including plans, code analysis, and filesystem-safe operations.6 npmMIT
- AlicenseBqualityFmaintenanceProvides 48 tools for managing Plane projects, issues, modules, cycles, comments, and worklogs via MCP, supporting both stdio and HTTP transport.4920 npmMIT
- 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.-
- AlicenseAqualityCmaintenanceEnables local MCP clients to securely inspect and operate a project's HTTP API, with generated tools for todos, dashboards, announcements, finances, materials, and related workflows using scoped API keys.142MIT