Symbolic Math MCP

Servidor MCP para derivação, cálculo e verificação de matemática simbólica

Documentação

symbolic_math_mcp

Verifique simbolicamente qualquer equação e cálculo

Requisitos

  • Python 3.11+
  • fastmcp>=3.4.2
  • symbolic-math-verify>=0.1.4

Instalação

python3 -m venv .venv
.venv/bin/python -m pip install --upgrade pip
.venv/bin/python -m pip install -e .

Configuração

Arquivo de configuração padrão: config.json

{
  "mcp_server_name": "My Symbolic Math MCP Server",
  "mcp_server_url": "http://localhost:8753",
  "max_requests": 10,
  "total_timeout": 600
}

Notas

  • stdio://... executa o servidor via stdio.
  • http://... executa o servidor via transporte HTTP streamable do FastMCP.
  • https://... é aceito pelo analisador de configuração e usa as definições de transporte HTTP. Na prática, o TLS normalmente é terminado por um proxy reverso na frente do processo.

Execução

A partir do diretório do projeto:

.venv/bin/python run_server.py --config config.json

Ou após a instalação:

symbolic-math-mcp --config config.json

API da Ferramenta

check_symbolic_math(filename)

  • entrada: caminho absoluto para um arquivo de matemática simbólica .yaml
  • comportamento: bloqueia até que verify_yaml_file(filename) conclua ou expire o tempo limite

Conclusão bem-sucedida:

{
  "status": "Tool call completed!",
  "filename": "proof.yaml",
  "result": "Math proofs are valid"
}

Timeout:

{
  "status": "Tool call has timed out!",
  "filename": "proof.yaml",
  "result": "TIMEOUT ERROR!"
}

Arquivo não encontrado:

{
  "status": "Tool call cannot find the file based on the filename!",
  "filename": "proof.yaml",
  "result": "FILE NOT FOUND!"
}

Erro de leitura do arquivo:

{
  "status": "Tool call cannot read the file!",
  "filename": "proof.yaml",
  "result": "FILE CANNOT BE READ!"
}

Erro desconhecido:

{
  "status": "Tool call has unknown error!",
  "filename": "proof.yaml",
  "result": "UNKNOWN ERROR!"
}

check_symbolic_math_parallel(dir_path)

  • entrada: caminho absoluto de diretório contendo um ou mais arquivos de matemática simbólica .yaml
  • comportamento: inicia a verificação de cada arquivo .yaml em paralelo, limitada por max_requests, e bloqueia até que todas as verificações concluam ou o tempo limite total seja excedido
  • chaves do resultado: caminhos absolutos dos arquivos para cada arquivo .yaml encontrado em dir_path
  • comportamento de falha: se dir_path estiver ausente, não for absoluto, não puder ser lido ou não contiver arquivos .yaml, a ferramenta retorna a mesma estrutura de erro padronizada usada por check_symbolic_math

Conclusão bem-sucedida:

{
  "status": "Parallel Tool call completed!",
  "dir_path": "/abs/path/to/proofs",
  "result": {
    "/abs/path/to/proofs/one.yaml": "Math proofs are valid",
    "/abs/path/to/proofs/two.yaml": "Error! Math proofs are invalid"
  }
}

Timeout:

{
  "status": "Tool call has timed out!",
  "filename": "/abs/path/to/proofs",
  "result": "TIMEOUT ERROR!"
}

Diretório não encontrado ou nenhum arquivo YAML:

{
  "status": "Tool call cannot find the file based on the filename!",
  "filename": "/abs/path/to/proofs",
  "result": "FILE NOT FOUND!"
}

Testes

A suíte de testes é intencionalmente sequencial.

Executar todos os testes:

PYTHONPATH=src /home/brosnan/symbolic_math_mcp/.venv/bin/python tests/run_tests_sequentially.py

O teste de integração inicia um subprocesso real do servidor MCP stdio e valida:

Configuração do Codex

[mcp_servers.symbolic_math_mcp]
url = "http://localhost:8753/mcp"

[mcp_servers.symbolic_math_mcp.tools.check_symbolic_math]
approval_mode = "approve"

[mcp_servers.symbolic_math_mcp.tools.check_symbolic_math_parallel]
approval_mode = "approve"