A basic MCP server implementation demonstrating tool creation and execution
Both tools have minimal definitions. 'fetch' has no input schema (critical failure). 'process' has a basic schema but both lack parameter descriptions. Descriptions are present but generic (10-30 chars), below the 50-200 char baseline for LLM-optimized tools. No output schemas documented. No error handling guidance. No composition support (tools are isolated, no chaining IDs). Naming is generic ('fetch', 'process'), violates verb_noun clarity pattern.
Use this tool to fetch data from a source
Use this tool to process data
Generic tool names 'fetch' and 'process' violate verb_noun clarity. LLMs cannot infer intent from names alone. Should be 'fetch_data' and 'process_data' at minimum, ideally more specific (e.g., 'fetch_from_api', 'transform_text').
Descriptions are 10-30 characters, well below 50-200 char baseline. 'Use this tool to fetch data from a source' lacks WHEN to use, WHAT it returns, and prerequisites. Does not answer: what source? What format? What happens on failure?
No output schemas documented. LLMs cannot plan downstream calls or extract data. 'fetch' returns a string, but what string? 'process' returns uppercase data, but what structure?
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 31 | 2026-07-28+ | v2 |
No error handling guidance. If fetch fails (network error, timeout, invalid source), LLM has no recovery path. No categorization of errors as retryable vs fatal.