CalculatorLib MCP

Connect thousands of calculators and 9 unit-converter categories — exposed as just 12 compact tools (you search for a calculator, then run it) — to any Model Context Protocol client. Ask Claude things like “what’s my BMI at 70 kg / 170 cm?” or “convert 5 meters to feet” and get an authoritative answer instead of hallucinated arithmetic.

12Tools exposed
Thousandsof calculators
9Converter categories
MCP endpoint URL
JSON-RPC 2.0 over Streamable HTTP. Public — anyone can call.
Authorization header optional
Add this header to attribute calls to your account and get usage analytics at /account/mcp-logs. Generate a token →

Install in 60 seconds

Pick the client you use, paste the snippet, restart. That’s it.

Run a single command and Claude Code wires the connection up:

claude mcp add --transport http calculatorlib https://calculatorlib.com/mcp

Or, if you prefer editing the config file at ~/.claude/mcp.json manually:

{
  "mcpServers": {
    "calculatorlib": {
      "url": "https://calculatorlib.com/mcp"
    }
  }
}

Verify with /mcp inside Claude Code — you should see calculatorlib connected and 12 tools listed.

Edit your Claude Desktop config:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Add the mcpServers entry below (merge with anything you already have):

{
  "mcpServers": {
    "calculatorlib": {
      "url": "https://calculatorlib.com/mcp"
    }
  }
}

Restart Claude Desktop. The hammer icon in the input box will show calculatorlib with 12 tools.

Open Cursor settings → MCPAdd new MCP server, then paste:

{
  "mcpServers": {
    "calculatorlib": {
      "url": "https://calculatorlib.com/mcp"
    }
  }
}

Cursor uses the same Streamable HTTP transport, so the JSON schema is identical to Claude Desktop’s.

Edit your Zed settings (cmd+, / ctrl+,Open Settings) and add the calculator server under context_servers:

{
  "context_servers": {
    "calculatorlib": {
      "source": "custom",
      "transport": {
        "type": "streamable-http",
        "url": "https://calculatorlib.com/mcp"
      }
    }
  }
}

Reload the assistant panel; the calculator tools become available to any agent thread. Zed’s MCP support requires v0.165 or later.

Open the Cline extension in VS Code → MCP ServersEdit Configuration. The settings file lives at ~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json on macOS (Linux/Win paths are similar):

{
  "mcpServers": {
    "calculatorlib": {
      "url": "https://calculatorlib.com/mcp",
      "transportType": "streamableHttp"
    }
  }
}

Cline auto-reloads server config; the new tools show up in the MCP panel within a few seconds.

Open Windsurf → CascadeConfigure MCP, or edit ~/.codeium/windsurf/mcp_config.json directly:

{
  "mcpServers": {
    "calculatorlib": {
      "serverUrl": "https://calculatorlib.com/mcp"
    }
  }
}

Restart Windsurf and the calculator tools surface in Cascade’s tool picker. The HTTP transport requires Windsurf 1.5+.

Any MCP-compliant client that supports the Streamable HTTP transport (spec version 2025-06-18) can connect:

{
  "transport": "streamable-http",
  "endpoint": "https://calculatorlib.com/mcp"
}

Or call the JSON-RPC endpoint directly with curl:

curl -X POST https://calculatorlib.com/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Try these prompts

After installing, just talk to Claude in plain English — it picks the right tool.

1

“What’s my BMI if I weigh 70 kg and I’m 170 cm tall? Am I in the healthy range?”

Claude calls bmi_calculator, returns BMI 24.22 with the WHO category.

2

“Convert 5 meters to feet, then 200 pounds to kilograms.”

Claude calls convert_length and convert_mass in turn.

3

“If I invest $10 000 at 5% compounded annually for 20 years, what’s the final value?”

Claude calls compound_interest_calculator and shows the breakdown.

4

“What’s the monthly payment on a $300k home loan at 6.5% for 30 years?”

Claude calls home_loan_calculator with principal, rate, term.

Live playground

Call the server right here — real JSON-RPC to https://calculatorlib.com/mcp, real responses. No signup. loading tools…

Authorization token (optional)
Raw JSON-RPC request & response
Request
Response
Power-user tip — MCP Inspector For a full request/response debugger, run the official inspector and point it at this server: npx @modelcontextprotocol/inspector, then connect to https://calculatorlib.com/mcp (transport: Streamable HTTP).

Tool browser

Search the calculator library and 9 converter categories by name or title. Useful when discovering what to ask Claude for.

Loading catalog…

