A simple MCP server providing basic arithmetic operations (add, subtract, multiply, divide) and greeting functionality
Calculator server has basic tool definitions with short descriptions and properly typed parameters, but falls well below production baselines. All 5 tools have descriptions (10-30 chars) and input schemas with types and descriptions, meeting minimum structural requirements. However, descriptions are extremely terse, averaging 21 characters vs. production baseline of 194 chars, providing insufficient context for LLM tool selection. No output schemas documented. No error handling guidance (divide-by-zero returns inf without explanation). No tool annotations. Composition is sound (each tool does one thing), but descriptions lack WHEN/WHY context required by pattern:tool-description. Tools are named correctly (verb_noun: add, subtract, multiply, divide, greet), but descriptions fail to explain use cases or prerequisites. greet tool is utility noise unrelated to calculator domain. No pagination, no batch operations, no parameter constraints beyond type. Overall aligns with community-average C-tier server.
Add a and b
Divide a by b
Return personalized greeting
Multiply a by b
Subtract "b" from "a"
Tool descriptions are critically short (10-30 chars, avg 21). Production baseline is 194 chars. Descriptions must explain WHAT the tool does, WHEN to use it, and any prerequisites. Current descriptions lack context for LLM selection.
divide() returns float('inf') on division by zero without documentation or error guidance. LLM receives infinity without knowing it's an error state. Should return structured error with recovery guidance: 'Cannot divide by zero. Check divisor value and retry.'
No output schemas documented. Tools return raw integers/strings. LLMs need to know expected return types and fields to plan downstream calls. Baseline: 100% of A+ tools have documented return types.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 54 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 41 | - | v1 |
subtract() description reads 'Subtract "b" from "a"' but implementation returns -(b - a), which is mathematically correct but semantically confusing. Parameter descriptions (Minuend, Subtrahend) use domain jargon without explanation.
greet() tool is utility noise unrelated to calculator domain. Adds clutter without domain value. Should be removed or the server should focus on a single responsibility (arithmetic operations only).