MCP server for querying an SQLite expense management database with read-only SQL execution capabilities
Three tools with basic schemas and descriptions, but significant gaps in parameter documentation, error guidance, and LLM-optimized descriptions. All tools are read-only database queries with minimal context. Descriptions are present but generic (10-50 chars). No parameter descriptions for critical inputs like 'table_name' and 'sql'. Error handling returns unstructured error strings instead of actionable recovery guidance. No tool annotations (readOnlyHint, etc.). Tool names follow verb_noun pattern (list_, get_, execute_) but lack specificity about what data they operate on.
Executes READ-ONLY SELECT queries against the database.
Returns column names and types for a given table.
Returns a list of all table names in the database.
Parameter 'table_name' in get_schema lacks description. LLM cannot infer whether to pass table name, ID, or pattern.
Parameter 'sql' in execute_query lacks description. No guidance on format, length limits, or allowed query patterns beyond 'SELECT only'.
Error responses return unstructured strings like 'error: {str(ex)}' instead of actionable recovery guidance. LLM cannot determine if error is retryable or user-fixable.
Tool descriptions are too short (10-50 chars) and lack context on WHEN to use each tool or what it returns. Baseline is 194 chars.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | 2026-07-28+ | v2 |
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All three tools are read-only but this is not declared in schema.