Skip to main content
Glama
dyno-nexsoft

Zentao MCP Server

by dyno-nexsoft

Zentao MCP Server

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


Related MCP server: Zendesk API MCP Server

πŸ“¦ 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

MIT Β© dyno-nexsoft

F
license - not found
-
quality - not tested
B
maintenance

Maintenance

–Maintainers
–Response time
–Release cycle
–Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • The MCP server for Azure DevOps, bringing the power of Azure DevOps directly to your agents.

  • A MCP server built for developers enabling Git based project management with project and personal…

  • MCP server exposing the Backtest360 engine API as tools for AI agents.

View all MCP Connectors

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/dyno-nexsoft/zentao_mcp'

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