Skip to main content
Glama
ceeyang
by ceeyang

禅道 Bug MCP

Cursor / Claude / Windsurf 等 AI 直接读禅道 Bug、按步骤修 Bug,修完后可选回写「已解决」。

适配禅道开源版 16.5+ / 18.12 · REST API v1


30 秒:能干什么

你想…

在 AI 里这样说

确认装好了

「调用 zentao_health_check 检查禅道连接」

看我负责的 Bug

「列出指派给我的 Bug,最新的 10 条」

读重现步骤修 Bug

「读取 Bug #12345 详情,按 steps 帮我改代码」

查某产品下的 Bug

「查产品 3 下 alice 的 active Bug」

修完回写禅道

「dryRun 预演把 #12345 标为 fixed,备注 xxx」(需开写权限)

一条命令安装,无需 clone:

curl -fsSL https://raw.githubusercontent.com/ceeyang/zentao_mcp/main/install.sh | bash

Windows:irm https://raw.githubusercontent.com/ceeyang/zentao_mcp/main/install.ps1 | iex

装完 重启 AI 客户端,按上表开聊即可。更多示例 → docs/FEATURES.zh-CN.md


Related MCP server: zentao-mcp-server

已实现功能

安装与集成

  • 一条命令从 GitHub 下载、构建、写入 MCP 配置(~/.local/share/zentao-mcp

  • 交互安装:现场输入禅道账号,或选「稍后配置」

  • 18 种 AI 客户端:Cursor、Claude Desktop、Claude Code、Windsurf、Trae、VS Code、Cline、OpenCode、Continue、Zed 等(INSTALL_PLATFORMS=auto 自动检测)

  • node 绝对路径,避免 Cursor spawn ENOENT

读 Bug(默认开启)

工具

能力

zentao_list_my_bugs

指派给当前账号的 Bug(不用记产品 ID)

zentao_list_bugs

按产品 / 项目 / 执行筛选

zentao_get_bug

详情 + HTML 重现步骤转纯文本stepsPlain

zentao_health_check

连通性 + 写权限开关状态

写 Bug(默认关闭,防误操作)

工具

需环境变量

zentao_resolve_bug

ZENTAO_ALLOW_RESOLVE_BUG=true

zentao_close_bug

ZENTAO_ALLOW_CLOSE_BUG=true

zentao_activate_bug

ZENTAO_ALLOW_ACTIVATE_BUG=true

均支持 dryRun: true 先预演。详见 功能示例

安全与运维

  • 产品白名单 ZENTAO_ALLOWED_PRODUCTS

  • 自签名 HTTPS ZENTAO_SKIP_SSL

  • Token / 账号密码双模式,401 自动刷新

  • 统一 JSON 响应信封,方便 AI 解析

尚未实现

  • Bug 指派推送、群 每日汇总 机器人(需另建服务,见 讨论方向


对话示例

Morning standup:

你:我禅道上有哪些没关的 Bug?
AI:→ zentao_list_my_bugs → 返回 6 条列表

你:重点看 #12345,读步骤,在 src/auth 里找原因
AI:→ zentao_get_bug → 读 stepsPlain → 改代码

修完回写(已开 ZENTAO_ALLOW_RESOLVE_BUG):

你:测试过了,把 #12345 标为 fixed,备注「修复 token 过期未刷新」
AI:→ zentao_resolve_bug(resolution=fixed, comment=...)

安装说明

  1. 执行上方 curl | bash(或 PowerShell irm ... | iex

  2. 按提示填禅道地址 / 账号 / 密码(可跳过)

  3. 选 AI 平台(直接回车 = auto 自动检测)

  4. 完全重启 Cursor / Claude 等

  5. 对话:调用 zentao_health_check 检查连接

稍后配置账号 — 编辑 ~/.cursor/mcp.json 等里的 zentao.env

"env": {
  "ZENTAO_URL": "https://your-zentao-host",
  "ZENTAO_ACCOUNT": "your_account",
  "ZENTAO_PASSWORD": "your_password",
  "ZENTAO_SKIP_SSL": "true"
}

完整安装文档 · 发给同事


文档

文档

内容

FEATURES.zh-CN.md

功能清单 + 每个工具的 AI 说法示例

INSTALL.zh-CN.md

安装、平台列表、FAQ

SHARE.md

复制给同事的一键安装文案


环境变量(摘要)

变量

说明

ZENTAO_URL / ZENTAO_ACCOUNT / ZENTAO_PASSWORD

禅道凭据

ZENTAO_SKIP_SSL

自签名证书 → true

ZENTAO_ALLOW_RESOLVE_BUG

写操作开关,默认 false

ZENTAO_ALLOWED_PRODUCTS

可选,产品 ID 白名单

INSTALL_PLATFORMS

安装时:auto / all / cursor,claude

完整列表:.env.example


维护者

git clone https://github.com/ceeyang/zentao_mcp.git
cd zentao_mcp && npm install && npm run build && ./install.sh
npm run test:install    # E2E
npm run verify:github   # 检查 raw 安装链
npm run pack:release    # 离线 tgz

License

MIT

Available Tools

7 tools
zentao_activate_bugA

Re-activate a bug when fix verification fails. Requires ZENTAO_ALLOW_ACTIVATE_BUG=true unless dryRun=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
bugIdYesBug ID.
dryRunNoIf true, return request summary only and do not call ZenTao.
commentNoOptional remark.
assignedToNoOptional assignee account.
openedBuildNoAffected builds. Default: [trunk].

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It reveals the mutation action, the prerequisite guard, and the dry-run behavior. It lacks details on side effects beyond reactivation, but for a bug activation tool, the key behaviors are covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, each packing essential information: the purpose and a usage condition. No redundant words, efficiently structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 5 parameters and no output schema, the description covers the action, when to use, and a critical prerequisite. It could mention the return structure or confirm that the bug status changes, but the context is sufficient for an agent to select and invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds value by noting the requirement for dryRun and the default for openedBuild (implied but from schema), but does not add significantly beyond the schema's parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('re-activate a bug') and the condition ('when fix verification fails'). It distinguishes from siblings like zentao_resolve_bug and zentao_close_bug by focusing on reactivation after failed verification.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly specifies when to use this tool (after fix verification fails) and notes the required environment variable ZENTAO_ALLOW_ACTIVATE_BUG=true unless dryRun=true, giving clear usage context. It does not explicitly compare to siblings but the condition implies when not to use alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

zentao_close_bugA

Close a bug. Requires ZENTAO_ALLOW_CLOSE_BUG=true unless dryRun=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
bugIdYesBug ID.
dryRunNoIf true, return request summary only and do not call ZenTao.
commentNoOptional remark.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden. It mentions the dryRun behavior and condition, disclosing a testing mode, but omits details about side effects, permissions beyond the env var, or return value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, no filler. First sentence states purpose, second adds crucial context, every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Minimally adequate: describes action and condition, but no output schema means the agent lacks info on success/failure response. Could be improved with behavioral details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline 3. The description adds no extra parameter meaning beyond what the schema already provides (bugId, dryRun, comment).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Close a bug' uses a specific verb and resource, clearly distinguishing it from siblings like zentao_resolve_bug or zentao_activate_bug.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states a prerequisite condition ('Requires ZENTAO_ALLOW_CLOSE_BUG=true unless dryRun=true'), guiding when the tool can be used, but does not compare to alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

zentao_get_bugA

Get a single bug with raw payload and AI-friendly summary including plain-text steps.

ParametersJSON Schema
NameRequiredDescriptionDefault
bugIdYesBug ID.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses that the tool returns both raw payload and an AI-friendly summary with plain-text steps, indicating it's a read operation. This is sufficient for a simple tool, though it could explicitly state 'read-only' for clarity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence that is front-loaded with the main action ('Get a single bug'). No redundant words, every part adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple input (one required parameter) and no output schema, the description fully explains the output contents (raw payload + AI summary with plain-text steps). This is comprehensive for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with bugId described as 'Bug ID.' The description does not add additional parameter details beyond what the schema provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Get a single bug', distinguishing it from list tools like zentao_list_bugs and mutation tools like zentao_resolve_bug. It also specifies the output includes raw payload and AI-friendly summary, adding clarity beyond the name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: use when you need a single bug's details. However, no explicit when-not or alternative tools are mentioned. The description could be improved by stating 'Use for detailed view of one bug; for listing, use zentao_list_bugs.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

zentao_health_checkC

Check ZenTao MCP configuration, authentication, and write-operation gates.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceTokenRefreshNoForce refresh token before checking connectivity.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must bear the full burden of disclosing behavior. It states that the tool 'checks' things but does not specify side effects, whether it modifies state, or what happens during a token refresh. The behavioral information is minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that efficiently conveys the tool's purpose. It contains no unnecessary words or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description lacks information about the return value or output format, which is important for a health check tool. Without an output schema, the agent has no idea what to expect after calling the tool. It also does not explain the context of checking write-operation gates.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers the single boolean parameter with a description. The tool description does not add any additional semantics beyond the schema. With 100% schema coverage, a baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool checks configuration, authentication, and write-operation gates. It distinguishes itself from sibling bug-focused tools by its unique purpose. However, 'write-operation gates' could be more explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, typical use cases, or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

zentao_list_bugsB

List bugs by product, project, or execution scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesScope entity ID.
pageNoPage number. Default: 1.
limitNoPage size. Default: 20.
scopeYesScope dimension.
statusNoOptional status filter.
keywordNoOptional keyword filter.
assignedToNoOptional assignee account filter.
browseTypeNoOptional browse type, e.g. unclosed, unresolved, assigntome.

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, and the description lacks behavioral details like pagination behavior, return format, or performance implications. Only states the basic listing action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, concise. Could benefit from more structure but is not verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 8 parameters and no output schema, the description is minimal. Missing details on return structure, pagination, and filter behavior, making it incomplete for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are documented in schema. Description adds little beyond the scope parameter concept, not elaborating on filters or usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'list bugs' and specifies the filtering scope (product, project, execution). Distinguishes from sibling tools like zentao_get_bug and zentao_list_my_bugs, though could be more explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage for listing bugs by scope, but does not provide explicit when-to-use or when-not-to-use guidance, nor mention alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

zentao_list_my_bugsA

List bugs assigned to the current logged-in user. No product/project ID required.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number. Default: 1.
typeNoWork type filter. Default: assignedTo.
limitNoPage size. Default: 20.
orderNoSort order. Default: id_desc.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It adds that the tool lists bugs assigned to current user, but does not disclose authentication needs, read-only nature, or pagination behavior beyond schema. Adequate but not thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with purpose and scope. No extraneous words, every part earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite low complexity (4 params, no output schema), the description fails to mention return format, read-only behavior, or pagination details, leaving gaps for an agent invoking the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and description adds no extra parameter details beyond the schema. Baseline of 3 is appropriate as it does not enhance understanding of parameter usage or values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List' and resource 'bugs', with scope 'assigned to the current logged-in user'. It distinguishes from siblings like 'zentao_list_bugs' (likely broader) and 'zentao_get_bug' (single item).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions 'No product/project ID required' implying ease of use, but does not explicitly state when to use this vs alternatives, nor provide exclusions or when-not-to-use conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

zentao_resolve_bugB

Resolve a bug after fixing code. Requires ZENTAO_ALLOW_RESOLVE_BUG=true unless dryRun=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
bugIdYesBug ID.
dryRunNoIf true, return request summary only and do not call ZenTao.
commentNoOptional remark recorded with the resolve action.
assignedToNoOptional assignee account after resolve.
resolutionYesResolution code. Usually fixed.
duplicateBugNoDuplicate bug ID when resolution=duplicate.
resolvedBuildNoResolved build. Default: trunk.

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the full burden. It discloses the dryRun behavior and environment variable requirement, but omits side effects, authentication needs, or failure modes. Basic mutation behavior is implied but not detailed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that efficiently states purpose and a key condition. It is front-loaded and concise, though slightly under-specified.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 7 parameters, is a mutation, and has no output schema or annotations, the description is too minimal. It does not explain the effect of resolution, expected return values, or error conditions, leaving gaps for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters. The description adds no additional meaning beyond what the schema provides, meeting the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Resolve a bug after fixing code,' specifying the verb and resource. It implicitly distinguishes from siblings like zentao_close_bug or zentao_activate_bug, but does not explicitly differentiate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description notes a prerequisite (ZENTAO_ALLOW_RESOLVE_BUG=true unless dryRun=true), providing conditional guidance. However, it does not discuss when to use this tool versus siblings or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A3.7/5.0
Disambiguation5/5

Each tool has a unique action and target: activate, close, get, health check, list (general), list (my), resolve. No two tools overlap in purpose; an agent can clearly distinguish them.

Naming Consistency5/5

All tools use a consistent 'zentao_verb_noun' snake_case pattern (e.g., zentao_activate_bug, zentao_list_bugs). Even zentao_health_check follows the pattern, and zentao_list_my_bugs is a natural variation. No mixing of styles.

Tool Count5/5

With 7 tools covering core bug operations and a health check, the number is well-scoped for a bug management MCP server. It is neither too sparse nor too bloated.

Completeness4/5

The set covers the main bug lifecycle states (activate, resolve, close) plus listing and retrieval. However, it lacks create and update operations, which are typical for a bug tracker. This is a minor gap that agents can work around if bugs are created via other means.

Maintenance

ActivitySlowing
ResponsivenessUnresponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ceeyang/zentao_mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server