MCP server for exact arithmetic: one safe calculator tool over an AST allowlist, with no unbounded dependencies.
claude mcp add calc -- uvx calc-mcp-server{
"mcpServers": {
"calc": {
"command": "uvx",
"args": ["calc-mcp-server"]
}
}
}MCP Servers overview
# Calculator MCP Server
<!-- mcp-name: io.github.slettmayer/calc-mcp-server -->
[](https://pypi.org/project/calc-mcp-server/)
[](https://pypi.org/project/calc-mcp-server/)
[](LICENSE)
An MCP server that does arithmetic, exactly — so an LLM does not have to do it mentally.
One tool, `calculate`, evaluating expressions against a hand-rolled AST allowlist. No `eval()`, no
`sympy`, no unbounded dependencies.
```
2 + 3 * (4 - 1) / 2 ** 2 -> 4.25
sqrt(16) + sin(pi/2) -> 5.0
123456789 * 987654321 -> 121932631112635269
```
## Why this exists
The widely-used `mcp-server-calculator` package is abandoned (last commit May 2025) and declares
`mcp>=1.4.1` with no upper bound. When the MCP Python SDK released v2 and removed
`mcp.server.fastmcp`, every `uvx …@latest` install of it started crashing on import — which took down
the entire MCP proxy hosting it, and every other server alongside it.
No maintained Python replacement exists. The one actively-maintained npm calculator computes in
float64, so `123456789 * 987654321` comes back as `121932631112635260` — off by 9. That is a poor
trait in a tool whose whole purpose is that the model should not be doing the arithmetic itself.
So this server:
- **bounds its one dependency** (`mcp[cli]>=2,<3`) — the failure above cannot recur here;
- **keeps integers exact** at any size, never coercing to float;
- **bounds resource use**, not just code execution — see below.
## Safety
Two problems, and most calculator servers only solve the first.
**Code execution.** Expressions are parsed with `ast.parse` and walked against an explicit allowlist of
node types. `Attribute` is not on it, so `(1).__class__.__bases__` is rejected. A `Call` is only
evaluated when its target is a bare name in the function allowlist, so `__import__('os').system(…)` is
rejected before any argument is even evaluated.
**Resource exhaustion.** An allowlist alone still lets `9**9**9` occupy the process for minutes on
unbounded bignum exponentiation — the incumbent hangs for over five seconds on it. Four caps close
that: expression length (500 chars), nesting depth (32), result size (4300 digits, checked on the
operands *before* exponentiating), and factorial argument (1000).
Full detail in [docs/tech/SAFE-EVALUATION.md](docs/tech/SAFE-EVALUATION.md).
## Install
```bash
uvx calc-mcp-server
```
Pin it. Do not add `@latest` — that is how the package this replaces broke.
## Configure
As a stdio MCP server:
```json
{
"mcpServers": {
"calculator": {
"command": "uvx",
"args": ["calc-mcp-server"]
}
}
}
```
## The `calculate` tool
| Argument | Type | Description |
|---|---|---|
| `expression` | `str` | The expression to evaluate |
Returns the result as a string, or a line starting with `Error: ` explaining why the expression was
rejected. The tool never raises, so a bad expression is an answer the agent can read back rather than a
tool-call failure.
**Operators** — `+` `-` `*` `/` `//` `%` `**`, parentheses, unary `+`/`-`. `^` is accepted as a power
operator, and `×` `·` `÷` `−` are accepted as their ASCII equivalents (speech-to-text produces them).
**Constants** — `pi`, `e`, `tau`.
**Functions** — `abs` `round` `min` `max` `sqrt` `exp` `log` `log2` `log10` `sin` `cos` `tan` `asin`
`acos` `atan` `atan2` `degrees` `radians` `hypot` `floor` `ceil` `factorial` `gcd` `lcm`.
**Results** — integer arithmetic returns an exact integer of any size. Floats are rendered at 12
significant digits, which removes IEEE-754 representation noise (`0.1 + 0.2` reads `0.3`, not
`0.30000000000000004`) while keeping far more precision than a calculator result is used at. A whole
float keeps its `.0`, so `8 / 2` reads `4.0` and stays distinct from the exact integer `4`.
## Development
```bash
uv sync
uv run pytest tests/ -v
uv run ruff check .
uv run ruff format .
```
See [AGENTS.md](AGENTS.md) for the project guide and [docs/](docs/README.md) for the full
documentation set.
## License
MIT — see [LICENSE](LICENSE).
What people ask about calc-mcp-server
What is slettmayer/calc-mcp-server?
+
slettmayer/calc-mcp-server is mcp servers for the Claude AI ecosystem. MCP server for exact arithmetic: one safe calculator tool over an AST allowlist, with no unbounded dependencies. It has 0 GitHub stars and was last updated today.
How do I install calc-mcp-server?
+
You can install calc-mcp-server by cloning the repository (https://github.com/slettmayer/calc-mcp-server) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.
Is slettmayer/calc-mcp-server safe to use?
+
slettmayer/calc-mcp-server has not been audited yet by our security agent. Review the original repository on GitHub before using it in production.
Who maintains slettmayer/calc-mcp-server?
+
slettmayer/calc-mcp-server is maintained by slettmayer. The last recorded GitHub activity is from today, with 0 open issues.
Are there alternatives to calc-mcp-server?
+
Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.
Deploy calc-mcp-server to your cloud
Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.
Maintain this repo? Add a badge to your README
Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.
[](https://claudewave.com/repo/slettmayer-calc-mcp-server)<a href="https://claudewave.com/repo/slettmayer-calc-mcp-server"><img src="https://claudewave.com/api/badge/slettmayer-calc-mcp-server" alt="Featured on ClaudeWave: slettmayer/calc-mcp-server" width="320" height="64" /></a>More MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
The fastest path to AI-powered full stack observability, even for lean teams.
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!