MCP server for interacting with PostgreSQL databases
Single tool 'query' has critical definition gaps. Description is minimal (28 chars, below 20-char floor). Input schema present but parameter 'sql' lacks description entirely, violates pattern:tool-description requirement that every parameter needs explanation. No output schema documented. No error handling guidance. Tool lacks context on when to use it vs alternatives, prerequisites, or what fields to expect in results. Naming is acceptable (verb_noun form) but insufficient to overcome missing parameter documentation.
Run a read-only SQL query
Parameter 'sql' has no description. LLMs cannot infer what format, constraints, or examples are valid. Violates pattern:tool-description requirement that every parameter must have a non-empty description.
Tool description is 28 characters ('Run a read-only SQL query'). Below 20-char floor triggers automatic score cap of 0-20. Lacks WHEN to use it, prerequisites, or expected output structure. Does not explain what fields are returned or how to chain results to other tools.
No output schema documented. LLMs cannot plan downstream tool calls or extract specific fields from results. Violates pattern:tool requirement that tools document return types.
No error handling guidance. Code throws raw errors without recovery hints. LLMs receive stack traces instead of actionable messages like 'Invalid SQL syntax. Check table names with list_tables()' or 'Query timeout. Try limiting result set with LIMIT clause.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 41 | 2026-07-28+ | v2 |
No input validation or constraint documentation. Parameter 'sql' accepts any string. No mention of allowed query types, forbidden keywords (INSERT, UPDATE, DELETE), result size limits, or timeout behavior. LLMs may attempt writes despite 'read-only' claim.