Skip to main content
Glama
README.mdโ€ข19.2 kB
# ๐Ÿงฎ Chuk MCP Math Server [![PyPI version](https://badge.fury.io/py/chuk-mcp-math-server.svg)](https://badge.fury.io/py/chuk-mcp-math-server) [![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/) [![Tests](https://github.com/chuk-mcp/chuk-mcp-math-server/workflows/Test/badge.svg)](https://github.com/chuk-mcp/chuk-mcp-math-server/actions) [![Coverage](https://img.shields.io/badge/coverage-97%25-brightgreen)](https://github.com/chuk-mcp/chuk-mcp-math-server) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Powered by chuk-mcp-server](https://img.shields.io/badge/powered%20by-chuk--mcp--server-blue)](https://github.com/chrishayuk/chuk-mcp-server) A highly configurable **Mathematical Computation Protocol (MCP) server** that provides comprehensive mathematical functions with flexible transport options. Built on the high-performance [chuk-mcp-server](https://github.com/chrishayuk/chuk-mcp-server) framework. ## โšก Performance - **36,000+ RPS** peak throughput (inherited from chuk-mcp-server) - **Sub-3ms latency** per tool call - **642 Mathematical Functions** available - **Zero-config startup** - works out of the box ## โœจ Features ### ๐Ÿ”ข Mathematical Capabilities - **642 Mathematical Functions** across multiple domains - **Number Theory**: Prime testing, factorization, GCD, LCM, sequences (328 functions) - **Arithmetic**: Basic operations, advanced calculations (44 functions) - **Trigonometry**: Comprehensive trigonometric operations (71 functions) - **Linear Algebra**: Vector and matrix operations (33 functions) - **Statistics**: Descriptive and inferential statistics (15 functions) - **Calculus**: Derivatives, integration, root finding (9 functions) - **Geometry**: Shapes, distances, intersections (12 functions) - **Probability**: Distribution functions (10 functions) - **Advanced Operations**: Complex mathematical operations (22 functions) - **Sequences**: Mathematical sequences (12 functions) - **Constants**: Mathematical constants (25 functions) - **Conversions**: Unit and type conversions (7 functions) - **Real-time Computation**: Async processing with proper error handling - **Function Filtering**: Configurable allowlists and denylists by domain, category, or function ### ๐Ÿš€ Transport & Architecture - **Dual Transport**: STDIO (Claude Desktop) and HTTP support - **High Performance**: Built on chuk-mcp-server framework - **Auto-detection**: Automatically selects optimal transport mode - **Production Ready**: 36,000+ RPS, <3ms latency - **Type Safe**: Automatic schema generation from Python type hints ### โš™๏ธ 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 with allowlists and denylists - **Granular Control**: Filter by function, domain, or category ### ๐Ÿ›ก๏ธ Production Features - **Zero Configuration**: Works out of the box with sensible defaults - **High Test Coverage**: 97% code coverage with 114 comprehensive tests - **Type Safe**: 100% type-checked with mypy, fully Pydantic-native - **Error Handling**: Graceful failure management - **Logging**: Configurable log levels and output - **MCP Resources**: Built-in resources for function discovery and stats - **Timeout Management**: Configurable computation timeouts ## ๐Ÿš€ Quick Start > **๐Ÿ’ก Try it now!** Use our free public server at **https://math.chukai.io/mcp** - no installation required! See [Public Server](#-public-server) section below. ### Installation #### Using uvx (Recommended - No Installation Required!) The easiest way to use the server is with `uvx`, which runs it without installing: ```bash uvx chuk-mcp-math-server ``` This automatically downloads and runs the latest version. Perfect for Claude Desktop! #### Using uv (Recommended for Development) ```bash # Install from PyPI uv pip install chuk-mcp-math-server # Or clone and install from source git clone https://github.com/chuk-mcp/chuk-mcp-math-server.git cd chuk-mcp-math-server uv sync ``` #### Using pip (Traditional) ```bash pip install chuk-mcp-math-server ``` ### Basic Usage #### STDIO Transport (Claude Desktop) ```bash # Start server with STDIO transport (default) uv run chuk-mcp-math-server # Starts immediately with all 642 functions available ``` #### HTTP Transport (Web APIs) ```bash # Start HTTP server uv run chuk-mcp-math-server --transport http --port 8000 # Server will be available at http://localhost:8000 ``` ### Claude Desktop Integration Add to your Claude Desktop config (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS): #### Option 1: Use the Public Server (Easiest) Connect to the hosted public server: ```json { "mcpServers": { "math": { "command": "uvx", "args": [ "chuk-mcp-client", "https://math.chukai.io/mcp" ] } } } ``` This requires no local installation and is always up-to-date! #### Option 2: Run Locally with uvx ```json { "mcpServers": { "math": { "command": "uvx", "args": ["chuk-mcp-math-server"] } } } ``` #### Option 3: Run Locally with Local Installation ```json { "mcpServers": { "math": { "command": "uv", "args": [ "--directory", "/absolute/path/to/chuk-mcp-math-server", "run", "chuk-mcp-math-server" ] } } } ``` **Important:** Use absolute paths, not relative or `~` paths. Restart Claude Desktop and ask: "Can you check if 97 is prime?" - Claude will use the math server! ### Example HTTP API Usage ```bash # Test the server curl http://localhost:8000/mcp \ -H "Content-Type: application/json" \ -d '{ "jsonrpc": "2.0", "id": 1, "method": "tools/list" }' # Call a mathematical function curl http://localhost:8000/mcp \ -H "Content-Type: application/json" \ -d '{ "jsonrpc": "2.0", "id": 2, "method": "tools/call", "params": { "name": "is_prime", "arguments": {"n": 97} } }' ``` ## ๐Ÿ“– Documentation ### Available Functions The server provides **642 mathematical functions** across these domains: | Domain | Functions | Examples | |--------|-----------|----------| | **Arithmetic & Number Theory** (420) | Basic operations, primes, sequences, divisibility | `add`, `multiply`, `modulo`, `is_prime`, `fibonacci`, `gcd` | | **Trigonometry** (71) | Trig functions, hyperbolic, conversions | `sin`, `cos`, `tan`, `sinh`, `radians_to_degrees` | | **Linear Algebra** (33) | Vector and matrix operations | `dot_product`, `cross_product`, `matrix_multiply` | | **Statistics** (15) | Descriptive statistics | `mean`, `median`, `std_dev`, `variance` | | **Calculus** (9) | Derivatives, integration, root finding | `derivative`, `integrate`, `newton_raphson` | | **Geometry** (12) | Shapes, distances, intersections | `circle_area`, `distance`, `triangle_area` | | **Probability** (10) | Distribution functions | `normal_pdf`, `binomial_pmf` | | **Other** (17) | Advanced operations, sequences, constants, conversions | `factorial`, `combinations`, `pi_digits` | ### Function Filtering Control which functions are exposed: ```bash # Only expose specific functions chuk-mcp-math-server --functions add subtract multiply divide # Expose only arithmetic domain chuk-mcp-math-server --domains arithmetic # Exclude specific functions chuk-mcp-math-server --exclude-functions slow_function # Combine filters chuk-mcp-math-server --domains arithmetic number_theory --categories core primes ``` ### Configuration Options #### Command Line ```bash # Basic configuration chuk-mcp-math-server --transport http --port 8080 --host 0.0.0.0 # Function filtering chuk-mcp-math-server --domains arithmetic --functions is_prime add # Performance tuning chuk-mcp-math-server --cache-strategy smart --timeout 60 # Logging chuk-mcp-math-server --verbose # Debug logging chuk-mcp-math-server --quiet # Minimal logging ``` #### Configuration File ```yaml # config.yaml transport: "http" port: 8000 host: "0.0.0.0" log_level: "INFO" # Function filtering (allowlist: only these are enabled, denylist: these are excluded) domain_allowlist: ["arithmetic", "number_theory"] function_allowlist: ["is_prime", "fibonacci", "add", "multiply"] function_denylist: ["deprecated_function"] # Exclude specific functions # Performance cache_strategy: "smart" cache_size: 1000 computation_timeout: 30.0 max_concurrent_calls: 10 ``` ```bash # Use configuration file chuk-mcp-math-server --config config.yaml # Save current config chuk-mcp-math-server --domains arithmetic --save-config my-config.yaml # Show current config chuk-mcp-math-server --show-config ``` ### MCP Resources The server provides built-in resources for introspection: ```bash # List available functions (via MCP resource) { "jsonrpc": "2.0", "id": 1, "method": "resources/read", "params": { "uri": "math://available-functions" } } # Get function statistics { "jsonrpc": "2.0", "id": 2, "method": "resources/read", "params": { "uri": "math://function-stats" } } # Get server configuration { "jsonrpc": "2.0", "id": 3, "method": "resources/read", "params": { "uri": "math://server-config" } } ``` ## ๐Ÿ› ๏ธ Development ### Project Structure ``` chuk-mcp-math-server/ โ”œโ”€โ”€ src/chuk_mcp_math_server/ โ”‚ โ”œโ”€โ”€ __init__.py # Package initialization โ”‚ โ”œโ”€โ”€ cli.py # CLI implementation โ”‚ โ”œโ”€โ”€ config.py # Base configuration (Pydantic) โ”‚ โ”œโ”€โ”€ math_config.py # Math-specific configuration โ”‚ โ”œโ”€โ”€ function_filter.py # Function filtering logic โ”‚ โ””โ”€โ”€ math_server.py # Main server (uses chuk-mcp-server) โ”œโ”€โ”€ tests/ # Test suite (97% coverage, 114 tests) โ”œโ”€โ”€ pyproject.toml # Project configuration โ””โ”€โ”€ README.md # This file ``` ### Development Setup ```bash # Clone the repository git clone https://github.com/chuk-mcp/chuk-mcp-math-server.git cd chuk-mcp-math-server # Install development dependencies uv sync # Install in editable mode uv pip install -e ".[dev]" ``` ### Running Tests ```bash # Run tests make test # Run tests with coverage make test-cov # Run specific test file uv run pytest tests/test_config.py -v ``` ### Code Quality ```bash # Run all quality checks (lint, typecheck, security, tests) make check # Format code make format # Run linting make lint # Run type checking make typecheck # Run security checks make security ``` ### Building ```bash # Build distribution packages make build # This creates wheel and source distributions in dist/ ``` ### Running Locally ```bash # Run with verbose logging uv run chuk-mcp-math-server --verbose # Run HTTP server make run-http # Run STDIO server (default) make run ``` ### Custom Server ```python from chuk_mcp_math_server import create_math_server # Create server with custom configuration server = create_math_server( transport="http", port=9000, domain_allowlist=["arithmetic"], # Only arithmetic functions function_denylist=["deprecated_func"], # Exclude specific functions log_level="DEBUG" ) # Run the server server.run() ``` ## ๐Ÿš€ Deployment ### Docker Build and run with Docker: ```bash # Build the Docker image make docker-build # Run the container make docker-run # Or manually: docker build -t chuk-mcp-math-server . docker run -p 8000:8000 chuk-mcp-math-server ``` The server will be available at `http://localhost:8000`. ### Fly.io Deploy to Fly.io for a public server: ```bash # Install flyctl if you haven't already curl -L https://fly.io/install.sh | sh # Login to Fly.io flyctl auth login # Deploy (first time) flyctl launch # Or deploy updates flyctl deploy # Check status flyctl status # View logs flyctl logs ``` The `fly.toml` configuration is already set up for HTTP mode on port 8000. The server will auto-scale based on traffic (min 0, auto-start/stop). #### Environment Variables Configure via Fly.io secrets: ```bash # Set environment variables flyctl secrets set MCP_SERVER_LOG_LEVEL=INFO flyctl secrets set MCP_MATH_CACHE_STRATEGY=smart # View secrets flyctl secrets list ``` ### GitHub Actions The repository includes automated workflows: - **Test**: Runs on all PRs and commits (Ubuntu, Windows, macOS) - **Release**: Creates GitHub releases when tags are pushed - **Publish**: Publishes to PyPI automatically on releases - **Fly Deploy**: Auto-deploys to Fly.io on main branch pushes To create a release: ```bash # Bump version in pyproject.toml make bump-patch # or bump-minor, bump-major # Commit the version change git add pyproject.toml uv.lock git commit -m "Bump version to 0.2.1" git push # Create and push a tag to trigger release make publish ``` This will automatically: 1. Create a GitHub release with changelog 2. Run tests on all platforms 3. Build and publish to PyPI 4. Deploy to Fly.io (if configured) ## ๐Ÿ“Š Performance ### Benchmarks - **Peak Throughput**: 36,000+ requests/second - **Average Latency**: <3ms per tool call - **Startup Time**: ~2 seconds (642 functions loaded) - **Memory Usage**: ~50MB baseline - **Success Rate**: 100% under load testing ### Performance comes from: - **chuk-mcp-server framework**: High-performance MCP implementation - **Async operations**: Non-blocking I/O for all function calls - **Type safety**: Automatic schema validation with zero overhead - **Optimized registry**: Fast function lookup and execution ### Optimization Tips - Use function filtering to reduce memory footprint - Enable caching for repeated calculations (`--cache-strategy smart`) - Use HTTP transport for web APIs, STDIO for local/Claude Desktop - Adjust `--max-concurrent-calls` for high-throughput scenarios ## ๐Ÿ”ง Troubleshooting ### Common Issues #### Server Won't Start ```bash # Verify installation python -c "import chuk_mcp_math_server; print(chuk_mcp_math_server.__version__)" # Verify configuration chuk-mcp-math-server --show-config # Debug mode chuk-mcp-math-server --verbose ``` #### Functions Not Loading ```bash # Check if chuk-mcp-math is installed python -c "import chuk_mcp_math; print(chuk_mcp_math.__version__)" # Verify function count chuk-mcp-math-server --show-config | grep total_filtered ``` #### Claude Desktop Not Showing Tools 1. Use **absolute paths** in claude_desktop_config.json (not `~` or relative) 2. Test manually: `echo '{"jsonrpc":"2.0","method":"tools/list","id":1}' | uv run chuk-mcp-math-server` 3. Restart Claude Desktop after config changes 4. Check Claude Desktop logs (Help โ†’ Show Logs) #### HTTP Connection Issues ```bash # Test server health curl http://localhost:8000/mcp \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","method":"tools/list","id":1}' ``` ## ๐ŸŒ Public Server A free public math server is available at **https://math.chukai.io/mcp** for anyone to use! ### Features - โœ… **Always Available**: Hosted on Fly.io with auto-scaling - โœ… **Always Up-to-Date**: Automatically deploys from main branch - โœ… **All 642 Functions**: Full mathematical function library - โœ… **No Installation Required**: Just add to Claude Desktop config - โœ… **Free to Use**: No authentication or API keys needed ### Quick Start Add this to your Claude Desktop config: ```json { "mcpServers": { "math": { "command": "uvx", "args": [ "chuk-mcp-client", "https://math.chukai.io/mcp" ] } } } ``` Then restart Claude Desktop and ask: "Can you check if 97 is prime?" ### Testing the Public Server The server requires session management for MCP over HTTP. Use `chuk-mcp-client` to connect: ```bash # Install the client uvx chuk-mcp-client https://math.chukai.io/mcp # Or test with curl (requires session ID from chuk-mcp-server) curl https://math.chukai.io/mcp \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","method":"tools/list","id":1}' ``` **Note**: The server uses chuk-mcp-server's session-based HTTP transport, which requires the `chuk-mcp-client` for proper session management. ### Privacy & Usage - No logging of tool calls or personal data - No rate limiting (fair use applies) - Automatically scales based on demand - Source code is open and auditable ### Self-Hosting Want to host your own? See the [Deployment](#-deployment) section above for Docker and Fly.io instructions. ## ๐Ÿค Contributing We welcome contributions! Here's how to help: 1. Fork the repository 2. Create a feature branch (`git checkout -b feature/amazing-feature`) 3. Make your changes 4. Add tests if applicable 5. Ensure tests pass (`pytest`) 6. Submit a pull request ### Code Style - Follow PEP 8 guidelines - Maintain 100% type safety with mypy and Pydantic - Add type hints where appropriate - Update documentation for new features - Keep the README up to date - Aim for high test coverage (currently 97%) ## ๐Ÿ“‹ Requirements ### Core Dependencies - Python 3.11+ - `chuk-mcp-server >= 0.6` (provides high-performance MCP framework) - `chuk-mcp-math >= 0.1.0` (provides mathematical functions) - `pyyaml >= 6.0.2` (for YAML configuration) ### What's Included via chuk-mcp-server - High-performance HTTP/STDIO transport - Automatic type inference and validation - Built-in logging and error handling - Zero-config startup capability - Production-grade performance (36K+ RPS) ### Optional Dependencies - Development tools: `pytest`, `pytest-asyncio` - All optional: `pip install -e .[dev]` ## ๐Ÿ—๏ธ Architecture Built on **chuk-mcp-server** framework: - **chuk-mcp-server**: High-performance MCP server framework (36K+ RPS) - **chuk-mcp-math**: Mathematical function library (642 functions) - **This server**: Bridges the two with filtering and configuration The refactored architecture is simpler and more performant: - Removed custom base server implementation - Uses chuk-mcp-server's decorator-based API - Maintains all filtering and configuration features - Gains automatic performance optimization ## ๐Ÿ“ License This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. ## ๐Ÿ™ Acknowledgments - Built on [chuk-mcp-server](https://github.com/chrishayuk/chuk-mcp-server) - High-performance MCP framework - Mathematical functions from [chuk-mcp-math](https://github.com/chuk-mcp/chuk-mcp-math) - Follows the [Model Context Protocol](https://modelcontextprotocol.io) specification ## ๐Ÿ”— Links - **chuk-mcp-server**: [GitHub](https://github.com/chrishayuk/chuk-mcp-server) | [Docs](https://github.com/chrishayuk/chuk-mcp-server#readme) - **chuk-mcp-math**: [GitHub](https://github.com/chuk-mcp/chuk-mcp-math) - **MCP Protocol**: [Official Specification](https://modelcontextprotocol.io) - **Issues**: [GitHub Issues](https://github.com/chuk-mcp/chuk-mcp-math-server/issues) --- **Made with โค๏ธ by the Chuk MCP Team** *High-performance mathematical computation for the Model Context Protocol ecosystem*

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/chrishayuk/chuk-mcp-math-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server