An MCP server providing calculator tools for basic arithmetic operations
CalculatorMCP provides 10 simple arithmetic tools with consistent naming (verb_noun pattern: add, subtract, multiply, etc.) and clear, concise descriptions (10-60 chars). All tools have proper JSON Schema input definitions with typed parameters and descriptions. However, output schemas are not documented, callers cannot see that tools return a double/number. Parameter descriptions are minimal but adequate for simple numeric operations. No error recovery guidance, no tool annotations (readOnlyHint), and no pagination/batching patterns (though not applicable for calculator functions). The server is well-structured for its domain but lacks production-grade error handling and output documentation.
Returns the absolute value of a number
Adds two numbers together
Calculates the average of two numbers
Divides one number by another
Returns the remainder after division
Multiplies two numbers
Calculates what percentage a value is of a total
Raises a number to a specified exponent
Output schemas not documented. Tools return double/number but callers cannot see the return type or structure. LLMs cannot plan downstream operations or validate results.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All tools are read-only and idempotent but this is not declared in the schema, forcing LLMs to infer safety properties.
Error handling lacks recovery guidance. divide() and percentage() validate inputs (division by zero, total != 0) but return generic ArgumentException. LLMs receive no actionable error messages or suggestions for recovery.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | <=2025-11-25 | v2 |
Calculates the square root of a number
Subtracts the second number from the first
Transport mechanism unknown. Code uses Azure Functions Worker with McpToolTrigger attribute but actual HTTP/STDIO transport is not visible in provided source. Cannot verify remote accessibility.
Parameter descriptions are minimal (10-20 chars). While adequate for simple numeric params, they lack format hints, ranges, or constraints. E.g., 'Dividend' and 'Divisor' do not explain valid ranges or precision expectations.