A simple MCP server providing calculator tools without authentication
This is a minimal calculator server with two tools. Both tools have missing or inadequate descriptions, no parameter descriptions whatsoever, and while schemas are technically present via Zod, they lack required documentation. The server violates several critical patterns: parameter descriptions are entirely absent (100% missing), tool descriptions are vague and under 50 characters (far below the 194-char baseline), and there is no error handling guidance. The 'divide by zero' check returns a text error rather than a structured error response. Output schemas are implicit (text content) but never documented. This is well below community baseline and would not pass production code review.
Simple addition tool
Calculator tool with multiple operations
Tool descriptions are trivial (<50 chars) and provide no context for LLM selection. Both 'Simple addition tool' and 'Calculator tool with multiple operations' lack actionable guidance on when or why to use each tool instead of the other.
Every input parameter lacks a description. LLMs cannot infer that 'a' and 'b' are numeric operands, or that 'operation' is an enum-constrained choice.
No output schema documented. Callers cannot know that responses contain a 'content' array with 'text' fields. Implicit schemas force LLMs to guess at response structure and parse unstructured text.
Error handling is non-recoverable. The divide-by-zero check returns plain text 'Error: Cannot divide by zero' rather than a structured error with recovery guidance. Per pattern:recovery-guide, errors should tell the LLM what to do next.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 36 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 41 | - | v1 |
Naming overlap: both 'add' and 'calculate' perform addition. An LLM will struggle to choose between them. Per composition rules, avoid multiple tools that do the same thing differently.
No input validation or constraint documentation. The 'operation' enum is enforced by Zod, but the description field is null, LLMs cannot read Zod schemas directly and will not know which operations are valid without a description.