A MCP server that helps access and query data in various popular databases
Five tools with basic verb-noun naming (get_*, execute_*) but significant quality gaps. All tools have descriptions (10-60 chars, below the 50-200 char baseline for LLM optimization). Input schemas present but minimal: execute_query and execute_query_json have only a 'query' string param with no format constraints, range limits, or validation guidance. get_table_columns and get_table_types accept only table_name with no description of expected format. Output schemas are completely undocumented, LLMs cannot infer what fields to expect from results. No error handling guidance (e.g., what happens on invalid SQL, missing table, connection failure?). No pagination support despite tools returning potentially large result sets. Tool descriptions lack WHEN to use each tool (e.g., when to call execute_query vs execute_query_json?) and any prerequisites. Per-tool average: 42/100.
Execute a SQL query and return results as a markdown table
Execute a SQL query and return results as JSON
Get the recent query history
Get column names for a specific table
Get column types for a specific table
Output schemas completely undocumented. execute_query returns markdown table as string; execute_query_json returns JSON string. LLMs cannot parse or chain results without explicit schema documentation.
No input validation or constraint documentation. execute_query accepts arbitrary SQL strings with no guidance on format, length limits, or injection prevention. Missing: 'SQL query (max 10000 chars, SELECT/WITH only, no DDL/DML)'.
No error handling guidance. Tools return generic 'Error executing query: ...' with no recovery path. LLMs cannot distinguish retryable (timeout) from fatal (syntax error) failures.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 42 | 2026-07-28+ | v2 |
No pagination support. execute_query hardcodes 10-row limit in display but returns all rows internally. Large result sets will exhaust context window. Missing: limit, offset, total_count in output.
Ambiguous tool selection. execute_query vs execute_query_json differ only in output format. Descriptions do not explain WHEN to use each (e.g., 'Use execute_query for human-readable tables, execute_query_json for downstream tool chaining').