MCP Hub
Back to servers

calc-mcp

Validated

21 MCP tools for math, randomness, dates, encoding, hashing, and more — deterministic and accurate.

Registry
Stars
5
Tools
21
Updated
Feb 20, 2026
Validated
Feb 22, 2026
Validation Details

Duration: 9.3s

Server: calc-mcp v1.8.4

Quick Install

npx -y @coo-quack/calc-mcp

Calc MCP

npm version CI License: MIT

Screenshot 2026-02-14 at 18 28 43

📖 Documentation — Full tool reference, examples, and install guides.

21 tools for things AI is not good at — deterministic math, cryptographic randomness, accurate date arithmetic, encoding, hashing, and more.

LLMs hallucinate calculations, can't generate true random numbers, and struggle with timezones. This MCP server fixes that.

Quick Start

# Claude Code
claude mcp add -s user calc-mcp -- npx --prefix /tmp -y @coo-quack/calc-mcp@latest

# Or just run it
npx --prefix /tmp -y @coo-quack/calc-mcp@latest

Works with Claude Desktop, VS Code Copilot, Cursor, Windsurf, and any MCP client — setup guides below.


Why?

AI aloneWith calc-mcp
"10 + 34 × 341 ÷ 23 = 507.8" ❌514.087 ✅ (math)
"Here's a UUID: 550e8400-..." 🤷 fakeCryptographically random UUID v4/v7 ✅ (random)
"100 days from now is..." 🤔 guess2026-05-22 ✅ (date)
"SHA-256 of password123 is..." 💀 hallucinatedef92b778bafe... ✅ (hash)
  • Deterministic — Same input, same correct output, every time
  • Secure — Sandboxed math, ReDoS protection, weak hash warnings
  • Private — All computation runs locally, no data sent to external services
  • No server config — Install once via npx; MCP client setup required
  • No API key — No account or API key required for calc-mcp itself; requires Node.js

Examples

Ask in natural language — your AI assistant selects the appropriate tool.

Math & Numbers

You askYou getTool
What's 10 + 34 × 341 ÷ 23?514.087math
Convert 255 to binary11111111base
Is 4539578763621486 a valid card number?trueluhn

Text & Encoding

You askYou getTool
How many characters in "Hello, World! 🌍"?15 chars, 18 bytescount
Base64 encode "Hello World"SGVsbG8gV29ybGQ=base64
Base64 decode "eyJhbGciOiJIUzI1NiJ9"{"alg":"HS256"}base64
URL-encode "hello world"hello%20worldencode
URL-decode "hello%20world"hello worldencode
HTML-decode &lt;script&gt;<script>encode
SHA-256 hash of "password123"ef92b778bafe...hash
HMAC-SHA256 of "message" with key "secret"8b5f48702995...hash

Date & Time

You askYou getTool
What time is it in New York?2026-02-10T19:00:00-05:00datetime
What's 100 days after 2026-02-11?2026-05-22date
When does "30 9 * * 1-5" run?Mon–Fri at 9:30cron_parse

Generation

You askYou getTool
Generate a UUID v7019c4b54-aad2-7e52-...random
Generate a readable 20-char passwordhT9jZDojX6sHRJt8vaKSrandom
Shuffle ["Alice", "Bob", "Charlie"]["Charlie", "Alice", "Bob"]random

Conversion

You askYou getTool
100 miles in kilometers?160.93 kmconvert
72°F in Celsius?22.22°Cconvert
Convert #FF5733 to RGBrgb(255, 87, 51)color
Convert rgba(255, 0, 0, 0.5) to 8-digit HEX#ff000080color

Analysis & Parsing

You askYou getTool
Extract numbers from "abc123def456"123, 456regex
Does 1.5.3 satisfy ^1.0.0?truesemver
Does 1.8.0 satisfy ">=1.5.0 <2.0.0"?truesemver
IP range of 192.168.1.0/24?192.168.1.1 – .254 (254 hosts)ip
Edit distance: "kitten" → "sitting"3diff
Unicode info for "€"U+20AC, Currency Symbolschar_info
Is {"name":"test"} valid JSON?valid, objectjson_validate

