๐งฎ Chuk MCP Math Server
A highly configurable Mathematical Computation Protocol (MCP) server that provides comprehensive mathematical functions with flexible transport options and streaming capabilities.
โจ Features
๐ข Mathematical Capabilities
- 286 Mathematical Functions across multiple domains
- Number Theory: Prime testing, factorization, GCD, LCM, sequences
- Arithmetic: Basic operations, advanced calculations, statistics
- Real-time Computation: Async processing with timeout support
- Function Filtering: Configurable whitelisting/blacklisting by domain or category
๐ Transport & Streaming
- Dual Transport: STDIO and HTTP support
- HTTP Streaming: Server-Sent Events for intensive computations
- WebSocket Ready: Extensible for real-time applications
- CORS Support: Cross-origin requests enabled
โ๏ธ Configuration
- CLI Configuration: Comprehensive command-line options
- File Configuration: YAML and JSON config file support
- Environment Variables: Container-friendly configuration
- Dynamic Filtering: Runtime function filtering capabilities
๐ก๏ธ Production Ready
- Health Monitoring: Built-in health check endpoints
- Error Handling: Graceful failure management
- Logging: Configurable log levels and output
- Rate Limiting: Optional request throttling
- Timeout Management: Configurable computation timeouts
๐ Quick Start
Installation
# Clone the repository
git clone https://github.com/chuk-mcp/chuk-mcp-math-server.git
cd chuk-mcp-math-server
# Install dependencies
uv sync
# or
pip install -e .
Basic Usage
STDIO Transport (MCP Standard)
# Start server with STDIO transport
uv run chuk-mcp-math-server
# Or with Python
python src/chuk_mcp_math_server/math_server.py
HTTP Transport
# Start HTTP server
uv run chuk-mcp-math-server --transport http --port 8000
# Server will be available at http://localhost:8000
Example Client Usage
Test with Examples
# Test STDIO client
uv run examples/stdio_client_example.py
# Test HTTP client with streaming
uv run examples/http_client_example.py
Basic HTTP API Usage
# Check server status
curl http://localhost:8000/
# Health check
curl http://localhost:8000/health
# Sample response:
# {
# "server": "chuk-mcp-math-server",
# "version": "0.1.0",
# "functions_available": 286,
# "transport": "http"
# }
๐ Documentation
Available Functions
The server provides 286 mathematical functions across these domains:
Domain | Functions | Examples |
---|---|---|
Arithmetic | Basic operations, statistics | add , multiply , mean , variance |
Number Theory | Primes, factorization, sequences | is_prime , next_prime , fibonacci , gcd |
Advanced Math | Complex calculations | sqrt , power , factorial , combinations |
Configuration Options
Command Line
# Basic configuration
chuk-mcp-math-server --transport http --port 8080 --host 0.0.0.0
# Function filtering
chuk-mcp-math-server --domains arithmetic number_theory --functions is_prime add
# Performance tuning
chuk-mcp-math-server --cache-strategy smart --timeout 60 --max-concurrent 20
# Logging
chuk-mcp-math-server --verbose # Debug logging
chuk-mcp-math-server --quiet # Minimal logging
Configuration File
# config.yaml
transport: "http"
port: 8000
host: "0.0.0.0"
enable_cors: true
log_level: "INFO"
# Function filtering
domain_whitelist: ["arithmetic", "number_theory"]
function_blacklist: ["slow_function"]
# Performance
cache_strategy: "smart"
cache_size: 1000
computation_timeout: 30.0
max_concurrent_calls: 10
# Use configuration file
chuk-mcp-math-server --config config.yaml
Environment Variables
export MCP_MATH_TRANSPORT="http"
export MCP_MATH_PORT=8000
export MCP_MATH_LOG_LEVEL="DEBUG"
export MCP_MATH_DOMAIN_WHITELIST="arithmetic,number_theory"
chuk-mcp-math-server
MCP Protocol Usage
Initialize Connection
{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2025-03-26",
"clientInfo": {
"name": "my-math-client",
"version": "1.0.0"
}
}
}
List Available Tools
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/list"
}
Call Mathematical Function
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "is_prime",
"arguments": {
"n": 97
}
}
}
๐ ๏ธ Development
Project Structure
chuk-mcp-math-server/
โโโ src/chuk_mcp_math_server/
โ โโโ __init__.py # Package initialization
โ โโโ _version.py # Dynamic version management
โ โโโ _cli.py # CLI utilities
โ โโโ math_server.py # Main server implementation
โโโ examples/
โ โโโ stdio_client_example.py # STDIO client demo
โ โโโ http_client_example.py # HTTP client demo
โโโ tests/ # Test suite
โโโ pyproject.toml # Project configuration
โโโ README.md # This file
Development Setup
# Install development dependencies
uv sync --group dev
# Install with all optional features
pip install -e .[full]
# Run formatting
black src/ examples/
isort src/ examples/
# Run tests
pytest
# Version information
chuk-mcp-math-server-info
Adding New Functions
- Add mathematical functions to the
chuk-mcp-math
library - Functions are automatically discovered and registered
- Use function filtering to control exposure
Custom Configuration
from chuk_mcp_math_server import ServerConfig, ConfigurableMCPMathServer
# Create custom configuration
config = ServerConfig(
transport="http",
port=9000,
domain_whitelist=["arithmetic"],
enable_cors=True,
log_level="DEBUG"
)
# Start server
server = ConfigurableMCPMathServer(config)
await server.run()
๐ HTTP API Reference
Endpoints
Endpoint | Method | Description |
---|---|---|
/ |
GET | Server status and information |
/health |
GET | Health check and function count |
/mcp |
POST | MCP protocol messages |
HTTP Streaming
The server supports Server-Sent Events (SSE) for computationally intensive operations:
// Request with streaming
fetch('/mcp', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Accept': 'text/event-stream'
},
body: JSON.stringify({
jsonrpc: '2.0',
id: 1,
method: 'tools/call',
params: {
name: 'fibonacci',
arguments: { n: 1000 }
}
})
})
๐ Performance
Benchmarks
- Function Calls: ~1000 ops/sec (simple arithmetic)
- Prime Testing: ~100 ops/sec (medium-sized numbers)
- Memory Usage: ~50MB baseline + computation overhead
- Startup Time: ~2 seconds (286 functions loaded)
Optimization Tips
- Use
cache_strategy: "smart"
for repeated calculations - Increase
max_concurrent_calls
for high-throughput scenarios - Use function filtering to reduce memory footprint
- Enable HTTP streaming for long-running computations
๐ง Troubleshooting
Common Issues
Server Won't Start
# Check dependencies
chuk-mcp-math-server-info
# Verify configuration
chuk-mcp-math-server --show-config
# Debug mode
chuk-mcp-math-server --verbose
Function Not Available
# List all functions
chuk-mcp-math-server --domains arithmetic --show-config
# Check filtering
chuk-mcp-math-server --functions is_prime add --show-config
HTTP Connection Issues
# Test server health
curl http://localhost:8000/health
# Check CORS settings
chuk-mcp-math-server --transport http --enable-cors
Debug Information
# Get detailed system info
chuk-mcp-math-server-info --info
# Check version detection
python -c "import chuk_mcp_math_server; chuk_mcp_math_server.print_version_info()"
๐ค Contributing
We welcome contributions! Please see our Contributing Guide for details.
Development Workflow
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests
- Run the test suite
- Submit a pull request
Code Style
- Use
black
for code formatting - Use
isort
for import sorting - Follow PEP 8 guidelines
- Add type hints where appropriate
๐ Requirements
Core Dependencies
- Python 3.11+
chuk-mcp >= 0.5
chuk-mcp-math >= 0.1.0
fastapi >= 0.116.1
uvicorn >= 0.35.0
httpx >= 0.28.1
pyyaml >= 6.0.2
Optional Dependencies
- Development tools:
pytest
,black
,isort
,mypy
- All optional:
pip install chuk-mcp-math-server[full]
๐ License
This project is licensed under the MIT License - see the LICENSE file for details.
๐ Acknowledgments
- Built on the Model Context Protocol (MCP)
- Mathematical functions provided by chuk-mcp-math
- Inspired by the need for accessible mathematical computation services
๐ Links
- Documentation: GitHub Wiki
- Issues: GitHub Issues
- MCP Protocol: Official MCP Docs
- Mathematical Functions: chuk-mcp-math
Made with โค๏ธ by the Chuk MCP Team
Bringing mathematical computation to the Model Context Protocol ecosystem