Skip to main content

symbolic_math_mcp

symbolic_math_mcp is a standalone FastMCP server that validates symbolic math proof files in YAML format.

It uses exactly one function from symbolic-math-verify for verification:

  • symbolic_math_verify.verify_yaml_file()

Features

  • exposes one synchronous MCP tool: check_symbolic_math
  • exposes one synchronous MCP tool for parallel directory validation: check_symbolic_math_parallel
  • supports stdio://, http://, and https:// configuration URLs
  • queues requests above max_requests
  • enforces a total per-request timeout
  • automatically switches to a free port if the configured HTTP port is already in use

Requirements

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

Install

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

Configuration

Default configuration file: config.json

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

Notes

  • stdio://... runs the server over stdio.
  • http://... runs the server over FastMCP's streamable HTTP transport.
  • https://... is accepted by the config parser and uses the HTTP transport settings. In practice, TLS is typically terminated by a reverse proxy in front of the process.

Run

From the project directory:

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

Or after installation:

symbolic-math-mcp --config config.json

Tool API

check_symbolic_math(filename)

  • input: absolute path to a .yaml symbolic math file
  • behavior: blocks until verify_yaml_file(filename) completes or times out

Successful completion:

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

File not found:

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

File read error:

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

Unknown error:

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

check_symbolic_math_parallel(dir_path)

  • input: absolute directory path containing one or more .yaml symbolic math files
  • behavior: starts verification for each .yaml file in parallel, bounded by max_requests, and blocks until all checks finish or the total timeout is exceeded
  • result keys: absolute file paths for each .yaml file found in dir_path
  • failure behavior: if dir_path is missing, not absolute, unreadable, or contains no .yaml files, the tool returns the same structured error shape used by check_symbolic_math

Successful completion:

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

Directory not found or no YAML files:

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

Tests

The test suite is intentionally sequential.

Run all tests:

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

The integration test starts a real stdio MCP server subprocess and validates:

Codex Config

[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"

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

symbolic_math_mcp-0.1.5.tar.gz (22.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

symbolic_math_mcp-0.1.5-py3-none-any.whl (20.1 kB view details)

Uploaded Python 3

File details

Details for the file symbolic_math_mcp-0.1.5.tar.gz.

File metadata

  • Download URL: symbolic_math_mcp-0.1.5.tar.gz
  • Upload date:
  • Size: 22.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for symbolic_math_mcp-0.1.5.tar.gz
Algorithm Hash digest
SHA256 cd6329e4e511213735c9c3eadbd37560d9b19ff411175285d3b9647d162d4083
MD5 f67345fe5fdb551c8f90cac0b73a1877
BLAKE2b-256 3555c7a41ebbfe8425701b04cadfc361fd8881d0e63120a314d1c3ced48fe900

See more details on using hashes here.

File details

Details for the file symbolic_math_mcp-0.1.5-py3-none-any.whl.

File metadata

File hashes

Hashes for symbolic_math_mcp-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 d8234ad66a7252192082eded2c56251f253a57a0687a404e565931b66ab73738
MD5 069ccdbfab22cd57722a476344a76f62
BLAKE2b-256 c8ad2a4a46882181f37a969a5c814fe926ef04928801e5387fd7c9ab7e883439

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.5 This release

2 files

0.1.4

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page