advanced-math-mcp
advanced-math-mcp — Servidor MCP para álgebra linear, cálculo e matemática simbólica. 17 ferramentas com um mecanismo de expressão evaluate() unificado. Suporta matrizes, autovalores, SVD, integrais, limites, derivadas e mais.
GitHub
2
Experimente este MCPPatrocinadoDocumentação
advanced-math-mcp
Servidor MCP (Model Context Protocol) para matemática avançada — álgebra linear, matemática vetorial, computação simbólica e cálculo. Projetado para uso com Claude e outros LLMs compatíveis com MCP.
Início Rápido
npm install -g advanced-math-mcp
Em seguida, adicione à configuração do seu cliente MCP (ex.: 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"
]
}
}
}
Ferramentas (17 no total)
Avaliador de Expressões Unificado
| Ferramenta | Descrição |
|---|---|
evaluate | Avaliador universal de expressões com sintaxe matemática natural. Suporta matrizes, vetores, escalares, decomposições e funções personalizadas. |
set_variable | Define uma variável nomeada (matriz, vetor ou escalar) para uso em evaluate |
get_variable | Recupera o valor de uma variável |
list_variables | Lista todas as variáveis definidas e seus tipos |
clear_variables | Redefine todas as variáveis |
Criação de Matrizes
| Ferramenta | Descrição |
|---|---|
matrix_create | Cria uma matriz a partir de um array 2D de strings |
matrix_identity | Cria uma matriz identidade n×n |
matrix_zeros | Cria uma matriz m×n de zeros |
matrix_diagonal | Cria uma matriz diagonal a partir de um vetor de valores |
Matemática Simbólica
| Ferramenta | Descrição |
|---|---|
symbolic_simplify | Simplifica expressões algébricas |
symbolic_expand | Expande expressões fatoradas |
symbolic_substitute | Substitui variáveis por valores ou expressões |
symbolic_derivative | Calcula derivadas ordinárias (uma variável) |
symbolic_partial_derivative | Calcula derivadas parciais (multivariáveis) |
symbolic_integrate | Calcula integrais indefinidas (antiderivadas) |
symbolic_definite_integral | Calcula integrais definidas com limites |
symbolic_limit | Calcula limites de expressões |
evaluate — O Avaliador Universal
Todas as operações com matrizes/vetores usam uma única ferramenta evaluate com sintaxe de expressão natural:
Operações com Matrizes
// 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
Operações com Vetores
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]
Literais Inline
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]]
Fluxo de Trabalho com Variáveis
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
Matemática Simbólica
Simplificação e Expansão
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
Substituição
// 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
Cálculo
// 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
Arquitetura
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
Dependências
| Pacote | Finalidade |
|---|---|
@modelcontextprotocol/sdk | Implementação do protocolo MCP |
mathjs v13 | Operações numéricas com matrizes, análise de expressões |
nerdamer | Álgebra simbólica, cálculo (integrais, limites) |
zod | Validação de entrada em tempo de execução |
Funções Personalizadas em evaluate
O avaliador estende o mathjs com estas funções personalizadas:
| Função | Implementação |
|---|---|
rank(A) | Via contagem de autovalores de AᵀA |
solve(A, b) | Encapsula math.lusolve() |
eig(A) / eigs(A) | Encapsula math.eigs() com saída formatada |
svd(A) | Via decomposição de autovalores de AᵀA |
charpoly(A) | Baseado em fórmula para 2×2 e 3×3 |
lu(A) | Alias para math.lup() |
qr(A) | Alias para math.qr() |
project(u, v) | Fórmula de projeção vetorial |
norm(v, type) | L1, L2 (padrão), L∞ |
Desenvolvimento
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
Testes
npm test # run all tests (vitest)
npm run test:watch # watch mode
npm run typecheck # TypeScript validation only
| Suíte | Testes | Cobertura |
|---|---|---|
evaluator.test.ts | 36 | Operações com matrizes, operações com vetores, decomposições, autovalores, escopo de variáveis, tratamento de erros |
symbolic.test.ts | 15 | Simplificar, expandir, substituir, derivadas ordinárias |
calculus.test.ts | 17 | Integrais indefinidas/definidas, limites, derivadas parciais |
Todos os 68 testes passam.
Limitações Conhecidas
- SVD: A SVD com posto deficiente fornece vetores zero para colunas do espaço nulo (calculada via decomposição de autovalores de AᵀA, não Golub-Reinsch completo)
- Cholesky: Não disponível no mathjs v13; use
lu()para decomposição geral norm(v, inf): Deve usar"inf"entre aspas (nãoinfpuro) devido à análise do mathjscharpoly: Somente numérico, suporta matrizes 2×2 e 3×3symbolic_limit: Alguns limites avançados (ex.:(1+1/x)^xquandox→∞) podem não ser totalmente resolvidos
Licença
MIT