Skip to main content
Glama
dyno-nexsoft

Zentao MCP Server

by dyno-nexsoft

Zentao MCP Server

GitHub Packages 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 (with comment IDs)

zentao_add_comment

Add a comment/remark to a task or bug

zentao_edit_comment

Edit an existing comment by its action ID

zentao_delete_comment

Delete (soft-hide) a comment by its action ID

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_create_task

Create a new task under an execution

zentao_edit_task

Edit an existing task's fields

zentao_get_assigned_to_me

Get tasks and bugs currently assigned to you (configured via ZENTAO_ACCOUNT)

zentao_get_my_tasks

Get only the tasks currently assigned to you

zentao_get_my_bugs

Get only the bugs currently assigned to you

zentao_create_bug

Create a new bug under a product

zentao_edit_bug

Edit an existing bug's fields

zentao_list_tasks

List tasks in an execution (optionally filtered by keyword)

zentao_list_bugs

List bugs in a product (optionally filtered by keyword)

zentao_search

Search tasks or bugs within an execution/product scope, filtering by keyword, status, priority, severity, assignee, and/or opened-date range

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: zentao-mcp-server

πŸ“¦ Installation

Published on GitHub Packages β€” add this to ~/.npmrc first (needs a GitHub token with read:packages):

@dyno-nexsoft:registry=https://npm.pkg.github.com
//npm.pkg.github.com/:_authToken=YOUR_GITHUB_TOKEN
npx @dyno-nexsoft/zentao_mcp        # run directly
npm install -g @dyno-nexsoft/zentao_mcp   # or install globally

Or 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

# Optional: bypass SSL certificate errors (self-signed/invalid cert).
# Set to 'true' only if your ZenTao server has a broken/untrusted certificate.
ZENTAO_ALLOW_INSECURE_SSL=false

πŸ”Œ 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", "@dyno-nexsoft/zentao_mcp"],
      "env": {
        "ZENTAO_BASE_URL": "https://your-zentao-url.com/zentao/api.php/v1",
        "ZENTAO_ACCOUNT": "your_username",
        "ZENTAO_PASSWORD": "your_password",
        "ZENTAO_ALLOW_INSECURE_SSL": "false"
      }
    }
  }
}

πŸ§‘β€πŸ’» 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 Β· myTasksToMarkdown Β· myBugsToMarkdown
└── tools/
    β”œβ”€β”€ detailTool.ts         # zentao_get_details
    β”œβ”€β”€ commentTool.ts        # zentao_get_comments Β· zentao_add_comment Β· zentao_edit_comment Β· zentao_delete_comment
    β”œβ”€β”€ statusTool.ts         # zentao_update_task_status Β· zentao_update_bug_status
    β”œβ”€β”€ taskTool.ts           # zentao_create_task Β· zentao_edit_task
    └── myWorkTool.ts         # zentao_get_assigned_to_me Β· zentao_get_my_tasks Β· zentao_get_my_bugs

Running tests

npm test           # Unit tests β€” 19 tests across ZentaoClient
npm run test:api   # Live API integration test (requires .env)

πŸ“„ License

MIT Β© dyno-nexsoft

F
license - not found
Not graded
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

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