Описание
Zentao MCP Server
README
npm version npm downloads GitHub release License Node.js TypeScript MCP Tests
A Model Context Protocol (MCP) server for integrating AI assistants (Claude, Cursor, etc.) with the ZenTao project management API.
Fetch task details, bug reports, and attachments — all directly inside your AI chat.
✨ Features
| Tool | Description |
|---|---|
zentao_get_details |
Fetch full details of a task or bug by ID |
zentao_get_comments |
Fetch only the history and comments timeline of a task or bug |
zentao_add_comment |
Add a comment/remark to a task or bug |
zentao_update_task_status |
Update task status (start, finish, close, pause, cancel, restart) and add optional comments/hours |
zentao_update_bug_status |
Update bug status (resolve, close, activate) and add optional comments/resolutions |
zentao_get_assigned_to_me |
Get tasks and bugs currently assigned to you (configured via ZENTAO_ACCOUNT) |
Under the hood:
- 🔐 Auto login & token refresh — no manual auth needed
- 📦 In-memory cache (2 min TTL) + in-flight request dedup — avoids redundant API calls
- 🔁 Classic JSON API fallback — seamlessly retries via the web API when the REST endpoint returns empty or errors
- 🖼️ Inline HTML images are automatically downloaded and served as local
file://links - 📎 Attachments are downloaded and embedded as clickable local links
- 🛡️ Corrupt partial downloads are auto-cleaned on error
- ⚡ Non-blocking async image I/O — base64 encoding uses
fs.promises+Promise.all
📦 Installation
Option 1 — npx (recommended, no install required)
npx @dyno181cm.nexsoft/zentao_mcp
Option 2 — Global install
npm install -g @dyno181cm.nexsoft/zentao_mcp
zentao_mcp
Option 3 — Clone & build
git clone https://github.com/dyno-nexsoft/zentao_mcp.git
cd zentao_mcp
npm install
npm run build
⚙️ Configuration
Create a .env file in the project root (or pass via MCP client env block):
ZENTAO_BASE_URL=https://your-zentao-url.com/zentao/api.php/v1
ZENTAO_ACCOUNT=your_username
ZENTAO_PASSWORD=your_password
🔌 MCP Client Integration
This server communicates via stdio transport — compatible with any MCP client.
Claude Desktop / Cursor / Windsurf
Add to your MCP client config (e.g. claude_desktop_config.json):
{
"mcpServers": {
"zentao": {
"command": "npx",
"args": ["-y", "@dyno181cm.nexsoft/zentao_mcp"],
"env": {
"ZENTAO_BASE_URL": "https://your-zentao-url.com/zentao/api.php/v1",
"ZENTAO_ACCOUNT": "your_username",
"ZENTAO_PASSWORD": "your_password"
}
}
}
}
🛠️ Available Tools
zentao_get_details
Get full details of a ZenTao task or bug, including repro steps (for bugs), inline images, attachments, history, and comments.
| Parameter | Type | Required | Description |
|---|---|---|---|
type |
"task" | "bug" |
✅ | Type of the object |
id |
string | number |
✅ | Task or Bug ID |
zentao_get_comments
Get only the history and comments timeline of a task or bug.
| Parameter | Type | Required | Description |
|---|---|---|---|
type |
"task" | "bug" |
✅ | Type of the object |
id |
string | number |
✅ | Task or Bug ID |
zentao_add_comment
Add a comment/remark to a task or bug.
| Parameter | Type | Required | Description |
|---|---|---|---|
type |
"task" | "bug" |
✅ | Type of the object |
id |
string | number |
✅ | Task or Bug ID |
comment |
string |
✅ | Comment content |
zentao_update_task_status
Update a task's status with optional comments, actual start/finish dates, and consumed hours.
| Parameter | Type | Required | Description |
|---|---|---|---|
taskId |
string | number |
✅ | Task ID |
action |
"start" | "finish" | "close" | "pause" | "cancel" | "restart" |
✅ | Status transition action |
comment |
string |
❌ | Optional comment to attach |
consumed |
number |
❌ | Optional hours consumed |
finishedDate |
string |
❌ | Optional actual finish date (YYYY-MM-DD) |
realStarted |
string |
❌ | Optional actual start date (YYYY-MM-DD) |
assignedTo |
string |
❌ | Optional user account to assign to next |
left |
number |
❌ | Optional left hours (for restart) |
zentao_update_bug_status
Update a bug's status with optional comments and resolutions.
| Parameter | Type | Required | Description |
|---|---|---|---|
bugId |
string | number |
✅ | Bug ID |
action |
"resolve" | "close" | "activate" |
✅ | Status transition action |
comment |
string |
❌ | Optional comment to attach |
resolution |
"fixed" | "bydesign" | "postponed" | "external" | "notrepro" | "willnotfix" |
❌ | Optional resolution type |
resolvedBuild |
string |
❌ | Optional build ID where bug was resolved |
resolvedDate |
string |
❌ | Optional resolution date (YYYY-MM-DD) |
assignedTo |
string |
❌ | Optional user account to assign to next |
openedBuild |
string |
❌ | Optional build ID where bug was found (for activate) |
zentao_get_assigned_to_me
Get tasks and bugs currently assigned to the configured user account. Takes no arguments.
🧑💻 Development
npm run build # Compile TypeScript
npm run dev # Watch mode
npm test # Unit tests (Jest)
npm run test:api # Live API integration test
Project structure
src/
├── index.ts # MCP server entry point
├── zentaoClient.ts # Axios client: auth, cache, dedup, fallback, stream helpers
├── tools.ts # Thin orchestrator + backward-compat exports
├── utils/
│ ├── fileUtils.ts # toFileUrl · getMimeType · formatSize
│ ├── markdownUtils.ts # htmlToMarkdown · parseFiles · formatUser
│ └── mcpResponse.ts # mcpText · buildMcpResponse (async)
├── formatters/
│ ├── imageLocalizer.ts # Inline <img> → local file:// link (deduped, concurrent)
│ ├── attachmentRenderer.ts # Attachments → Markdown ## Files section
│ ├── actionFormatter.ts # renderHistoryAndComments
│ ├── taskFormatter.ts # taskToMarkdown (includes comments)
│ ├── bugFormatter.ts # bugToMarkdown (includes comments)
│ └── myWorkFormatter.ts # myWorkToMarkdown (includes comments)
└── tools/
├── detailTool.ts # zentao_get_details
├── commentTool.ts # zentao_get_comments · zentao_add_comment
├── statusTool.ts # zentao_update_task_status · zentao_update_bug_status
└── myWorkTool.ts # zentao_get_assigned_to_me
Running tests
npm test # Unit tests — 13 tests across ZentaoClient
npm run test:api # Live API integration test (requires .env)
📄 License
Установить Zentao Mcp в Claude Desktop, Claude Code, Cursor
unyly install zentao-mcpСтавит в Claude Desktop, Claude Code, Cursor и VS Code — сам разбирается с npx, uvx и сборкой из исходников.
Впервые? Поставь CLI: curl -fsSL https://unyly.org/install | sh
Или настроить вручную
Выполни в терминале:
claude mcp add zentao-mcp -- npx -y @dyno181cm.nexsoft/zentao_mcpFAQ
Zentao Mcp MCP бесплатный?
Да, Zentao Mcp MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Zentao Mcp?
Нет, Zentao Mcp работает без API-ключей и переменных окружения.
Zentao Mcp — hosted или self-hosted?
Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.
Как установить Zentao Mcp в Claude Desktop, Claude Code или Cursor?
Открой Zentao Mcp на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
GitHub
PRs, issues, code search, CI status
автор: GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
автор: mcpdotdirectCompare Zentao Mcp with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории development
