MCP server for ZenTao via FastMCP (HTTP stream + SSE)
Server has 5 tools with schemas and descriptions present, but quality is inconsistent. Tool names follow verb_noun pattern (searchProducts, getMyBug, getMyBugs, getBugDetail, markBugResolved) which is good. Descriptions are present but vary in clarity, some are domain-specific Chinese text that may not guide LLM selection optimally. Schemas use Zod with proper types, but parameter descriptions are minimal (10-30 chars), below the 72-char baseline. Critical gap: no output schema documentation, LLMs cannot predict response structure. Error handling is basic (UserError wrapping only). Tool annotations present (readOnlyHint, openWorldHint) but destructiveHint missing on markBugResolved. getMyBugs description mentions 'productId (必需)' but searchProducts returns product names, not IDs, chaining requires manual ID lookup, violating tool-chain pattern.
返回 Bug 全字段 + 原始 HTML 步骤
获取指定产品的一个BUG详情(指派给我的激活BUG)。这是最常用的工具,直接返回BUG的完整详情,而不是列表。使用产品名称而不是ID,更符合业务习惯
获取指派给我的BUG列表(默认只返回激活状态)。用于查看需要处理的BUG列表。必须指定产品ID以保持专注
把 Bug 置为已解决(resolution=fixed)
搜索产品列表。用于查看有哪些可用的产品,帮助选择精确的产品名称
No output schema documentation. LLMs cannot predict response structure (fields, types, pagination). Violates pattern:tool and pattern:response-shaper.
Tool chaining broken: searchProducts returns product names, but getMyBugs requires productId. LLM must infer ID lookup step. Violates pattern:tool-chain.
Parameter descriptions too brief (10-30 chars vs 72-char baseline). Descriptions like '产品名称关键词' lack context on when/why to use parameter. Violates pattern:tool-description.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | <=2025-11-25 | v2 |
markBugResolved lacks destructiveHint annotation and no confirmation/dry-run pattern. Irreversible state change (bug marked resolved) should require confirmation. Violates pattern:confirmation-request.
Error handling minimal: only UserError wrapping with generic message. No recovery guidance, categorization (retryable vs fatal), or actionable error details. Violates pattern:recovery-guide.