Evaluate math expressions, run trig/stats, and convert units via @slbdn/cruncher-mcp (npx)
How to perform scientific calculations — expression evaluation, trigonometry, unit conversion, statistics, factorial, constants — through an MCP server that needs no API keys and has zero npm dependencies?
@slbdn/cruncher-mcp exposes 34 tools (standard tier) across arithmetic, trig, stats, unit conversion, and constants. Zero dependencies, uses worker_threads for timeout protection, and handles floating-point precision via integer-scaling (0.1 + 0.2 = 0.3, not 0.30000000000000004).
Recipe: Scientific calculator via @slbdn/cruncher-mcp (npx)
What it is
A zero-dependency MCP server (MIT, v1.2.30) that exposes 34 calculator tools in "standard" tier (43 in "full" tier) across 8 categories: arithmetic, expression evaluation, trigonometry, logarithms, statistics, percentages, unit conversion, and scientific constants. Uses worker_threads for timeout protection (3s default) and integer-scaling for floating-point accuracy.
Spawn
npx -y @slbdn/cruncher-mcpNo API keys, no env vars needed. Optionally set CRUNCHER_TOOL_SET=full for all 43 tools (adds memory functions).
MCP handshake
→ {"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"probe","version":"1.0.0"}}}
← {"result":{"protocolVersion":"2024-11-05","capabilities":{"tools":{}},"serverInfo":{"name":"Cruncher","version":"1.2.30"}}}Verified tool calls (8 runs, 8 successes)
1. evaluate_expression — safe math expression parser (no eval, whitelist regex)
→ tools/call: {"name":"evaluate_expression","arguments":{"expression":"(5 + 3) * 10 / 2"}}
← {"content":[{"type":"text","text":"40"}]} // 30ms2. sine — trigonometry with degree/radian support
→ tools/call: {"name":"sine","arguments":{"angle":45,"unit":"degrees"}}
← {"content":[{"type":"text","text":"0.7071067811865475"}]} // 2ms3. factorial — with worker_thread timeout protection
→ tools/call: {"name":"factorial","arguments":{"n":10}}
← {"content":[{"type":"text","text":"3628800"}]} // 21ms4. get_constant — math, physics, and chemistry constants
→ tools/call: {"name":"get_constant","arguments":{"name":"pi"}}
← {"content":[{"type":"text","text":"3.141592653589793"}]} // 1ms5. add — floating-point precision via integer-scaling
→ tools/call: {"name":"add","arguments":{"a":0.1,"b":0.2}}
← {"content":[{"type":"text","text":"0.3"}]} // ← NOT 0.30000000000000004!6. std_dev — sample standard deviation
→ tools/call: {"name":"std_dev","arguments":{"numbers":[10,20,30,40,50]}}
← {"content":[{"type":"text","text":"15.811388300841896"}]}7. variance — sample variance
→ tools/call: {"name":"variance","arguments":{"numbers":[10,20,30,40,50]}}
← {"content":[{"type":"text","text":"250"}]}8. convert_unit — 80+ conversions across 8 categories
→ tools/call: {"name":"convert_unit","arguments":{"value":100,"category":"length","from":"km","to":"mi"}}
← {"content":[{"type":"text","text":"{\"value\":100,\"from\":\"km\",\"to\":\"mi\",\"result\":62.1371192237334,\"category\":\"length\"}"}]}
→ tools/call: {"name":"convert_unit","arguments":{"value":100,"category":"temperature","from":"C","to":"F"}}
← {"content":[{"type":"text","text":"{\"value\":100,\"from\":\"C\",\"to\":\"F\",\"result\":212,\"category\":\"temperature\"}"}]}
→ tools/call: {"name":"convert_unit","arguments":{"value":1,"category":"digital_storage","from":"GB","to":"MB"}}
← {"content":[{"type":"text","text":"{\"value\":1,\"from\":\"GB\",\"to\":\"MB\",\"result\":1024,\"category\":\"digital_storage\"}"}]}All 34 tools (standard tier)
add, subtract, multiply, divide, power, sqrt, sine, cosine, tangent, asin, acos, atan, logarithm, natural_log, absolute, get_constant, sum, avg, median, min, max, count, range, variance, std_dev, percentage_of, percentage_change, percentage_reverse, modulo, factorial, evaluate_expression, convert_unit, set_angle_mode, get_angle_mode
Gotchas
- Tool name is
convert_unit(singular), notconvert_units - Tool name is
std_dev, notstandard_deviation convert_unitrequirescategoryfield (length, weight, temperature, area, volume, time, speed, digital_storage)- Default tier is "standard" (34 tools) — set env
CRUNCHER_TOOL_SET=fullfor memory functions (M+, M-, MR, MC) - Constants cover Math (pi, e, tau, phi, sqrt2), Physics (c, g, G, h, k, R), and Chemistry (NA
{ "server": "@slbdn/cruncher-mcp", "version": "1.2.30", "spawn": "npx -y @slbdn/cruncher-mcp", "protocol": "2024-11-05", "tools_count": 34, "tools_probed": ["evaluate_expression", "sine", "factorial", "get_constant", "add", "std_dev", "variance", "convert_unit"], "results": { "evaluate_expression": { "input": "(5 + 3) * 10 / 2", "output": "40", "latency_ms": 30 }, "sine": { "input": { "angle": 45, "unit": "degrees" }, "output": "0.7071067811865475", "latency_ms": 2 }, "factorial": { "input": { "n": 10 }, "output": "3628800", "latency_ms": 21 }, "get_constant": { "input": { "name": "pi" }, "output": "3.141592653589793", "latency_ms": 1 }, "add": { "input": { "a": 0.1, "b": 0.2 }, "output": "0.3", "note": "float precision via integer-scaling" }, "std_dev": { "input": { "numbers": [10, 20, 30, 40, 50] }, "output": "15.811388300841896" }, "variance": { "input": { "numbers": [10, 20, 30, 40, 50] }, "output": "250" }, "convert_unit_km_mi": { "input": { "value": 100, "category": "length", "from": "km", "to": "mi" }, "output": 62.1371192237334 }, "convert_unit_C_F": { "input": { "value": 100, "category": "temperature", "from": "C", "to": "F" }, "output": 212 }, "convert_unit_GB_MB": { "input": { "value": 1, "category": "digital_storage", "from": "GB", "to": "MB" }, "output": 1024 } }, "success_rate": "8/8", "auth": "none", "dependencies": "zero" }