This guide walks you through setting up a Model Context Protocol (MCP) server using the TypeScript SDK.
This server has only one tool ('add') with minimal quality. The tool has a trivial description (10 chars: 'Add two numbers'), no parameter descriptions at all, and lacks essential documentation. Per the rubric, descriptions under 20 characters score 0-20, and parameters with no descriptions are a critical failure. The input schema is present but the two parameters ('a' and 'b') have null descriptions, violating the requirement that every parameter must have a non-empty description explaining what it controls. This is a demo/educational server with no production-grade error handling, no security considerations, and no recovery guidance. The naming ('add') is generic and does not follow the verb_noun pattern well, 'add_numbers' would be clearer. Overall, this represents a minimal proof-of-concept with numerous critical definition gaps.
Add two numbers
Tool description is under 20 characters ('Add two numbers'), providing no context about when to use this tool, what it returns, or any prerequisites.
Both input parameters ('a' and 'b') have null descriptions. The rubric requires every parameter to have a non-empty description explaining what it controls. LLMs cannot infer parameter meaning from names alone.
No output schema documented. LLMs need to know what fields to expect so they can plan downstream calls and extract data correctly.
No error handling or recovery guidance. If the addition fails or receives invalid input, the tool provides no actionable error message to guide the LLM's next step.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 31 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 25 | - | v1 |
Tool name 'add' is too generic and does not follow the verb_noun pattern clearly. 'add_numbers' would be more descriptive and help LLMs understand intent from the name alone.