trackmcp
Back to directory
PsyWhat

advanced-math-mcp

View on GitHub

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.

2 stars TypeScriptOthers Updated Aug 11, 2026

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

bash
npm install -g advanced-math-mcp

Then add to your MCP client configuration (e.g., `mcp_settings.json`):

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

ToolDescription
`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

ToolDescription
`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

ToolDescription
`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

js
// 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 = b

Vector Operations

js
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

js
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

js
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()          // reset

Symbolic Math

Simplification & Expansion

js
symbolic_simplify("x^2 + 2*x + 1 - (x+1)^2")  // → 0
symbolic_expand("(x+1)*(x-1)*(x+2)")           // → x^3 + 2x^2 - x - 2

Substitution

js
// 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" })  // → 16

Calculus

js
// 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")                  // → 1

Architecture

code
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_derivative

Dependencies

PackagePurpose
`@modelcontextprotocol/sdk`MCP protocol implementation
`mathjs` v13Numeric 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:

FunctionImplementation
`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

bash
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 testing

Testing

bash
npm test             # run all tests (vitest)
npm run test:watch   # watch mode
npm run typecheck    # TypeScript validation only
SuiteTestsCoverage
`evaluator.test.ts`36Matrix ops, vector ops, decompositions, eigenvalues, variable scope, error handling
`symbolic.test.ts`15Simplify, expand, substitute, ordinary derivatives
`calculus.test.ts`17Indefinite/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

Run your own MCP server? See who uses it and what to fix.

Measure it with TrackMCP