This MCP server connects to your MySQL database, providing seamless access to database schemas, tables, and query capabilities through
Single tool 'query' has a basic schema and minimal description. The tool name lacks a clear action verb (should be 'execute_query' or 'run_query'). Description is only 24 characters, below the 50-200 char baseline for LLM-optimized descriptions. Input schema is present but lacks parameter descriptions (the 'sql' param has a description, which is good, but the overall tool description is too terse). No output schema is documented. Error handling exists but does not guide recovery. No tool annotations (readOnlyHint, etc.). Resource listing and reading are implemented but not exposed as tools, limiting composability.
Run a read-only SQL query
Tool description is only 24 characters ('Run a read-only SQL query'). LLM-optimized descriptions should be 50 - 200 chars and explain WHAT, WHEN, and any prerequisites. Current description lacks context for tool selection.
Tool name 'query' is generic and lacks an action verb. Should be 'execute_query' or 'run_query' to clearly signal the action. Generic names like 'query' or 'process' force LLMs to read descriptions to infer intent.
No output schema documented. LLMs cannot plan downstream calls or extract structured data without knowing the response format. Current implementation returns markdown tables as TextContent, but this is not formally specified.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). The 'query' tool is read-only and should declare readOnlyHint=true to signal safety to agents.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 38 | <=2025-11-25 | v2 |
Error handling returns raw exception strings ('return [TextContent(content=str(e), mimeType="text/plain")]'). Errors should guide recovery: 'Invalid SQL: only SELECT/SHOW/DESCRIBE allowed. Example: SELECT * FROM users LIMIT 10'.