An MCP server that provides read-only SQL query execution and database resource listing for PostgreSQL databases
Single tool 'query' with minimal definition quality. Tool has a basic description (18 chars) and input schema present but severely underdeveloped. Parameter 'query' lacks type constraints, validation guidance, or format specification. No output schema documented. No error handling guidance. No parameter descriptions beyond the bare minimum. Tool lacks security context (read-only enforcement not visible in schema). Naming is generic ('query') rather than action-verb specific ('execute_read_query'). No pagination, no result limits documented, no chaining IDs for downstream tools.
Run a read-only SQL query
Tool name 'query' is generic and does not start with a clear action verb. Should be 'execute_read_query' or 'run_sql_query' to signal intent and distinguish from write operations.
Input parameter 'query' has no type constraint, format specification, or validation guidance. LLM cannot infer valid SQL syntax, length limits, or forbidden operations (e.g., DDL, DML). Should specify: 'SQL SELECT statement only, max 5000 chars, no INSERT/UPDATE/DELETE/DROP allowed.'
No output schema documented. LLM cannot plan downstream tool calls or extract structured data. Should document: returns array of objects with column names as keys, values typed per PostgreSQL column type.
No error handling guidance. Errors (syntax, permission, timeout) return raw errors with no recovery hints. Should categorize: 'Syntax error, check SQL. Permission denied, verify role. Timeout, simplify query or add LIMIT.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 37 | 2026-07-28+ | v2 |
No result limits or pagination documented. Large result sets can exhaust context window. Should cap results at 100 rows and accept limit/offset parameters.