About

MCP Server Quickstart

Get the Digital Calculator MCP server running in your AI tool in under 5 minutes. Pick the option that matches your setup.

What you'll get

5 calculator tools usable directly from Claude Desktop, MCP Inspector, agentic CLIs, or any HTTP client. Free, MIT-licensed npm package (see LICENSE); hosted endpoint additionally governed by LICENSE-API.md (rate limits + acceptable use). No signup, no API key.

Option 1 — Claude Desktop (recommended)

Time: ~3 minutes.

Step 1: Install the package globally

bash
npm install -g @markcolabs/mcp

Or use npx @markcolabs/mcp if you prefer not to install globally — adjust the args in step 2 accordingly.

Step 2: Wire it into Claude Desktop's config

Open claude_desktop_config.json:

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

Add this entry to mcpServers:

json
{
  "mcpServers": {
    "digitalcalculator": {
      "command": "node",
      "args": ["/absolute/path/to/global/node_modules/@markcolabs/mcp/dist/index.js"]
    }
  }
}

To find the absolute path: npm root -g returns your global node_modules directory. Append /@markcolabs/mcp/dist/index.js.

Step 3: Restart Claude Desktop

Quit and relaunch. In a new conversation, type "what MCP tools do you have access to?" — Claude should list the 5 dc.calculator.* tools.

Step 4: Try it

Ask Claude something like:

Example prompt

What's the monthly payment on a $400,000 mortgage at 6.5% over 30 years?

Claude will invoke dc.calculator.mortgage.monthlyPayment and return a structured answer with the math + the YMYL disclaimer.

Option 2 — MCP Inspector (for debugging)

Time: ~1 minute.

The official MCP Inspector is a browser-based debugging UI for MCP servers.

bash
npx @modelcontextprotocol/inspector node $(npm root -g)/@markcolabs/mcp/dist/index.js

This opens Inspector in your browser. You'll see:

  • All 5 tools listed in the Tools tab
  • 1 resource (dc://disclaimers/ymyl) in the Resources tab
  • The MCP protocol handshake logged in the bottom panel

Click any tool, fill the input form, and hit "Call Tool" to invoke it. Useful for verifying tool schemas before integrating in your own client.

Option 3 — Agentic CLIs / custom clients

Any client that speaks MCP stdio works. Spawn node /path/to/@markcolabs/mcp/dist/index.js and pipe JSON-RPC over stdin/stdout per the MCP spec.

If you're using a framework like LangChain's MCP adapter, OpenAI Agents SDK, or similar, pass the same command + args you'd use for Claude Desktop.

Option 4 — HTTP REST endpoint (no MCP client needed)

Time: ~30 seconds, just curl.

The companion REST API at https://mcp.digitalcalculator.info/mcp exposes the same tool semantics over plain HTTP POST. Use this when you don't have an MCP client (server-side scripts, CI checks, JavaScript fetch from a backend, etc.).

bash
curl -X POST https://mcp.digitalcalculator.info/mcp \
  -H 'Content-Type: application/json' \
  -d '{
    "tool": "dc.calculator.mortgage.monthlyPayment",
    "input": {
      "principal": 400000,
      "annualRatePercent": 6.5,
      "termYears": 30
    }
  }'

Response (HTTP 200):

json
{
  "result": {
    "monthlyPayment": 2528.27,
    "totalInterest": 510178.83,
    "totalPaid": 910178.83
  },
  "disclaimer": "Estimates only — for educational purposes...",
  "methodology": {
    "url": "https://www.digitalcalculator.info/mortgage-calculator/",
    "version": "2026-05-09"
  },
  "calculatedAt": "2026-05-23T18:42:11.123Z",
  "engineVersion": "1.0.0"
}

Note

This endpoint is NOT the MCP wire protocol — it's a REST API. Pointing MCP Inspector at the URL will fail handshake (see the FAQ). For true MCP, use the npm package over stdio (options 1–3 above).

Examples for each tool

Mortgage payment

bash
curl -X POST https://mcp.digitalcalculator.info/mcp \
  -H 'Content-Type: application/json' \
  -d '{"tool":"dc.calculator.mortgage.monthlyPayment","input":{"principal":300000,"annualRatePercent":6.5,"termYears":30}}'

Compound interest with monthly contributions

bash
curl -X POST https://mcp.digitalcalculator.info/mcp \
  -H 'Content-Type: application/json' \
  -d '{"tool":"dc.calculator.compoundInterest.futureValue","input":{"principal":10000,"annualRatePercent":7,"years":30,"compoundingFrequency":"monthly","monthlyContribution":500}}'

401(k) projection through retirement

bash
curl -X POST https://mcp.digitalcalculator.info/mcp \
  -H 'Content-Type: application/json' \
  -d '{"tool":"dc.calculator.retirement401k.projection","input":{"currentBalance":25000,"annualSalary":80000,"contributionPercent":6,"employerMatchPercent":50,"employerMatchLimitPercent":6,"annualSalaryGrowthPercent":3,"annualReturnPercent":7,"currentAge":35,"retirementAge":65}}'

Social Security estimate

bash
curl -X POST https://mcp.digitalcalculator.info/mcp \
  -H 'Content-Type: application/json' \
  -d '{"tool":"dc.calculator.socialSecurity.estimatedBenefit","input":{"birthYear":1965,"currentEarnings":80000,"claimAge":67}}'

Paycheck net pay

The dependents field is optional as of v0.2.1 (default 0; the field currently has no effect on the calculation — reserved for a future engine version). The example below omits it:

bash
curl -X POST https://mcp.digitalcalculator.info/mcp \
  -H 'Content-Type: application/json' \
  -d '{"tool":"dc.calculator.paycheck.netPay","input":{"grossAnnualSalary":80000,"payFrequency":"biweekly","federalFilingStatus":"single","state":"CA","preTaxDeductionsAnnual":4800,"postTaxDeductionsAnnual":0}}'

For full input schemas, output payload shapes, and per-tool detail, see the API Reference.

Common errors

Unknown tool: <name>

You're calling a tool name that doesn't exist. Note that v0.2.0 renamed two tools:

  • dc.calculator.401k.projectiondc.calculator.retirement401k.projection
  • dc.calculator.socialSecurity.estimatedc.calculator.socialSecurity.estimatedBenefit

If you integrated against v0.1.0 (now deprecated on npm), upgrade to @markcolabs/mcp@latest and update tool names. The CHANGELOG has full migration notes.

INPUT_VALIDATION with field: "<name>"

Input failed Zod schema validation. The message field is human-readable ("Number must be greater than or equal to 0") and the field identifies which input. Check the API Reference for valid ranges.

BUSINESS_RULE error

Inputs are individually valid but the combination doesn't produce a meaningful result (e.g., 401(k) retirementAge not greater than currentAge). Fix the cross-field issue.

RATE_LIMIT (HTTP 429)

The HTTP endpoint is throttled to 100 requests/minute globally. Back off and retry — retriable: true in the error envelope. The npm stdio path runs locally and isn't rate-limited.

Next steps

  • API Reference — full schemas + output shapes for each tool
  • FAQ — accuracy, YMYL posture, support, change policy
  • npm package — source + CHANGELOG
  • GitHub repo — open issues, contribute

Building something interesting with the MCP server? We'd love to hear about it — open an issue and tag it mcp-showcase.