npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@staragent/zentao-mcp

v1.0.11

Published

ZenTao MCP: projects, executions, stories, tasks, bugs, testtasks via REST (modules via web session)

Readme

@staragent/zentao-mcp

给 Cursor / Claude 用的禅道 MCP。用账号密码换 REST Token,在项目 → 执行下查、建、改需求、任务、Bug、测试单。

需要 Node >= 18,无第三方依赖。

安装

npm 包:@staragent/zentao-mcp。请用 1.0.11+(latest)。业务 CRUD 一律 REST(创建需求用 POST /api.php/v2/stories)。仅「拉产品模块」走网页会话。不要用 1.0.7/1.0.8(网页建需求会「登录已超时」)。

{
  "mcpServers": {
    "zentao": {
      "command": "npx",
      "args": ["-y", "--prefer-online", "@staragent/[email protected]"],
      "env": {
        "NPM_CONFIG_REGISTRY": "https://registry.npmjs.org/",
        "ZENTAO_URL": "http://你的禅道地址/zentao",
        "ZENTAO_ACCOUNT": "账号",
        "ZENTAO_PASSWORD": "密码"
      }
    }
  }
}

可选:再配项目全名、执行全名,调用时就不用每次传 id。

"ZENTAO_PROJECT": "2026年公司级本体平台研发项目",
"ZENTAO_EXECUTION": "本体平台四期"

改完配置后刷新 Cursor 的 MCP。

环境变量

| 变量 | 必填 | 说明 | |---|---|---| | ZENTAO_URL | 是 | 禅道根地址,一般带 /zentao | | ZENTAO_ACCOUNT | 是 | 登录账号 | | ZENTAO_PASSWORD | 是 | 登录密码 | | ZENTAO_TOKEN | 否 | 已有 REST Token 时可跳过登录。进程启动时读一次,Cursor 单人用法用这个 | | zentao_token(工具参数,不在 schema 里) | 否 | 本次调用的 REST Token,优先于 ZENTAO_TOKEN,用完即丢。拉模块仍要进程里的 ZENTAO_ACCOUNT + ZENTAO_PASSWORD(Token 建不了网页会话) | | ZENTAO_PROJECT | 否 | 禅道项目全名,用来解析 project_id | | ZENTAO_EXECUTION | 否 | 禅道执行全名,用来解析 execution_id。配了执行名时,还要能解析到项目(ZENTAO_PROJECT 或调用时传 project_id) |

名称按全名精确匹配;匹配不到或多个同名时会报错,请改用 id。

未配置名称时怎么用

  1. zentao_list_projects(可用 keyword)→ 得到 project_id
  2. zentao_list_executions(传上一步的 project_id)→ 得到 execution_id
  3. 之后列/建需求、任务、Bug、测试单时带上这两个 id

单次调用也可用参数 project_name / execution_name,优先于环境变量。

工具

| 域 | 工具 | |---|---| | 账号 | zentao_whoami | | 项目 | zentao_list_projects zentao_get_project | | 执行 | zentao_list_executions zentao_get_execution zentao_create_execution zentao_update_execution | | 需求 | zentao_list_stories zentao_get_story zentao_create_story zentao_update_story | | 任务 | zentao_list_tasks zentao_get_task zentao_create_task zentao_update_task | | Bug | zentao_list_bugs zentao_list_modules zentao_get_bug zentao_create_bug zentao_update_bug | | 测试单 | zentao_list_builds zentao_list_testtasks zentao_get_testtask zentao_create_testtask zentao_update_testtask |

按 id 查详情的工具(如 zentao_get_story)只需对应资源 id。

提 Bug:传了 module(数字 id)则直接提交。未传时用网页同一套接口 tree-ajaxGetOptionMenu 拉模块(不用 REST GET /api.php/v1/modules,避免角色无权限)。再用标题/步骤或 module_name 匹配;拉不到列表则从本执行已有 Bug 推断,或省略模块。影响版本 opened_build 不传则用「主干」(trunk)。