A comprehensive calculator MCP server using TypeScript.
The server has 16 tools with generally clear naming and functional schemas, but falls short of production quality due to incomplete output schema documentation, missing parameter descriptions in some tools, and inadequate error handling guidance. Naming follows verb_noun convention well (search_engine, calculate_add, get_pi). Most tools have descriptions, but descriptions are thin (20-80 chars), leaving LLMs without sufficient context on WHEN to use each tool vs alternatives. Parameter schemas use Zod with type definitions, but descriptions are sparse or missing context for edge cases. Output schemas are not explicitly documented, callers must infer structure from code. Error handling returns plain text errors without guidance on recovery. The search_engine tool exposes an external API dependency without discussing rate limits or fallback behavior. Overall, the server is functional but lacks the depth expected of a production-grade calculator suite.
Adds two numbers.
Calculates the cosine of an angle given in radians.
Divides the first number by the second.
Calculates the factorial of a non-negative integer (n!).
Calculates the base-10 logarithm of a positive number.
Multiplies two numbers.
Calculates the natural logarithm (base e) of a positive number.
Output schemas not documented for any tool. LLMs cannot infer what fields to expect or how to chain tool results. Code shows text responses, but callers must reverse-engineer the structure.
Descriptions are too short (10-90 chars, baseline 194 chars for A+ tools). Most descriptions state WHAT the tool does but not WHEN to use it or how it differs from similar tools. E.g., all trigonometric functions (sine, cosine, tangent) have nearly identical descriptions, making them hard to distinguish.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 57 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 9 | - | v1 |
Calculates a specified percentage of a given number (e.g., 20% of 150).
Calculates the base raised to the power of the exponent (base^exponent).
Calculates the sine of an angle given in radians.
Calculates the square root of a non-negative number.
Subtracts the second number from the first.
Calculates the tangent of an angle given in radians.
Returns the value of Euler's number (e), the base of natural logarithms.
Returns the value of the mathematical constant Pi (π).
Performs a search using TheCodeRunners search engine and returns the results.
Error handling is inconsistent. Some tools (divide, sqrt, natural_log, log10) handle edge cases and return isError=true with guidance. Others (add, subtract, multiply, power, sine, cosine, tangent, get_pi, get_e) have no visible error handling. Trigonometric functions don't guard against NaN or precision loss. factorial has internal limits (n > 170) not exposed in schema or description.
search_engine depends on external service (TheCodeRunners) with AUTH_HEADER credential. No documentation of rate limits, timeout behavior, retry guidance, or result limits. Exposes external API dependency without abstracting operational concerns. Calling code must infer pagination, error categories, and performance characteristics.
Parameter constraints not fully expressed. E.g., calculate_factorial's internal limit of n ≤ 170 is not declared in schema or description. Callers will discover this only by hitting it. calculate_power should warn about overflow/underflow risk for large exponents. Trigonometric functions should clarify they return values in [-1, 1] and are periodic.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) present. All tools are read-only (safe to retry), but this is not declared in the schema. Future spec alignment would benefit from explicit annotations.