A clean, batteries-included TypeScript starter for building MCP (Model Context Protocol) servers. Zod-validated tools, tests, and one-command dev loop.
Two simple tools with basic schemas and descriptions. Both tools have input schemas with type definitions and descriptions, meeting minimum requirements. However, descriptions are minimal (under 100 chars), parameter descriptions lack detail about constraints or expected formats, and there is no documented output schema. No error handling guidance, no parameter validation rules, and no composition patterns. The tools are READ_ONLY and trivial (echo, fetch), so security and complexity concerns are minimal, but the definitions lack the depth needed for production use.
Echo a message back — the hello-world of MCP tools.
Fetch a JSON payload from an HTTPS URL and return it prettified.
No documented output schema. LLMs cannot infer what fields to expect from tool responses, forcing them to guess at downstream field names and types.
Parameter descriptions lack constraint details. 'Text to echo back' and 'HTTPS URL returning JSON' do not specify format, length limits, or error conditions (e.g., what happens if URL is invalid or returns non-JSON).
Tool descriptions are minimal (under 100 chars). They lack context on WHEN to use each tool, what it returns, or how it differs from similar tools. Baseline for A+ tools is 194 chars.
No error handling guidance. fetch_json returns isError responses but does not guide the LLM on recovery steps (e.g., 'Try a different URL' or 'Verify the endpoint returns valid JSON').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | 2026-07-28+ | v2 |
fetch_json truncates output at 50,000 chars without explaining why or offering pagination. Large responses may be silently truncated, confusing the LLM about what data is available.