Read-only MCP gateway and local developer assistant for OceanBase.
Three tools with complete input schemas and reasonable descriptions. All tools are read-only with clear ER diagram generation purposes. Naming follows verb_noun pattern (ob_generate_*, ob_plan_*). Descriptions are adequate (100-150 chars) but lack actionable context for LLM selection. Parameters are well-typed with enums for relationshipMode and format, but lack detailed constraints (e.g., why depth 1-3, what minConfidence 0-1 means in practice). Output schemas are not documented in the source, LLMs cannot plan downstream operations. Error handling and recovery guidance are absent. No tool annotations (readOnlyHint present but not declared). Composition is sound: three distinct tools with clear separation of concerns.
Generate Mermaid and JSON ER metadata from allowed OceanBase table metadata and relationships.
Generate a self-contained HTML ER diagram from allowed OceanBase metadata and relationship evidence.
Plan local ER HTML export commands for large OceanBase schemas without returning large inline HTML.
Output schemas not documented. LLMs cannot infer what fields are returned (e.g., does ob_generate_er_diagram return mermaid_code, json_metadata, warnings, truncated?). This blocks downstream tool chaining and forces agents to guess.
Parameter descriptions lack actionable constraints. 'depth: Relationship depth 1-3' does not explain what depth means (hops? levels of foreign keys?). 'minConfidence: 0-1' lacks context on how confidence is calculated or when to use it.
No error handling or recovery guidance. If a schema is not found or relationships cannot be inferred, what does the tool return? How should the LLM respond? No guidance for retryable vs. fatal errors.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | <=2025-11-25 | v2 |
Tool descriptions do not explain WHEN to use each tool. ob_generate_er_diagram vs ob_generate_er_html vs ob_plan_er_export, what is the user intent that drives selection? Descriptions should guide LLM choice.
No tool annotations (readOnlyHint, idempotentHint). Although all tools are read-only, declaring this via annotations helps LLMs reason about safety and retry behavior.