Skip to main content
Glama
zentao-rest-v1-mcp

zentao-rest-v1-mcp

by cwj9195

zentao-rest-v1-mcp

面向禅道开源版的 MCP 服务。优先使用 REST v1,只有明确的 REST v1 路由不兼容时才回退 Legacy Session API。

特性

  • 支持禅道 REST v1 Token 认证。

  • 支持任务、Bug、需求、测试用例和测试单的查询与操作。

  • 支持创建任务、更新任务、开始任务、完成任务、关闭任务和解决 Bug。

  • 写入操作遵循“写入一次、写后回读”,避免重复提交。

  • 读取接口在明确不兼容时回退 Legacy;认证失败、参数错误和写入结果不明时不自动切换通道。

  • 支持 ZENTAO_TIMEOUT_MS 和 ZENTAO_SESSION_TTL_MS 配置。

Related MCP server: ZenTao MCP Server

系统要求

  • Node.js >=18.0.0

  • 禅道开源版实例,已启用对应 REST API 能力

安装

npm install -g zentao-rest-v1-mcp

MCP 配置

{
  "mcpServers": {
    "zentao-rest-v1": {
      "command": "zentao-rest-v1-mcp",
      "args": [],
      "env": {
        "ZENTAO_URL": "https://your-zentao.example/zentao",
        "ZENTAO_USERNAME": "your-account",
        "ZENTAO_PASSWORD": "your-password",
        "ZENTAO_TIMEOUT_MS": "30000",
        "ZENTAO_SESSION_TTL_MS": "3000000"
      }
    }
  }
}

也可以直接运行本地构建产物:

node dist/index.js

核心工具

  • 读取:getBugDetail、getTaskDetail、getMyBugs、getMyTasks、getStoryDetail

  • 任务:createTask、updateTask、startTask、finishTask、closeTask

  • Bug:updateBug、resolveBug

  • 测试:createTestCase、runTestCase

任务完成流程必须遵循:

wait → startTask → doing → finishTask → done → closeTask → closed

完成任务时必须提交实际开始时间 realStarted 和不早于它的实际完成时间 finishedDate,不能只提交日期。

本地开发

pnpm install --frozen-lockfile
pnpm run build
pnpm run test:smoke

配置说明

  • ZENTAO_URL:禅道站点地址,通常包含 /zentao 部署路径。

  • ZENTAO_USERNAME:禅道账号。

  • ZENTAO_PASSWORD:禅道密码,仅通过环境变量传入,不写入源码和日志。

  • ZENTAO_TIMEOUT_MS:请求超时时间,默认 30000 毫秒。

  • ZENTAO_SESSION_TTL_MS:Token 本地缓存时间,默认 3000000 毫秒。

许可证

MIT。原始 Legacy MCP 实现及其许可证声明保留在本包中。

相关链接

Available Tools

52 tools
analyzeBugPriorityD

Inputs: bugId (required).

analyzeStoryComplexityD

Inputs: storyId (required).

analyzeTaskWorkloadD

Inputs: taskId (required).

batchResolveBugsD

Inputs: bugIds (required), resolution (required).

batchUpdateTasksD

Inputs: update (required), taskIds (required).

closeTaskD

Inputs: taskId (required), comment.

createTaskD

Inputs: name (required), type (required), executionId (required), pri, +8 more.

createTaskFromBugD

Inputs: bugId (required), desc, estimate, taskName, +1 more.

createTaskFromStoryD

Inputs: storyId (required), taskName (required), desc, estimate, +1 more.

createTestCaseD

Inputs: testCase (required).

exportBugD

Inputs: bugId (required), exportPath (required).

exportItemsD

Inputs: type (required), exportPath (required), id, url, +8 more.

exportModuleItemsAsMarkdownD

Inputs: url (required), exportPath (required).

exportStoriesBySearchD

Inputs: exportPath (required), limit, status, endDate, +4 more.

exportStoryD

Inputs: storyId (required), exportPath (required).

finishTaskD

Inputs: taskId (required), update.

formatTaskAsMarkdownD

