MCP server for generating and encoding PlantUML diagrams from technical specifications
The server defines two tools with complete Zod schemas and descriptions. Both tools have clear verb-based names and adequate parameter documentation. However, output schemas are not explicitly documented, and some descriptions lack depth about when to use each tool vs. the other. Parameter validation is present in schemas but error handling guidance is minimal.
Encode a PlantUML diagram and return a Markdown image link. The diagram must be valid PlantUML starting with @startuml and ending with @enduml.
Generate one or more PlantUML diagrams from a plain-English technical specification and return Markdown image links. Requires GITHUB_TOKEN to be set.
Output schemas not explicitly documented. Both tools return structured content but no schema definition is visible for what fields consumers should expect (e.g., does 'title' come back? What about 'error' field structure?).
Error messages lack actionable recovery guidance. Both tools return isError=true with err.message, but do not categorize errors (retryable vs. user-fixable) or suggest next steps (e.g., 'Check GITHUB_TOKEN is set' or 'Verify PlantUML syntax').
Missing tool selection guidance. Both tools operate on PlantUML but descriptions do not explain WHEN to call encode_plantuml (you have PlantUML already) vs. spec_to_diagrams (you have a spec). An LLM may pick the wrong tool.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 62 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 56 | - | v1 |
GITHUB_TOKEN dependency underdocumented. spec_to_diagrams description mentions 'Requires GITHUB_TOKEN to be set' but does not explain what happens if it is missing (error? fallback?), nor does it appear as a parameter (correctly injected server-side) but the error case is not handled explicitly in the code snippet.
No dry-run or confirmation for irreversible operations. While both tools are read-only (no mutations), spec_to_diagrams calls an external LLM API which is non-deterministic. No ability to preview the spec→diagram mapping before committing the call.