precision-math-mcp
LLMs can't do math. They predict tokens, not compute answers. Ask an LLM to multiply large numbers or solve equations, and you might get confident-sounding wrong answers.
This MCP server fixes that by giving your LLM a real calculator. It's powered by math.js, a battle-tested math library with 14k+ GitHub stars, handling everything from basic arithmetic to symbolic calculus.
All expressions use math.js syntax - see math.js documentation for full expression reference.
Features
- 6 Mathematical Tools:
calculate- Evaluate mathematical expressionssimplify- Simplify algebraic expressionsderivative- Compute symbolic derivativessolve- Solve equations for variablesformat- Format numbers with precision/notationconvert- Convert between units
- 3 Transport Modes:
stdio- Standard I/O (default, for Claude Desktop)http- Streamable HTTP transportsse- Server-Sent Events (backwards compatibility)
Quick Start
Run directly without installing (requires Bun, npm, yarn, or pnpm):
# Using bunx (recommended)
bunx -y @nerdo/precision-math-mcp
# Using npx
npx -y @nerdo/precision-math-mcp
# Using yarn
yarn dlx @nerdo/precision-math-mcp
# Using pnpm
pnpm dlx @nerdo/precision-math-mcp
Installation
Global Install
# Using bun
bun add -g @nerdo/precision-math-mcp
# Using npm
npm install -g @nerdo/precision-math-mcp
# Using yarn
yarn global add @nerdo/precision-math-mcp
# Using pnpm
pnpm add -g @nerdo/precision-math-mcp
Then run with:
precision-math-mcp
Local Development
git clone https://github.com/nerdo/precision-math-mcp
cd precision-math-mcp
bun install
bun run src/index.ts
Usage
Transport Modes
# Stdio mode (default)
bunx -y @nerdo/precision-math-mcp --stdio
# HTTP mode
PORT=3141 bunx -y @nerdo/precision-math-mcp --http
# HTTP mode with authentication
PORT=3141 MCP_AUTH_TOKEN=your-secret bunx -y @nerdo/precision-math-mcp --http
Environment Variables
| Variable | Default | Description | |----------|---------|-------------| | PORT | 3141 | HTTP server port | | MCP_AUTH_TOKEN | (none) | Optional auth token for HTTP | | MCP_TRANSPORT | stdio | Transport mode: stdio, http, sse | | DESCRIPTION_MODE | mandatory | Tool description mode: mandatory (AI must use for all math) or relaxed (optional use) |
MCP Client Configuration
Claude Desktop
Add to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"precision-math": {
"command": "bunx",
"args": ["-y", "@nerdo/precision-math-mcp"]
}
}
}
Or using npx:
{
"mcpServers": {
"precision-math": {
"command": "npx",
"args": ["-y", "@nerdo/precision-math-mcp"]
}
}
}
Claude Code
Add to your Claude Code MCP settings:
{
"mcpServers": {
"precision-math": {
"command": "bunx",
"args": ["-y", "@nerdo/precision-math-mcp"]
}
}
}
Tool Examples
calculate
Evaluate mathematical expressions with optional variables.
{
"name": "calculate",
"arguments": {
"expression": "sqrt(a^2 + b^2)",
"scope": { "a": 3, "b": 4 }
}
}
// Returns: { "result": "5", "type": "number" }
Supports:
- Basic arithmetic:
2 + 2 * 3→8 - Functions:
sin(pi/4),log(100),factorial(5) - Complex numbers:
sqrt(-1)→i - Matrices:
[[1,2],[3,4]] * [[1,0],[0,1]] - Units:
2 inch to cm→5.08 cm
simplify
Simplify algebraic expressions.
{
"name": "simplify",
"arguments": {
"expression": "2x + 3x - x"
}
}
// Returns: { "result": "4 * x" }
derivative
Compute symbolic derivatives.
{
"name": "derivative",
"arguments": {
"expression": "x^3 + 2*x",
"variable": "x"
}
}
// Returns: { "result": "3 * x ^ 2 + 2", "simplified": "3 * x ^ 2 + 2" }
solve
Solve equations for a variable.
{
"name": "solve",
"arguments": {
"equation": "x^2 - 4 = 0",
"variable": "x"
}
}
// Returns: { "solutions": ["2", "-2"], "type": "exact" }
format
Format numbers with specific precision or notation.
{
"name": "format",
"arguments": {
"value": "pi",
"precision": 4
}
}
// Returns: { "result": "3.142" }
convert
Convert between units.
{
"name": "convert",
"arguments": {
"value": "100 km/h",
"toUnit": "m/s"
}
}
// Returns: { "result": "27.77777777777778 m / s", "numericValue": 27.77777777777778 }
Testing
# Run all tests
bun test
# Run specific test file
bun test tests/tools/calculate.test.ts
Testing with MCP Inspector
npx @modelcontextprotocol/inspector bun run src/index.ts
Opens the MCP Inspector at http://localhost:6274 where you can:
- View all available tools
- Invoke tools with custom arguments
- See JSON-RPC communication logs
Development
# Type check
bunx tsc --noEmit
# Run in watch mode
bun --watch run src/index.ts
License
MIT






