Model Context Protocol server for Zentao project management system, providing 82 MCP tools for authentication, user management, products, stories, projects, builds, executions, tasks, bugs, test cases, test tasks, feedback, and tickets
This server has critical gaps across naming, descriptions, parameter definitions, and output documentation. While tool names follow a consistent verb_noun pattern (zentao_login, zentao_get_user, etc.), the implementations reveal major issues: (1) descriptions are in Chinese and minimal (10-20 chars), far below the 34-char baseline for adequate context; (2) parameter schemas lack required type fields and constraints, e.g., zentao_login has 'account' and 'password' but no minLength, maxLength, or pattern constraints; (3) output schemas are completely undocumented, tools return JSON via mcp.NewToolResultText() with no stated shape, making it impossible for LLMs to plan downstream tool composition; (4) critical parameters like 'page' and 'limit' in zentao_list_users are marked as 'string' but should be integers with range constraints (1-100, 1-500); (5) no error guidance, errors are wrapped in fmt.Errorf() with generic messages like '获取用户失败' (get user failed) that do not tell the agent whether to retry, lookup alternatives, or abort; (6) no handling of sensitive data, zentao_login and zentao_set_token expose credentials as parameters, violating the secret-injection pattern; (7) many tools (zentao_create_program, zentao_update_program, zentao_create_user) accept required parameters but the input schema shows {} or minimal fields, suggesting the handler implementation is incomplete or the schema is stale. The code sample only shows 16 of the claimed 82 tools, the remaining 66 are not visible for evaluation, forcing conservative scoring on unverified definitions.
创建项目集
创建新用户
删除项目集
删除指定用户
获取产品详细信息
获取项目集详细信息
获取项目详细信息
Credentials exposed as tool parameters (zentao_login, zentao_set_token), account, password, and token are passed as plain string parameters, which are logged in traces and prompt history. CRITICAL: violates pattern:secret-injection.
Output schemas completely undocumented. All tools return results via mcp.NewToolResultText() with JSON string content, but no schema is declared. LLMs cannot plan downstream tool composition or extract structured data. Violates pattern:tool.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 34 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
获取指定用户的详细信息
获取产品列表
获取项目集列表
获取项目列表
获取用户列表
登录禅道系统获取访问Token
设置禅道访问Token
更新项目集
更新用户信息
Descriptions are minimal (10-20 characters), far below the 34-char baseline and insufficient for LLM tool selection. Example: '获取项目集列表' (12 chars) = 'get program list'; no indication of when to call it, what it returns, or dependencies. Violates pattern:tool-description.
Numeric pagination parameters (page, limit) are typed as 'string' instead of 'integer'. Should enforce min/max constraints (page >= 1, limit 1-100). Current schema allows invalid inputs like page='abc' or limit='999999'. Violates pattern:constrained-input.
Input schemas for zentao_create_program and zentao_update_program are empty ({}), but handlers likely require fields. Schema mismatch with implementation. Cannot validate LLM inputs. Violates pattern:tool.
No error guidance or recovery hints. Errors like 'fmt.Errorf("获取用户失败: %w", err)' are wrapped with generic text and do not inform the LLM whether to retry, lookup alternatives (e.g., search_users first), or abort. Violates pattern:recovery-guide.
No parameter descriptions provided for zentao_list_users (page, limit) or other list tools. LLMs do not know the format, valid ranges, or default values. Violates pattern:tool-description.
Remaining 66 tools (out of 82 claimed) are registered but not visible in the provided code sample. Tool definitions are inferred, not directly verifiable. Per HARD SCORING RULES, unverified tool definitions cap overall score at 50.
No pagination metadata in list tool responses. Tools return JSON strings but do not document or enforce limits, total counts, or next_cursor. LLMs cannot handle large result sets or determine if more data is available. Violates pattern:paginated-result.
No tool composition hints. When zentao_get_user or zentao_get_program returns, there is no documentation of which IDs/references downstream tools (e.g., create_project) will need. Breaks the tool chain pattern. Violates pattern:tool-chain.