An MCP server that provides read-only SQL query execution against PostgreSQL databases
Single tool 'query' has a basic schema and description but lacks depth. Description is 73 chars (below baseline 194), parameter descriptions are minimal, and no output schema is documented. The tool accepts only one parameter (sql: string) with a brief constraint note. No error handling guidance, no pagination support despite potential for large result sets, and no documentation of what fields are returned. The implementation shows good security (read-only validation, timeout handling, connection pooling) but the tool definition itself is underdeveloped for LLM consumption.
Run a read-only SQL query against the PostgreSQL database.
No output schema documented. LLMs cannot plan downstream operations or extract specific fields from results. The tool returns QueryResult (rows + message) but this is not declared in the tool definition.
Tool description is 73 characters (below baseline 194). Lacks context on WHEN to use this tool, what it returns, and any prerequisites. Does not explain that results are formatted as JSON objects with column names as keys.
Parameter 'sql' has minimal description ('The SQL query to execute (SELECT queries only)'). Does not specify format constraints, length limits, or examples of valid queries. LLMs may attempt complex queries without understanding limitations.
No pagination support. Tool can return unlimited rows, risking context window exhaustion. No limit parameter, no offset/cursor, no total count in response. Large result sets will degrade LLM reasoning.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | <=2025-11-25 | v2 |
Error handling lacks recovery guidance. Code validates SELECT-only and handles timeouts, but tool definition does not document what errors are possible or how LLM should respond (retry, ask user, etc.).