Decode & Parse

You askYou getTool
Decode this JWT: eyJhbGci...{ alg: "HS256", name: "John Doe" }jwt_decode
Parse https://example.com/search?q=hellohost: example.com, q: "hello"url_parse

All 21 Tools

ToolDescription
mathEvaluate expressions, statistics
countCharacters (grapheme-aware), words, lines, bytes
datetimeCurrent time, timezone conversion, UNIX timestamps
randomUUID v4/v7, ULID, passwords (readable, custom charset), random number, shuffle
hashMD5, SHA-1, SHA-256, SHA-512, CRC32, HMAC
base64Encode / decode
encodeURL, HTML entity, Unicode escape
dateDiff, add/subtract, weekday, wareki
regexTest, match, matchAll, replace
baseNumber base conversion (2–36)
diffLine diff, Levenshtein distance
json_validateValidate JSON, CSV, XML, YAML
cron_parseHuman-readable cron + next runs (weekday/month names supported)
luhnValidate / generate check digits
ipIPv4/IPv6 info, CIDR contains check, range calculation
colorHEX ↔ RGB ↔ HSL (alpha channel supported)
convert8 categories, 72 units: length, weight, temperature, area (tsubo, tatami), volume, speed, data, time
char_infoUnicode code point, block, category
jwt_decodeDecode header + payload (no verification)
url_parseProtocol, host, path, params, hash
semverCompare, validate, parse, range satisfaction

Install

Claude Code

claude mcp add -s user calc-mcp -- npx --prefix /tmp -y @coo-quack/calc-mcp@latest

Claude Desktop / Cursor / Windsurf

Add to your config file:

AppConfig path
Claude Desktop (macOS)~/Library/Application Support/Claude/claude_desktop_config.json
Claude Desktop (Windows)%APPDATA%\Claude\claude_desktop_config.json
Cursor~/.cursor/mcp.json
Windsurf~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "calc-mcp": {
      "command": "npx",
      "args": ["--prefix", "/tmp", "-y", "@coo-quack/calc-mcp@latest"]
    }
  }
}

VS Code (GitHub Copilot)

Add to .vscode/mcp.json in your workspace:

{
  "servers": {
    "calc-mcp": {
      "command": "npx",
      "args": ["--prefix", "/tmp", "-y", "@coo-quack/calc-mcp@latest"]
    }
  }
}

Other MCP Clients

Calc MCP works with any MCP-compatible client. Run the server via stdio:

npx --prefix /tmp -y @coo-quack/calc-mcp@latest

Point your client's MCP config to the command above. The server communicates over stdio using the standard Model Context Protocol.

Development

bun install
bun run dev       # Start dev server
bun test          # Run tests
bun run lint      # Biome
bun run format    # Biome

Security

calc-mcp processes all data locally and does not:

  • ❌ Send data to external servers
  • ❌ Log data to files or remote services
  • ❌ Store processed data persistently

For detailed security information, see SECURITY.md.

Safe Usage with LLMs

calc-mcp itself is local-only. However, when used via an LLM, your inputs are sent to the LLM provider (Anthropic, OpenAI, etc.).

  • DO: Use test/sample data when possible
  • DO: Use local-only LLMs for sensitive operations
  • DON'T: Pass production secrets to MCP tools (they will be sent to your LLM provider)

Example:

# ❌ Unsafe: Any secret passed to MCP tool is sent to your LLM provider
# Tool: hash
# Input: { "input": "sk-1234567890abcdef", "algorithm": "sha256" }

# ✅ Safe: Use test data only (for learning/development)
# Tool: hash
# Input: { "input": "test-value-123", "algorithm": "sha256" }

# ✅ For production secrets: Use local-only LLMs or process outside MCP

Note: Error messages are automatically sanitized to prevent accidental data leakage.

For security issues, please see our Security Policy.

License

MIT

Reviews

No reviews yet

Sign in to write a review