MCP server that provides calculator tools (addition, subtraction, multiplication, division, power, modulo) with automatic FastAPI endpoint generation
This server defines 12 basic arithmetic tools with minimal descriptions and no parameter-level documentation. All tools have identical structure (two float inputs, dict output) but lack depth. Descriptions are terse (10-30 chars), well below the 194-char baseline for production tools. No output schemas documented. No error handling guidance. Tools are READ_ONLY but lack explicit idempotentHint annotations. Duplicate tool sets (sumar/sumar_tool, etc.) suggest incomplete refactoring. No tool composition or chaining support.
Divide dos números (a / b).
Divide dos números (a / b).
Calcula el módulo de a dividido por b.
Calcula el módulo de a dividido por b.
Multiplica dos números.
Multiplica dos números.
Eleva a a la potencia b.
Eleva a a la potencia b.
Descriptions are critically short (10-30 chars vs 194-char baseline). 'Suma dos números.' and 'Resta dos números (a - b).' lack context for LLM tool selection. No explanation of when to use each tool or what the output structure contains.
No output schema documentation. Tools return dict with 'a', 'b', 'operacion', 'resultado' fields, but LLMs cannot infer this structure. Downstream tools cannot reliably extract results for chaining.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | 2026-07-28+ | v2 |
Resta dos números (a - b).
Resta dos números (a - b).
Suma dos números.
Suma dos números.
Duplicate tool definitions (sumar + sumar_tool, restar + restar_tool, etc.). LLMs will waste reasoning cycles deciding between identical tools. Consolidate to a single canonical set.
Error handling returns dict with 'error' key (dividir, modulo) but does not guide LLM recovery. 'No se puede dividir por cero' is user-facing text, not actionable guidance. Should return structured error with retry hint.
No tool annotations (idempotentHint, readOnlyHint). All tools are read-only and idempotent but lack explicit hints. LLMs cannot infer safety properties without annotations.