How it works

  • Endpoint: single POST handler at https://calculatorlib.com/mcp speaking JSON-RPC 2.0 over Streamable HTTP (transport spec 2025-06-18).
  • Tool naming: calculator slugs use snake_case (bmi_calculator, compound_interest_calculator); converters are convert_<category>.
  • Inputs: each tool advertises a JSON Schema derived from the calculator’s form fields (type, enum, min/max). Conditional fields (e.g. metric vs imperial in BMI) are listed as optional — read each field’s description to know which combinations are valid.
  • Outputs: a one-line text summary plus a structuredContent JSON object the LLM can parse (e.g. { "main": [{...}], "data": [...] }).
  • Updates: the catalog refreshes every 5 minutes — newly published calculators show up automatically.

Direct API (no MCP client needed)

Want to integrate without an MCP client? The same data is available via plain JSON endpoints.

curl -X POST https://calculatorlib.com/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
curl -X POST https://calculatorlib.com/mcp \
  -H 'Content-Type: application/json' \
  -d '{
    "jsonrpc":"2.0","id":2,"method":"tools/call",
    "params":{
      "name":"bmi_calculator",
      "arguments":{"unitSystem":"metric","weight":70,"height":170}
    }
  }'
curl -X POST https://calculatorlib.com/mcp \
  -H 'Content-Type: application/json' \
  -d '{
    "jsonrpc":"2.0","id":3,"method":"tools/call",
    "params":{
      "name":"convert_length",
      "arguments":{"value":5,"from":"Meter","to":"Foot"}
    }
  }'

REST endpoints (no JSON-RPC envelope):

  • /api/calculators/schemas?q=<keywords> — search calculators (bounded matches with input schemas)
  • /api/converter/categories — converter categories with units
  • POST /api/converter/convert — direct converter, body { category, from, to, value }

Authentication (optional but recommended)

Anonymous calls work — auth is opt-in. Adding a token unlocks per-user usage analytics at /account/mcp-logs: every call you make through a token shows up there with latency, error reason, and the calc you hit.

Get a token (60 seconds)

  1. Sign in (or create an account first).
  2. Go to /account/api-tokens.
  3. Click Generate token. Copy the value — it’s shown only once.

Add it to your MCP client

Same config file as the public install, plus a headers.Authorization field:

{
  "mcpServers": {
    "calculatorlib": {
      "url": "https://calculatorlib.com/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_TOKEN_HERE"
      }
    }
  }
}

Why bother?

  • Personal usage logs — see which calculators you call most and which fail, scoped only to your token (/account/mcp-logs).
  • Multiple clients, separate tokens — mint one per device (laptop, server, agent). Revoking one doesn’t disrupt the others.
  • Foundation for future per-user features — when we add rate limits / quotas / saved presets, they attach to authenticated calls.

curl with Bearer token

curl -X POST https://calculatorlib.com/mcp \
  -H 'Authorization: Bearer YOUR_TOKEN_HERE' \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Server operators: set MCP_REQUIRE_AUTH=true to require a token for every call (anonymous → 401). The legacy MCP_API_TOKEN env still works as a single-shared-secret bypass.

FAQ & troubleshooting

Is this free? Are there rate limits?
Yes, free and public. Cloudflare sits in front for general DDoS protection. There is no per-IP quota at the moment — please be reasonable. If you expect to hit it heavily from production, drop a note via the contact link in the footer.
Do you store my queries?
Calculator inputs are processed in-memory and not logged at the application level. Cloudflare and the application server may keep transient access logs (request method, status, IP) for ops; nothing about the JSON payload contents.
Why does Claude sometimes say a tool returned no useful data?
A subset of calculators render their results as plain styled HTML without semantic markers. The MCP layer can’t pull structured fields from those, so it returns “no output”. We’re backfilling markers — most calculators return rich structured output; the rest still execute fine but return only a one-line summary.
Can I authenticate so my usage shows up under my account?
Yes — sign in and visit /account/api-tokens to mint a Bearer token. Pass it as Authorization: Bearer <token> on every /mcp request and your calls appear at /account/mcp-logs. See the Authentication section above for the full client config.
I lost my token. Can I recover it?
No — only the SHA-256 hash is stored. Revoke the lost token at /account/api-tokens and mint a new one.
I just published a new calculator — when does it show up?
Within 5 minutes (the catalog cache TTL). Admins can force a refresh via /admin/tools/cache → Invalidate ALL caches.
Tool name doesn’t match the slug I see in the URL?
Hyphens in URL slugs are converted to underscores for tool names (Claude’s tool parser handles them more reliably). So /bmi-calculator becomes bmi_calculator.
The BMI tool advertises both metric (weight, height) and imperial (weightLbs, heightFt, heightIn) inputs as optional. Why?
Calculators with conditional inputs (e.g. unit-system toggles) can’t express “X required when unitSystem=metric, Y required when unitSystem=imperial” in standard JSON Schema. We list both groups as optional and let the LLM read each field’s description to pick the right set.