advanced-math-mcp
advanced-math-mcp — MCP server for linear algebra, calculus, and symbolic math. 17 tools with a unified evaluate() expression engine. Supports matrices, eigenvalues, SVD, integrals, limits, derivatives, and more.
Documentation
advanced-math-mcp
MCP (Model Context Protocol) server for advanced mathematics — linear algebra, vector math, symbolic computation, and calculus. Designed for use with Claude and other MCP-compatible LLMs.
Quick Start
npm install -g advanced-math-mcpThen add to your MCP client configuration (e.g., `mcp_settings.json`):
{
"mcpServers": {
"advanced-math-mcp": {
"command": "advanced-math-mcp",
"args": [],
"alwaysAllow": [
"evaluate",
"set_variable",
"get_variable",
"list_variables",
"clear_variables",
"matrix_create",
"matrix_identity",
"matrix_zeros",
"matrix_diagonal",
"symbolic_simplify",
"symbolic_substitute",
"symbolic_derivative",
"symbolic_expand",
"symbolic_integrate",
"symbolic_definite_integral",
"symbolic_limit",
"symbolic_partial_derivative"
]
}
}
}Tools (17 total)
Unified Expression Evaluator
| Tool | Description |
|---|---|
| `evaluate` | Universal expression evaluator with natural math syntax. Supports matrices, vectors, scalars, decompositions, and custom functions. |
| `set_variable` | Define a named variable (matrix, vector, or scalar) for use in `evaluate` |
| `get_variable` | Retrieve a variable's value |
| `list_variables` | List all defined variables and their types |
| `clear_variables` | Reset all variables |
Matrix Creation
| Tool | Description |
|---|---|
| `matrix_create` | Create a matrix from a 2D array of strings |
| `matrix_identity` | Create an n×n identity matrix |
| `matrix_zeros` | Create an m×n matrix of zeros |
| `matrix_diagonal` | Create a diagonal matrix from a vector of values |
Symbolic Math
| Tool | Description |
|---|---|
| `symbolic_simplify` | Simplify algebraic expressions |
| `symbolic_expand` | Expand factored expressions |
| `symbolic_substitute` | Substitute variables with values or expressions |
| `symbolic_derivative` | Compute ordinary derivatives (single-variable) |
| `symbolic_partial_derivative` | Compute partial derivatives (multivariable) |
| `symbolic_integrate` | Compute indefinite integrals (antiderivatives) |
| `symbolic_definite_integral` | Compute definite integrals with bounds |
| `symbolic_limit` | Compute limits of expressions |
`evaluate` — The Universal Evaluator
All matrix/vector operations use a single `evaluate` tool with natural expression syntax:
Matrix Operations
// Arithmetic
evaluate("A + B") // addition
evaluate("A - B") // subtraction
evaluate("A * B") // matrix multiplication
evaluate("A ^ 3") // matrix power
// Properties
evaluate("det(A)") // determinant
evaluate("trace(A)") // trace
evaluate("rank(A)") // rank
evaluate("inv(A)") // inverse
evaluate("transpose(A)") // transpose
// Decompositions
evaluate("eig(A)") // eigenvalues & eigenvectors
evaluate("charpoly(A)") // characteristic polynomial (2×2, 3×3)
evaluate("lu(A)") // LU decomposition
evaluate("qr(A)") // QR decomposition
evaluate("svd(A)") // singular value decomposition
// Linear systems
evaluate("solve(A, b)") // solve Ax = bVector Operations
evaluate("dot([1,2,3], [4,5,6])") // dot product → 32
evaluate("cross([1,2,3], [4,5,6])") // cross product → [-3, 6, -3]
evaluate("norm([3,4])") // L2 norm → 5
evaluate("norm([3,4], \"1\")") // L1 norm → 7
evaluate("project([3,4], [1,0])") // vector projection → [3, 0]Inline Literals
evaluate("[[1,2],[3,4]] * [[5,6],[7,8]]") // → [[19,22],[43,50]]
evaluate("det([[4,1],[2,3]])") // → 10
evaluate("inv([[4,7],[2,6]])") // → [[0.6,-0.7],[-0.2,0.4]]Variable Workflow
set_variable("A", "[[1,2],[3,4]]")
set_variable("B", "[[5,6],[7,8]]")
evaluate("A * B") // uses stored variables
list_variables() // see all defined variables
clear_variables() // resetSymbolic Math
Simplification & Expansion
symbolic_simplify("x^2 + 2*x + 1 - (x+1)^2") // → 0
symbolic_expand("(x+1)*(x-1)*(x+2)") // → x^3 + 2x^2 - x - 2Substitution
// Single variable
symbolic_substitute("x^2 + 2*x", { x: "3" }) // → 15
// Multi-variable
symbolic_substitute("x^2 + y*x + z", { x: "3", y: "2", z: "1" }) // → 16Calculus
// Derivatives
symbolic_derivative("x^3 + 2*x^2", "x") // → 3x^2 + 4x
symbolic_partial_derivative("x^2*y + sin(z)", "x", 2) // → 2y (second partial)
// Integration
symbolic_integrate("x^2 + sin(x)", "x") // → 0.333x^3 - cos(x) + C
symbolic_definite_integral("x^2", "x", "0", "2") // → 2.667 (∫₀² x² dx)
// Limits
symbolic_limit("sin(x)/x", "x", "0") // → 1Architecture
src/
├── index.ts # Entry point, loads nerdamer plugins
├── server.ts # MCP server setup, tool routing
├── types.ts # Shared types and Zod schemas
├── engine/
│ ├── evaluator.ts # Unified expression evaluator (mathjs + custom functions)
│ ├── symbolic.ts # Symbolic engine (nerdamer + mathjs)
│ ├── math-engine.ts # Low-level matrix operations
│ └── format.ts # Output formatting utilities
└── tools/
├── evaluate.ts # evaluate + variable management tools
├── matrix-create.ts # matrix_create, identity, zeros, diagonal
├── symbolic.ts # symbolic_simplify, substitute, derivative, expand
└── calculus.ts # symbolic_integrate, definite_integral, limit, partial_derivativeDependencies
| Package | Purpose |
|---|---|
| `@modelcontextprotocol/sdk` | MCP protocol implementation |
| `mathjs` v13 | Numeric matrix operations, expression parsing |
| `nerdamer` | Symbolic algebra, calculus (integrals, limits) |
| `zod` | Runtime input validation |
Custom Functions in `evaluate`
The evaluator extends mathjs with these custom functions:
| Function | Implementation |
|---|---|
| `rank(A)` | Via eigenvalue count of AᵀA |
| `solve(A, b)` | Wraps `math.lusolve()` |
| `eig(A)` / `eigs(A)` | Wraps `math.eigs()` with formatted output |
| `svd(A)` | Via eigenvalue decomposition of AᵀA |
| `charpoly(A)` | Formula-based for 2×2 and 3×3 |
| `lu(A)` | Alias for `math.lup()` |
| `qr(A)` | Alias for `math.qr()` |
| `project(u, v)` | Vector projection formula |
| `norm(v, type)` | L1, L2 (default), L∞ |
Development
git clone https://github.com/PsyWhat/advanced-math-mcp.git
cd advanced-math-mcp
npm install
npm run build # compile TypeScript
npm run dev # watch mode
npm link # install globally for local testingTesting
npm test # run all tests (vitest)
npm run test:watch # watch mode
npm run typecheck # TypeScript validation only| Suite | Tests | Coverage |
|---|---|---|
| `evaluator.test.ts` | 36 | Matrix ops, vector ops, decompositions, eigenvalues, variable scope, error handling |
| `symbolic.test.ts` | 15 | Simplify, expand, substitute, ordinary derivatives |
| `calculus.test.ts` | 17 | Indefinite/definite integrals, limits, partial derivatives |
All 68 tests pass.
Known Limitations
- SVD: The rank-deficient SVD gives zero vectors for nullspace columns (computed via AᵀA eigen-decomposition, not full Golub-Reinsch)
- Cholesky: Not available in mathjs v13; use `lu()` for general decomposition
- `norm(v, inf)`: Must use quoted `"inf"` (not bare `inf`) due to mathjs parsing
- `charpoly`: Numeric only, supports 2×2 and 3×3 matrices
- `symbolic_limit`: Some advanced limits (e.g., `(1+1/x)^x` as `x→∞`) may not fully resolve
License
MIT
Frequently asked questions
What is advanced-math-mcp?
advanced-math-mcp is advanced-math-mcp — MCP server for linear algebra, calculus, and symbolic math. 17 tools with a unified evaluate() expression engine. Supports matrices, eigenvalues, SVD, integrals, limits, derivatives, and more.
How do I install advanced-math-mcp?
Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.
Is advanced-math-mcp open source?
Yes — it is hosted on GitHub at https://github.com/PsyWhat/advanced-math-mcp and has 2 stars.
Related MCP tools
Model Context Protocol Servers
The Open-Source Multimodal AI Agent Stack: Connecting Cutting-Edge AI Models and Agent Infra
A MCP for Claude Desktop / Claude Code / Windsurf / Cursor to build n8n workflows for you
MCP server to provide Figma layout information to AI coding agents like Cursor
The world's best AI personal assistant for email. Open source app to help you reach inbox zero fast.
Instant is the best backend for AI-coded apps. You get auth, permissions, storage, presence, and streams — everything you need to ship apps your users will love.
Run your own MCP server? See who uses it and what to fix.
Measure it with TrackMCP