Symbolic Math MCP

Servidor MCP para derivación, cálculo y verificación de matemáticas simbólicas

Documentación

symbolic_math_mcp

Verifica simbólicamente cualquier ecuación y cálculo

Requisitos

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

Instalación

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

Configuración

Archivo de configuración predeterminado: config.json

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

Notas

  • stdio://... ejecuta el servidor a través de stdio.
  • http://... ejecuta el servidor a través del transporte HTTP transmisible de FastMCP.
  • https://... es aceptado por el analizador de configuración y utiliza la configuración del transporte HTTP. En la práctica, TLS normalmente se termina mediante un proxy inverso frente al proceso.

Ejecución

Desde el directorio del proyecto:

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

O después de la instalación:

symbolic-math-mcp --config config.json

API de herramientas

check_symbolic_math(filename)

  • entrada: ruta absoluta a un archivo de matemática simbólica .yaml
  • comportamiento: se bloquea hasta que verify_yaml_file(filename) se complete o expire el tiempo de espera

Finalización exitosa:

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

Tiempo de espera agotado:

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

Archivo no encontrado:

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

Error de lectura del archivo:

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

Error desconocido:

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

check_symbolic_math_parallel(dir_path)

  • entrada: ruta absoluta de directorio que contiene uno o más archivos de matemática simbólica .yaml
  • comportamiento: inicia la verificación de cada archivo .yaml en paralelo, limitado por max_requests, y se bloquea hasta que todas las comprobaciones finalicen o se supere el tiempo de espera total
  • claves de resultado: rutas absolutas de archivo para cada archivo .yaml encontrado en dir_path
  • comportamiento de error: si dir_path falta, no es absoluto, no se puede leer o no contiene archivos .yaml, la herramienta devuelve la misma estructura de error utilizada por check_symbolic_math

Finalización exitosa:

{
  "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"
  }
}

Tiempo de espera agotado:

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

Directorio no encontrado o sin archivos YAML:

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

Pruebas

El conjunto de pruebas es intencionalmente secuencial.

Ejecutar todas las pruebas:

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

La prueba de integración inicia un subproceso real del servidor MCP stdio y valida:

Configuración de 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"