A simple SQLite MCP server that provides tools for interacting with SQLite databases, including query execution, table management, and business insights tracking
Server has 6 tools with basic descriptions and input schemas, but significant gaps limit production readiness. Tool names follow verb_noun convention (read_query, write_query, create_table, list_tables, describe_table, append_insight), which is good. However, descriptions are minimal (10-50 chars), parameter descriptions are sparse or missing, and output schemas are not documented. The create_table tool has an underspecified 'columns' parameter (type: object with no schema detail). No error handling guidance, no input validation rules, and no security considerations documented. Schemas are present but incomplete, most lack detailed field documentation for responses.
Adds a new business insight to the memo resource
Creates new tables in the database
Shows the schema for a specific table
Shows all existing tables
Executes SELECT queries to read data from the database
Executes INSERT, UPDATE, or DELETE queries to modify data
create_table 'columns' parameter is underspecified: type is 'object' with no schema detail, making it impossible for LLMs to understand the expected structure (column names, types, constraints). This violates the constrained-input pattern.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields (e.g., table names from list_tables, column info from describe_table). This violates the tool pattern.
Descriptions are too brief (10-50 chars, well below the 50-200 char baseline for A+ tools). 'Executes SELECT queries to read data from the database' lacks context on when to use read_query vs describe_table, what fields are returned, or error handling.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 42 | <=2025-11-25 | v2 |
No error handling guidance. Tools like write_query and create_table can fail (SQL syntax errors, constraint violations, permission issues) but provide no recovery hints. LLMs cannot self-correct.
SQL injection risk: read_query and write_query accept raw SQL strings with no validation or parameterization guidance. LLMs can be tricked into passing malicious payloads. No mention of prepared statements or input sanitization.