Educational MCP server implementation with NDJSON over stdio transport, demonstrating tool registry, resource handling, and basic argument validation
Critical failures across all dimensions. Tool definitions are severely underdeveloped: two tools named 'get_time' (duplicate), descriptions are minimal (10-50 chars, well below 194-char baseline), no input schemas visible for 3/5 tools, and no output schemas documented. Parameters lack type information in most cases. The 'ping' tool references deprecated MCP patterns. Code organization is chaotic (tools split across legacy/ and project/ with conflicting implementations). No error handling, no parameter validation guidance, and no composition strategy evident.
Retrieve sample data from SQLite database with optional limit parameter.
Return current epoch time.
Return current UTC time in specified format.
Insert a new sample record into the SQLite database.
Simple ping tool for async server.
Duplicate tool names: two 'get_time' tools with conflicting signatures and implementations across legacy/ and project/ directories. LLMs cannot disambiguate; one will be silently ignored or cause routing errors.
No input schemas visible for 3/5 tools (get_time legacy, ping, and implicit tool definitions). Agents cannot validate parameters or understand constraints.
Descriptions are critically short (10-50 chars vs 194-char baseline). 'Return current epoch time' and 'Simple ping tool' provide no context for LLM selection or when to use each tool.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 36 | <=2025-11-25 | v2 |
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields. Missing return type documentation violates baseline (100% of A+ tools have documented return types).
No error handling guidance. Tools provide no recovery hints, categorization (retryable vs fatal), or actionable error messages. Agents cannot self-correct on failures.