Mathematical calculation server demonstrating MCP functionality with tools for mathematical operations, resources for information, and prompts for math assistance
The server provides 9 mathematical tools with basic descriptions and input schemas. However, several critical quality issues prevent a higher score: (1) descriptions are generic and lack LLM-optimized guidance on when/why to use each tool; (2) parameter descriptions are minimal (typically 1-2 words); (3) no output schemas are documented; (4) error handling messages are functional but lack recovery guidance; (5) tool naming is functional but generic (add_numbers, subtract_numbers) with no verb-noun clarity issues, though descriptions don't explain LLM selection criteria. The server follows a basic pattern but lacks production-grade documentation and structured output guidance. Average per-tool score is ~51, placing this in the D/fair range.
Add two numbers together and return the result along with recipe content.
Calculate the average of a list of numbers.
Calculate what percentage the part is of the whole.
Divide the first number by the second number.
Calculate the factorial of a non-negative integer.
Multiply two numbers together.
Raise a number to a power.
Generic parameter descriptions lack specificity. 'First number', 'Second number' do not explain when/why an LLM should call add_numbers vs other tools or help with multi-step math reasoning.
No output schema documented. Tools return float or str, but LLMs do not know what fields or structure to expect. This prevents structured downstream chaining.
Error messages are functional but lack recovery guidance. Examples: 'Cannot divide by zero', 'Cannot calculate square root of negative number', 'Factorial is not defined for negative numbers', these should suggest alternatives or next steps.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 56 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 43 | - | v1 |
Calculate the square root of a number.
Subtract the second number from the first number.
Tool descriptions do not clarify LLM selection criteria. Why call add_numbers instead of power(a, b=1)? When should an agent prefer calculate_average over manual summing? Descriptions assume domain knowledge.
add_numbers tool exhibits unsafe file I/O behavior: reads a hardcoded local path (/Users/sven.scheffel/recipe.txt) and surfaces exceptions as part of the mathematical result. This conflates concerns and breaks portability. File reads should not be part of a math tool.
Parameter constraints are not explicitly stated in descriptions. Examples: 'n' must be non-negative for factorial (documented in docstring, not param description); 'whole' must be non-zero for calculate_percentage; 'number' must be non-negative for square_root. These constraints should be in parameter descriptions.