Simple MCP Server with Mock Database demonstrating key MCP concepts using a mock in-memory database with resources for schemas, tools for querying and analyzing data, and prompts for data analysis guidance
Two tools with basic schemas and descriptions, but significant gaps in parameter documentation and output clarity. query_table has a proper Pydantic output model (QueryResult), but analyze_table returns a bare dict with no schema. Parameter descriptions are minimal (10-20 chars). No error handling guidance, no enum constraints, no validation rules stated. Naming is acceptable (verb_noun pattern), but descriptions lack context on WHEN to use each tool or what distinguishes them. Missing: per-parameter descriptions for analyze_table, output schema documentation for analyze_table, error recovery guidance, and actionable error messages.
Analyze a table's data.
Query a table and return data.
analyze_table returns untyped dict with no documented schema. LLM cannot predict output fields or plan downstream calls.
Parameter descriptions are too brief (10-20 chars). 'Max rows to return' for limit lacks context on valid range, default behavior, or performance implications.
No error handling guidance. Tools do not document what happens on invalid table_name, how to recover, or what alternatives exist.
analyze_table has no description of what 'analyze' means or what metrics it returns. LLM cannot distinguish it from query_table.
No input validation rules stated. limit parameter has no min/max bounds; LLM could pass negative or absurdly large values.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 43 | 2026-07-28+ | v2 |