MCP server for executing SELECT queries against SQLite databases with schema-aware descriptions and safety enforcement
Two tools with minimal descriptions and no visible input parameter schemas in the registration code. Tool names lack action verbs (sql_query, clients_sql_query are generic). Descriptions are present but brief (~50-80 chars each, below the 194-char baseline). No documented output schema, pagination support, or error recovery guidance. Security validation (SELECT-only enforcement) is implemented in the handler but not surfaced in tool metadata. Parameter descriptions exist in docstrings but are not visible in the FastMCP registration, only a bare 'query: str' type hint.
Execute SELECT query scoped to clients table.
Execute arbitrary SELECT query against the database.
Tool names lack action verbs. 'sql_query' and 'clients_sql_query' are generic and do not convey intent. Should be 'execute_select_query' and 'query_clients_table' to match verb_noun pattern.
Input schemas not visible in FastMCP registration. @mcp.tool decorator receives only description; parameter 'query: str' has no JSON Schema with type, description, or constraints. Cannot verify schema completeness.
No output schema documented. Tools return JSON strings but LLMs cannot infer field structure, pagination, or error format. Baseline: 100% of A+ tools document return types.
Error messages are plain strings ('Error: ...') without structured recovery guidance. LLM cannot determine if error is retryable, user-fixable, or fatal. Baseline: errors must guide next action.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 35 | 2026-07-28+ | v2 |
No pagination support. Tools return all results as JSON array. Large result sets will exhaust context window. Baseline: tools returning lists should accept limit/offset and return total count.