A simple MCP server providing calculator tools with basic arithmetic operations
Two tools with basic schemas and minimal descriptions. Both tools have input schemas with proper types (number, 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 (only divide-by-zero check in 'calculate'). Tool names lack action verbs ('add' and 'calculate' are weak; 'perform_addition' and 'perform_calculation' would be clearer). No parameter descriptions beyond type hints. No guidance on when to use one tool vs. the other.
Simple addition tool
Calculator tool with multiple operations
Descriptions are critically short (10-40 chars). 'Simple addition tool' and 'Calculator tool with multiple operations' provide no context for LLM selection, when to use each tool, or what they return. Baseline is 50-200 chars.
No parameter descriptions. Parameters 'a', 'b', and 'operation' have types but no descriptions explaining their purpose, constraints, or expected format. LLMs cannot infer meaning from names alone.
No output schema documented. Callers cannot know what fields to expect in the response. Both tools return text content, but this is not formally specified.
Weak tool naming. 'add' and 'calculate' lack action verbs and do not clearly distinguish intent. 'add' could mean append, concatenate, or sum. 'calculate' is generic. Better: 'sum_numbers', 'perform_arithmetic'.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 38 | 2026-07-28+ | v2 |
Minimal error handling. Only 'calculate' checks for divide-by-zero; 'add' has no validation. No guidance on what to do if inputs are invalid or out of range. Error messages should tell LLMs what to do next.