A calculator MCP server built with NestJS that provides basic arithmetic operations and statistical calculations
NestCalcMCP defines 5 simple arithmetic tools with basic Zod schemas and descriptions. All tools have names, descriptions, and input schemas present. However, descriptions are minimal (10-50 chars, well below the 194-char baseline), lack context on WHEN to use each tool, and do not explain output structure. Parameters are typed (number, array) but descriptions are generic ('First number for the operation'). No output schemas documented. Error handling exists (division by zero, empty array) but lacks recovery guidance. Tools follow verb_noun naming (calculate, subtract, multiply, divide, calculateStats) which is good, but descriptions do not differentiate tools or guide LLM selection. Overall: functional but below production quality.
Add two numbers together
Calculate statistics for an array of numbers
Divide the first number by the second
Multiply two numbers together
Subtract the second number from the first
Descriptions are too short (10-50 chars vs 194-char baseline) and lack context. 'Add two numbers together' does not explain when to use calculate vs other tools, what the output format is, or any prerequisites.
Output schemas are not documented. LLMs cannot plan downstream calls or extract structured data. Responses are plain text strings, not typed objects with named fields.
Error messages lack recovery guidance. 'Error: Division by zero' and 'Error: Array of numbers cannot be empty' tell the LLM what failed but not what to do next (e.g., 'Provide a non-zero divisor' or 'Provide at least one number').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 46 | 2026-07-28+ | v2 |
Parameter descriptions are generic and do not specify constraints. 'First number for the operation' does not clarify range, precision, or whether negative/decimal values are allowed.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) present. All tools are read-only and idempotent, but this is not declared in the schema.