advanced-math-mcp
advanced-math-mcp — रैखिक बीजगणित, कलन और प्रतीकात्मक गणित के लिए MCP सर्वर। एकीकृत evaluate() अभिव्यक्ति इंजन के साथ 17 उपकरण। मैट्रिक्स, आइगेनवैल्यू, SVD, समाकलन, सीमाएँ, अवकलज और अधिक का समर्थन करता है।
दस्तावेज़
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-mcp
Then 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 = b
Vector 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() // reset
Symbolic 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 - 2
Substitution
// 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
// 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
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
| 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 testing
Testing
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 bareinf) due to mathjs parsingcharpoly: Numeric only, supports 2×2 and 3×3 matricessymbolic_limit: Some advanced limits (e.g.,(1+1/x)^xasx→∞) may not fully resolve
License
MIT