Inputs: taskId (required).

generateBugSummaryD

Inputs: bugId (required), format.

generateCodePromptFromStoryD

Inputs: storyId (required).

generateCodeReviewChecklistD

Inputs: entityId (required), entityType (required).

generateStorySummaryD

Inputs: storyId (required), format.

generateTestPromptFromBugD

Inputs: bugId (required).

getBugDetailD

Inputs: bugId (required), downloadImages.

getBugRelatedStoryD

Inputs: bugId (required).

getConfigD

Inputs: no named parameters.

getDevelopmentContextD

Inputs: entityId (required), entityType (required), format.

getModuleItemsD

Inputs: url (required), exportPath (required).

getMyBugsD

Inputs: status, productId.

getMyBugStatisticsD

Inputs: no named parameters.

getMyTasksD

Inputs: status.

getMyTaskStatisticsD

Inputs: no named parameters.

getNextActionSuggestionsD

Inputs: entityId (required), entityType (required).

getProductBugsD

Inputs: productId (required), status, moduleId.

getProductsD

Inputs: no named parameters.

getProductStoriesD

Inputs: productId (required), status, moduleId.

getProductTestCasesD

Inputs: productId (required), status, moduleId.

getStoryDetailD

Inputs: storyId (required), downloadImages.

getStoryRelatedBugsD

Inputs: storyId (required).

getStoryTestCasesD

Inputs: storyId (required).

getTaskDetailD

Inputs: taskId (required).

getTestCaseDetailD

Inputs: caseId (required).

getTestTaskDetailD

Inputs: taskId (required).

getTestTaskResultsD

Inputs: taskId (required).

getTestTasksD

Inputs: productId.

initZentaoD

Inputs: no named parameters.

resolveBugD

Inputs: bugId (required), resolution (required).

runTestCaseD

Inputs: taskId (required), testRun (required).

searchStoriesD

Inputs: keyword (required), limit, status, endDate, +3 more.

searchStoriesByProductNameD

Inputs: keyword (required), productName (required), limit, status.

startTaskD

Inputs: taskId (required), update (required).

updateBugD

Inputs: bugId (required), update (required).

updateTaskD

Inputs: taskId (required), update (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    D1.5/5.0

    Scored across 52 tools

    Disambiguation3/5

    Most tools have fairly clear resource/action targets, but several overlap conceptually: multiple export tools, multiple get-task/get-bug variants, and generic helpers like initZentao/getConfig are easy to confuse. Without descriptions, an agent could struggle to choose between related tools like exportItems, exportModuleItemsAsMarkdown, and exportStoriesBySearch.

    Naming Consistency4/5

    The tools mostly follow a camelCase verb_noun pattern such as getTaskDetail, createTestCase, and resolveBug. Minor inconsistencies exist in singular/plural usage and entity-relationship naming, e.g. getStoryRelatedBugs vs getBugRelatedStory, but the overall convention is predictable and readable.

    Tool Count1/5

    With 52 tools, the surface is far too large for an MCP server, exceeding the 50+ threshold for an extreme mismatch. Many tools are auxiliary helpers, export variants, and analysis/generation utilities that inflate the set beyond a focused CRUD interface. This will overwhelm agents and make tool selection expensive and error-prone.

    Completeness3/5

    Task and bug lifecycles are reasonably covered with create, read, update, and state transitions, while test cases and stories have meaningful read/run/export support. However, there are notable gaps: no story update/create/delete, no test case update/delete, and no product detail or project management tools. The presence of many generate/analyze/format helpers does not fully compensate for missing core lifecycle operations.

    Maintenance

    ActivityStale
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      A
      quality
      B
      maintenance
      Enables interaction with ZenTao project management system through RESTful APIs. Supports listing products, managing bugs, viewing statistics, and filtering personal bug assignments through natural language.
      4
      26 npm
      16
      -
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables AI assistants to manage Zentao bugs, requirements, and test cases through natural language interactions. It supports querying, creating, and updating various Zentao data entities including products, projects, and executions.
      11 npm
      12
      MIT