A simple MCP server providing calculator tools with addition and multi-operation arithmetic
Two tools with basic schemas and minimal descriptions. Both tools have input schemas with proper types (number, string enum), but descriptions are extremely short (10-40 chars), falling well below the 50-200 char baseline for LLM-optimized descriptions. No output schema documentation. Error handling is minimal (divide-by-zero check in 'calculate' returns plain text, not structured guidance). Tool names lack action verbs ('add' and 'calculate' are weak; 'perform_addition' and 'perform_calculation' would be clearer). No parameter descriptions beyond type hints. Schemas are visible and properly typed, preventing a lower score, but the overall quality is below median for production tools.
Simple addition tool
Calculator tool with multiple operations
Tool descriptions are critically short (10-40 chars). 'Simple addition tool' and 'Calculator tool with multiple operations' lack context for LLM selection. Should explain WHEN to use each tool, WHAT it returns, and any prerequisites.
No parameter descriptions. Zod schema defines types but LLMs cannot read JSON Schema directly. Each parameter (a, b, operation) needs a text description explaining its role, valid range, and format.
No output schema documented. Tool responses return plain text in a content array, but LLMs need to know the structure of the response to plan downstream calls and extract results reliably.
Tool names lack action verbs. 'add' and 'calculate' are generic. Better names: 'perform_addition', 'perform_arithmetic_operation' or 'compute_math'. Verb-noun naming helps LLMs parse intent from the name alone.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 41 | 2026-07-28+ | v2 |
Error handling is unstructured. 'calculate' returns plain text 'Error: Cannot divide by zero' instead of a structured error with recovery guidance (e.g., 'Invalid operation: division by zero. Use a non-zero divisor.').