Query any local or Docker-based MySQL DB using GitHub Copilot or MCP.so
Single tool 'run_query' has a clear action verb and basic description, but critical gaps undermine production readiness. Description is 156 chars (within baseline 34-392 range) but lacks WHEN to use it and prerequisites. Input schema present with types (string, object) but parameter descriptions are minimal (9-47 chars vs baseline 72 chars). No output schema documented, LLMs cannot predict response structure. No error handling guidance; generic 'message' field in error responses provides no recovery path. Security concern: SQL injection risk despite keyword blocking (e.g., 'UNION SELECT' bypasses filter). No pagination, no result limits, no idempotency guarantees.
Execute SQL queries against a MySQL database with parameter binding support. Blocks dangerous operations (DROP, DELETE, TRUNCATE, ALTER, UPDATE, RENAME, CREATE) for safety.
No output schema documented. LLMs cannot predict response structure (fields, types, pagination). Baseline requires 100% of A+ tools to document return types.
Parameter descriptions are minimal (9-47 chars vs baseline 72 chars). 'params' description is only 47 chars and does not explain format, constraints, or binding syntax.
SQL injection risk: keyword-based blocking is insufficient. 'UNION SELECT', 'EXEC', 'SCRIPT', and comment-based injection bypass the filter. Requires parameterized queries and AST validation.
Error responses lack recovery guidance. Generic 'message' field does not tell LLM what to do next (retry? ask user? fatal?). Baseline requires error classification and actionable guidance.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 43 | <=2025-11-25 | v2 |
No pagination, result limits, or idempotency guarantees. Large result sets will exhaust context window. Tool description does not state max rows returned or pagination support.