Skip to main content
Glama

mcp-optimizer

README.mdโ€ข30.4 kB
# MCP Optimizer ๐Ÿš€ **Mathematical Optimization MCP Server** with PuLP and OR-Tools support [![Tests](https://img.shields.io/badge/tests-66%20passed-brightgreen)](https://github.com/dmitryanchikov/mcp-optimizer) [![Coverage](https://img.shields.io/badge/coverage-48%25-yellow)](https://github.com/dmitryanchikov/mcp-optimizer) [![Python](https://img.shields.io/badge/python-3.11%2B-blue)](https://python.org) [![License](https://img.shields.io/badge/license-MIT-green)](LICENSE) ๐Ÿ“– **Quick Links:** [๐Ÿš€ Quick Start](#-quick-start) | [๐Ÿ”ง macOS Troubleshooting](#-macos-uvx-troubleshooting) | [๐Ÿ“Š Examples](#-usage-examples) | [๐ŸŽฏ Features](#-features) ## ๐Ÿš€ Quick Start ### Recommended Installation Methods (by Priority) ### 1. ๐Ÿณ Docker (Recommended) - Cross-platform **Most stable method with full functionality** ```bash # Run with STDIO transport (for MCP clients) docker run --rm -i ghcr.io/dmitryanchikov/mcp-optimizer:latest # Run with SSE transport (for remote clients) docker run -d -p 8000:8000 -e TRANSPORT_MODE=sse \ ghcr.io/dmitryanchikov/mcp-optimizer:latest # Check SSE endpoint curl -i http://localhost:8000/sse ``` ### 2. ๐Ÿ“ฆ pip + venv - Cross-platform **Standard approach** ```bash # Create virtual environment python -m venv .venv source .venv/bin/activate # Linux/macOS # or .venv\Scripts\activate # Windows # Install mcp-optimizer pip install mcp-optimizer # For SSE issues, use stable dependency versions: # pip install "mcp-optimizer[stable]" # Run (STDIO mode recommended) mcp-optimizer --transport stdio ``` ### 3. ๐Ÿš€ uvx - Linux/Windows (full), macOS (partially) ```bash # Linux/Windows - works out of the box uvx mcp-optimizer # macOS - requires Python 3.12 uvx --python python3.12 mcp-optimizer # STDIO mode recommended uvx mcp-optimizer --transport stdio ``` **macOS users:** If you encounter OR-Tools related errors, see [๐Ÿ”ง macOS uvx Troubleshooting](#-macos-uvx-troubleshooting) section for automated fix scripts. ### ๐ŸŽ macOS Specifics **OR-Tools support:** - **uvx**: PuLP only (limited functionality) - **pip**: full OR-Tools support - **Docker**: full OR-Tools support **For full OR-Tools support via pip:** ```bash # Install OR-Tools via Homebrew brew install or-tools # Then install mcp-optimizer pip install "mcp-optimizer[stable]" ``` ### Transport Mode Recommendations | Installation Method | Recommended Transport | Why | |---------------------|----------------------|-----| | Docker | SSE | Full stability | | pip + venv | STDIO | Avoids dependency issues with newer versions | | uvx | STDIO | Maximum compatibility | ### Integration with LLM Clients #### Claude Desktop Integration **Option 1: Using Docker (Recommended)** 1. Install Claude Desktop from [claude.ai](https://claude.ai/download) 2. Pull the Docker image: ```bash docker pull ghcr.io/dmitryanchikov/mcp-optimizer:latest ``` 3. Add to your `claude_desktop_config.json`: ```json { "mcpServers": { "mcp-optimizer": { "command": "docker", "args": [ "run", "--rm", "-i", "ghcr.io/dmitryanchikov/mcp-optimizer:latest", "python", "main.py" ] } } } ``` 4. Restart Claude Desktop and look for the ๐Ÿ”จ tools icon **Option 2: Using pip + venv** ```bash # Create virtual environment and install python -m venv .venv source .venv/bin/activate # Linux/macOS pip install mcp-optimizer ``` Then add to your Claude Desktop config: ```json { "mcpServers": { "mcp-optimizer": { "command": "mcp-optimizer" } } } ``` **Option 3: Using uvx** Add to your `claude_desktop_config.json`: ```json { "mcpServers": { "mcp-optimizer": { "command": "uvx", "args": ["mcp-optimizer"] } } } ``` *Note: On macOS, uvx provides limited functionality (PuLP solver only) or see [๐Ÿ”ง macOS uvx Troubleshooting](#-macos-uvx-troubleshooting)* **Advanced Docker Setup (for remote MCP clients)** ```bash # Run SSE server on port 8000 (uses environment variable) docker run -d -p 8000:8000 -e TRANSPORT_MODE=sse \ ghcr.io/dmitryanchikov/mcp-optimizer:latest # Or with CLI argument and custom port docker run -d -p 9000:9000 ghcr.io/dmitryanchikov/mcp-optimizer:latest \ python -m mcp_optimizer.main --transport sse --host 0.0.0.0 --port 9000 # Check server status docker logs <container-name> # Verify SSE endpoint (should show event stream) curl -i http://localhost:8000/sse ``` **SSE Endpoint**: `http://localhost:8000/sse` (Server-Sent Events for MCP communication) #### Cursor Integration 1. Install the MCP extension in Cursor 2. Add mcp-optimizer to your workspace settings (Docker recommended): ```json { "mcp.servers": { "mcp-optimizer": { "command": "docker", "args": [ "run", "--rm", "-i", "ghcr.io/dmitryanchikov/mcp-optimizer:latest", "python", "main.py" ] } } } ``` **Alternative configurations:** ```json // Using pip installation { "mcp.servers": { "mcp-optimizer": { "command": "mcp-optimizer" } } } // Using uvx (limited functionality on macOS) { "mcp.servers": { "mcp-optimizer": { "command": "uvx", "args": ["mcp-optimizer"] } } } ``` #### Other LLM Clients For other MCP-compatible clients (Continue, Cody, etc.), use similar configuration patterns. **Recommended priority:** 1. **Docker** (maximum stability across platforms) 2. **pip + venv** (standard Python approach) 3. **uvx** (quick testing, limited on macOS) ### Advanced Installation Options #### Local Development ```bash # Clone the repository git clone https://github.com/dmitryanchikov/mcp-optimizer.git cd mcp-optimizer # Install dependencies with uv uv sync --extra dev # Run the server uv run python main.py ``` #### Local Package Build and Run For testing and development, you can build the package locally and run it with uvx: ```bash # Build the package locally uv build # Run with uvx from local wheel file uvx --from ./dist/mcp_optimizer-0.3.9-py3-none-any.whl mcp-optimizer # Or run with help to see available options uvx --from ./dist/mcp_optimizer-0.3.9-py3-none-any.whl mcp-optimizer --help # Test the local package with a simple MCP message echo '{"jsonrpc": "2.0", "method": "initialize", "params": {"protocolVersion": "2024-11-05", "capabilities": {}, "clientInfo": {"name": "test", "version": "1.0"}}, "id": 1}' | uvx --from ./dist/mcp_optimizer-0.3.9-py3-none-any.whl mcp-optimizer ``` **Note**: The local build creates both wheel (`.whl`) and source distribution (`.tar.gz`) files in the `dist/` directory. The wheel file is recommended for uvx installation as it's faster and doesn't require compilation. #### Docker with Custom Configuration ```bash # Build locally with optimization git clone https://github.com/dmitryanchikov/mcp-optimizer.git cd mcp-optimizer docker build -t mcp-optimizer:optimized . docker run -p 8000:8000 mcp-optimizer:optimized # Check optimized image size (398MB vs 1.03GB original - 61% reduction!) docker images mcp-optimizer:optimized # Test the optimized image ./scripts/test_docker_optimization.sh ``` #### Standalone Server Commands ```bash # Run directly with uvx (no installation needed) uvx mcp-optimizer # Or run specific commands uvx mcp-optimizer --help # With pip installation mcp-optimizer # Or run with Python module (use main.py for stdio mode) python main.py ``` #### Transport Modes MCP Optimizer supports two MCP transport protocols: - **STDIO**: Standard input/output for direct MCP client integration (Claude Desktop, Cursor, etc.) - **SSE**: Server-Sent Events over HTTP for web-based MCP clients and remote integrations **STDIO Transport (Default - for MCP clients like Claude Desktop)** ```bash # Default STDIO mode for MCP protocol uvx mcp-optimizer # or uvx mcp-optimizer --transport stdio # or uv run python -m mcp_optimizer.main --transport stdio # or python main.py ``` **SSE Transport (for remote MCP clients)** ```bash # SSE mode for remote MCP clients (default port 8000) uvx mcp-optimizer --transport sse # or uv run python -m mcp_optimizer.main --transport sse # Custom host and port uvx mcp-optimizer --transport sse --host 0.0.0.0 --port 9000 # or uv run python -m mcp_optimizer.main --transport sse --host 0.0.0.0 --port 9000 # With debug mode uvx mcp-optimizer --transport sse --debug --log-level DEBUG ``` **Available CLI Options** ```bash # Show all available options uvx mcp-optimizer --help # Options: # --transport {stdio,sse} MCP transport protocol (default: stdio) # --port PORT Port for SSE transport (default: 8000) # --host HOST Host for SSE transport (default: 127.0.0.1) # --debug Enable debug mode # --reload Enable auto-reload for development # --log-level {DEBUG,INFO,WARNING,ERROR} Logging level (default: INFO) # # Environment Variables: # TRANSPORT_MODE={stdio,sse} Override transport mode # SERVER_HOST=0.0.0.0 Override server host # SERVER_PORT=8000 Override server port ``` ## ๐Ÿ”ง Platform Compatibility & Troubleshooting ### macOS Compatibility **โœ… Full Functionality:** - **Homebrew + pip**: `brew install or-tools && pip install mcp-optimizer` - **Virtual environments**: `python -m venv venv && source venv/bin/activate && pip install ortools mcp-optimizer` - **Docker**: Full OR-Tools support in containers **โš ๏ธ Limited Functionality:** - **uvx (isolated environments)**: Only PuLP solver available due to OR-Tools native library paths - **Fallback behavior**: Automatically switches to PuLP when OR-Tools unavailable **Common Issues & Solutions:** 1. **OR-Tools "Library not loaded" error:** ```bash # Solution: Install via Homebrew brew install or-tools # Then use regular pip/venv instead of uvx ``` 2. **uvx shows OR-Tools warnings:** ```bash WARNING: OR-Tools not available: No module named 'ortools' ``` This is expected - uvx provides fallback functionality with PuLP solver. 3. **Best practices for macOS:** - Use Docker for production deployments - Use Homebrew + pip for development - Use uvx for quick testing (limited functionality) ### Linux/Windows Compatibility **โœ… Full Functionality:** - **uvx**: Works out of the box with OR-Tools - **pip**: Standard installation - **Docker**: Recommended for production ### Solver Availability by Platform | Platform | uvx | pip | Docker | |----------|-----|-----|--------| | **macOS** | PuLP only | โœ… Full | โœ… Full | | **Linux** | โœ… Full | โœ… Full | โœ… Full | | **Windows** | โœ… Full | โœ… Full | โœ… Full | **Solver Features:** - **OR-Tools**: Advanced algorithms (CP-SAT, routing, scheduling) - **PuLP**: Basic linear programming, reliable fallback ## ๐Ÿ”ง macOS uvx Troubleshooting ### Problem: OR-Tools Library Issues with uvx **Common Error Messages:** ``` Library not loaded: /Users/corentinl/work/stable/temp_python3.13/lib/libscip.9.2.dylib ImportError: No module named 'ortools' WARNING: OR-Tools not available ``` **Root Cause**: OR-Tools binary wheels contain hardcoded library paths that fail in uvx isolated environments. This is a macOS-specific issue due to how uvx isolates dependencies. ### ๐Ÿ“Š Functionality Impact by Installation Method **โœ… Available with uvx + fallback (PuLP solver only)**: - **Linear Programming** - Basic optimization, simplex method - **Financial Optimization** - Portfolio optimization, risk management - **Production Planning** - Resource allocation, inventory management **โŒ Lost with uvx (requires OR-Tools)**: - **Assignment Problems** - Hungarian algorithm, transportation problems - **Integer Programming** - Mixed-integer, binary programming (SCIP/CBC) - **Knapsack Problems** - Discrete optimization, multiple variants - **Vehicle Routing** - TSP, CVRP, time windows (constraint programming) - **Job Scheduling** - CP-SAT solver, resource planning ### ๐Ÿ› ๏ธ Solutions (in order of preference) #### 1. Automated Fix Script (Recommended) ```bash # Smart adaptive script - no hardcoded versions! # Automatically detects your system libraries and Python versions ./scripts/fix_macos_uvx.sh # Then uvx works with full functionality uvx mcp-optimizer --transport stdio ``` #### 2. Manual Fix ```bash # Install system dependencies brew install or-tools scip # Create symlink for hardcoded path sudo mkdir -p /Users/corentinl/work/stable/temp_python3.13/lib/ sudo ln -sf /opt/homebrew/lib/libscip.9.2.dylib /Users/corentinl/work/stable/temp_python3.13/lib/libscip.9.2.dylib # Test fix uvx mcp-optimizer --help ``` #### 3. Use pip (Always Works) ```bash # Install dependencies first brew install or-tools # Install package pip install mcp-optimizer mcp-optimizer ``` #### 4. Use Docker (Production Ready) ```bash docker run -p 8000:8000 mcp-optimizer ``` ## ๐ŸŽฏ Features ### Supported Optimization Problem Types: - **Linear Programming** - Maximize/minimize linear objective functions - **Assignment Problems** - Optimal resource allocation using Hungarian algorithm - **Transportation Problems** - Logistics and supply chain optimization - **Knapsack Problems** - Optimal item selection (0-1, bounded, unbounded) - **Routing Problems** - TSP and VRP with time windows - **Scheduling Problems** - Job and shift scheduling - **Integer Programming** - Discrete optimization problems - **Financial Optimization** - Portfolio optimization and risk management - **Production Planning** - Multi-period production planning ### Testing #### Automated Test Scripts **Quick Testing:** ```bash # Test local package build and functionality ./scripts/test_local_package.sh # Test Docker container build and functionality ./scripts/test_docker_container.sh # Run comprehensive test suite (both package and Docker) ./scripts/test_all.sh # Run only specific tests ./scripts/test_all.sh --skip-docker # Skip Docker tests ./scripts/test_all.sh --skip-package # Skip package tests ``` **Manual Testing:** ```bash # Run simple functionality tests uv run python tests/test_integration/comprehensive_test.py # Run comprehensive integration tests uv run python tests/test_integration/comprehensive_test.py # Run all unit tests uv run pytest tests/ -v # Run with coverage uv run pytest tests/ --cov=src/mcp_optimizer --cov-report=html ``` **Test Scripts Features:** - โœ… **Local Package Testing**: Build, STDIO/SSE modes, CLI functionality - โœ… **Docker Container Testing**: Image build, environment variables, health checks - โœ… **Comprehensive Suite**: Parallel execution with detailed reporting - โœ… **Automatic Cleanup**: Processes and containers cleaned up after tests - โœ… **Cross-Platform**: Works on macOS, Linux (requires Docker for container tests) **Requirements:** - For local tests: `uv`, `curl`, `lsof`, `gtimeout`/`timeout` - For Docker tests: `docker` + local requirements - macOS: `brew install coreutils` (for gtimeout) **CI/CD Integration:** ```yaml # GitHub Actions example - name: Test Package run: ./scripts/test_local_package.sh - name: Test Docker run: ./scripts/test_docker_container.sh ``` ## ๐Ÿ“Š Usage Examples ### Linear Programming ```python from mcp_optimizer.tools.linear_programming import solve_linear_program # Maximize 3x + 2y subject to: # x + y <= 4 # 2x + y <= 6 # x, y >= 0 objective = {"sense": "maximize", "coefficients": {"x": 3, "y": 2}} variables = { "x": {"type": "continuous", "lower": 0}, "y": {"type": "continuous", "lower": 0} } constraints = [ {"expression": {"x": 1, "y": 1}, "operator": "<=", "rhs": 4}, {"expression": {"x": 2, "y": 1}, "operator": "<=", "rhs": 6} ] result = solve_linear_program(objective, variables, constraints) # Result: x=2.0, y=2.0, objective=10.0 ``` ### Assignment Problem ```python from mcp_optimizer.tools.assignment import solve_assignment_problem workers = ["Alice", "Bob", "Charlie"] tasks = ["Task1", "Task2", "Task3"] costs = [ [4, 1, 3], # Alice's costs for each task [2, 0, 5], # Bob's costs for each task [3, 2, 2] # Charlie's costs for each task ] result = solve_assignment_problem(workers, tasks, costs) # Result: Total cost = 5.0 with optimal assignments ``` ### Knapsack Problem ```python from mcp_optimizer.tools.knapsack import solve_knapsack_problem items = [ {"name": "Item1", "weight": 10, "value": 60}, {"name": "Item2", "weight": 20, "value": 100}, {"name": "Item3", "weight": 30, "value": 120} ] result = solve_knapsack_problem(items, capacity=50) # Result: Total value = 220.0 with optimal item selection ``` ### Portfolio Optimization ```python from mcp_optimizer.tools.financial import optimize_portfolio assets = [ {"name": "Stock A", "expected_return": 0.12, "risk": 0.18}, {"name": "Stock B", "expected_return": 0.10, "risk": 0.15}, {"name": "Bond C", "expected_return": 0.06, "risk": 0.08} ] result = optimize_portfolio( assets=assets, objective="minimize_risk", budget=10000, risk_tolerance=0.15 ) # Result: Optimal portfolio allocation with minimized risk ``` ## ๐Ÿ—๏ธ Architecture ``` mcp-optimizer/ โ”œโ”€โ”€ LICENSE # MIT License โ”œโ”€โ”€ README.md # Project documentation โ”œโ”€โ”€ CHANGELOG.md # Release notes โ”œโ”€โ”€ CONTRIBUTING.md # Contribution guidelines โ”œโ”€โ”€ pyproject.toml # Python project configuration โ”œโ”€โ”€ uv.lock # Dependency lock file โ”œโ”€โ”€ main.py # Entry point โ”œโ”€โ”€ Dockerfile # Main Docker configuration โ”œโ”€โ”€ docker-compose.yml # Multi-service setup โ”œโ”€โ”€ .dockerignore # Docker ignore rules โ”œโ”€โ”€ .gitignore # Git ignore rules โ”œโ”€โ”€ .python-version # Python version specification โ”œโ”€โ”€ src/mcp_optimizer/ # Main source code โ”‚ โ”œโ”€โ”€ __init__.py โ”‚ โ”œโ”€โ”€ __main__.py # Module entry point โ”‚ โ”œโ”€โ”€ main.py # Application entry point โ”‚ โ”œโ”€โ”€ mcp_server.py # MCP server implementation โ”‚ โ”œโ”€โ”€ config.py # Configuration management โ”‚ โ”œโ”€โ”€ tools/ # 9 categories of optimization tools โ”‚ โ”‚ โ”œโ”€โ”€ linear_programming.py โ”‚ โ”‚ โ”œโ”€โ”€ assignment.py โ”‚ โ”‚ โ”œโ”€โ”€ knapsack.py โ”‚ โ”‚ โ”œโ”€โ”€ routing.py โ”‚ โ”‚ โ”œโ”€โ”€ scheduling.py โ”‚ โ”‚ โ”œโ”€โ”€ financial.py โ”‚ โ”‚ โ””โ”€โ”€ production.py โ”‚ โ”œโ”€โ”€ solvers/ # PuLP and OR-Tools integration โ”‚ โ”‚ โ”œโ”€โ”€ pulp_solver.py โ”‚ โ”‚ โ””โ”€โ”€ ortools_solver.py โ”‚ โ”œโ”€โ”€ schemas/ # Pydantic validation schemas โ”‚ โ””โ”€โ”€ utils/ # Utility functions โ”œโ”€โ”€ tests/ # Comprehensive test suite โ”‚ โ”œโ”€โ”€ test_tools/ # Tool-specific tests โ”‚ โ”œโ”€โ”€ test_solvers/ # Solver tests โ”‚ โ””โ”€โ”€ test_integration/ # Integration tests โ”œโ”€โ”€ scripts/ # Automation scripts โ”œโ”€โ”€ examples/ # Usage examples and prompts โ”‚ โ”œโ”€โ”€ en/ # English examples โ”‚ โ””โ”€โ”€ ru/ # Russian examples โ”œโ”€โ”€ k8s/ # Kubernetes deployment manifests โ””โ”€โ”€ monitoring/ # Grafana/Prometheus setup โ””โ”€โ”€ grafana/ โ””โ”€โ”€ datasources/ ``` ## ๐Ÿงช Test Results ### โœ… Comprehensive Test Suite ``` ๐Ÿงช Starting Comprehensive MCP Optimizer Tests ================================================== โœ… Server Health PASSED โœ… Linear Programming PASSED โœ… Assignment Problems PASSED โœ… Knapsack Problems PASSED โœ… Routing Problems PASSED โœ… Scheduling Problems PASSED โœ… Financial Optimization PASSED โœ… Production Planning PASSED โœ… Performance Test PASSED ๐Ÿ“Š Test Results: 9 passed, 0 failed ๐ŸŽ‰ All tests passed! MCP Optimizer is ready for production! ``` ### โœ… Unit Tests - **66 tests passed, 9 skipped** - **Execution time: 0.45 seconds** - **All core components functional** ### ๐Ÿ“ˆ Performance Metrics - **Linear Programming**: ~0.01s - **Assignment Problems**: ~0.01s - **Knapsack Problems**: ~0.01s - **Complex test suite**: 0.02s for 3 optimization problems - **Overall performance**: ๐Ÿš€ Excellent! ## ๐Ÿ”ง Technical Details ### Core Solvers - **OR-Tools**: For assignment, transportation, knapsack problems - **PuLP**: For linear/integer programming - **FastMCP**: For MCP server integration ### Supported Solvers - **CBC, GLPK, GUROBI, CPLEX** (via PuLP) - **SCIP, CP-SAT** (via OR-Tools) ### Key Features - โœ… Full MCP protocol integration - โœ… Comprehensive input validation - โœ… Robust error handling - โœ… High-performance optimization - โœ… Production-ready architecture - โœ… Extensive test coverage - โœ… Docker and Kubernetes support ## ๐Ÿ“‹ Requirements - **Python 3.11+** - **uv** (for dependency management) - **OR-Tools** (automatically installed) - **PuLP** (automatically installed) ## ๐Ÿš€ Production Deployment ### Docker ```bash # Build image docker build -t mcp-optimizer . # Run container docker run -p 8000:8000 mcp-optimizer ``` ### Kubernetes ```bash # Deploy to Kubernetes kubectl apply -f k8s/ ``` ### Monitoring ```bash # Start monitoring stack docker-compose up -d ``` ## ๐ŸŽฏ Project Status **โœ… PRODUCTION READY** ๐Ÿš€ - All core optimization tools implemented and tested - MCP server fully functional - Comprehensive test coverage (66 unit tests + 9 integration tests) - OR-Tools integration confirmed working - Performance optimized (< 30s for complex test suites) - Ready for production deployment ## ๐Ÿ“– Usage Examples The `examples/` directory contains practical examples and prompts for using MCP Optimizer with Large Language Models (LLMs): ### Available Examples - **๐Ÿ“Š Linear Programming** ([RU](examples/ru/linear_programming.md) | [EN](examples/en/linear_programming.md)) - Production optimization, diet planning, transportation, blending problems - **๐Ÿ‘ฅ Assignment Problems** ([RU](examples/ru/assignment_problems.md) | [EN](examples/en/assignment_problems.md)) - Employee-project assignment, machine-order allocation, task distribution - **๐Ÿ’ฐ Portfolio Optimization** ([RU](examples/ru/portfolio_optimization.md) | [EN](examples/en/portfolio_optimization.md)) - Investment portfolios, retirement planning, risk management ### How to Use Examples 1. **For LLM Integration**: Copy the prompt text and provide it to your LLM with MCP Optimizer access 2. **For Direct API Usage**: Use the provided API structures directly with MCP Optimizer functions 3. **For Learning**: Understand different optimization problem types and formulations Each example includes: - Problem descriptions and real-world scenarios - Ready-to-use prompts for LLMs - Technical API structures - Common activation phrases - Practical applications ## ๐Ÿ”„ Recent Updates ### Latest Release Features: 1. **Function Exports** - Added exportable functions to all tool modules: - `solve_linear_program()` in linear_programming.py - `solve_assignment_problem()` in assignment.py - `solve_knapsack_problem()` in knapsack.py - `optimize_portfolio()` in financial.py - `optimize_production()` in production.py 2. **Enhanced Testing** - Updated comprehensive test suite with correct function signatures 3. **OR-Tools Integration** - Confirmed full functionality of all OR-Tools components ## ๐Ÿš€ Fully Automated Release Process ### New Simplified Git Flow (3 steps!) The project uses a fully automated release process: #### 1. Create Release Branch ```bash # For minor release (auto-increment) uv run python scripts/release.py --type minor # For specific version uv run python scripts/release.py 0.2.0 # For hotfix uv run python scripts/release.py --hotfix --type patch # Preview changes uv run python scripts/release.py --type minor --dry-run ``` #### 2. Create PR to main ```bash # Create PR: release/v0.3.0 โ†’ main gh pr create --base main --head release/v0.3.0 --title "Release v0.3.0" ``` #### 3. Merge PR - DONE! ๐ŸŽ‰ After PR merge, automatically happens: - โœ… Create tag v0.3.0 - โœ… Publish to PyPI - โœ… Publish Docker images - โœ… Create GitHub Release - โœ… Merge main back to develop - โœ… Cleanup release branch **NO NEED** to run `manual_finalize_release.py` manually anymore! > ๐Ÿ”’ **Secure Detection**: Uses hybrid approach combining GitHub branch protection with automated release detection. See [Release Process](.github/RELEASE_PROCESS.md) for details. ### Automated Release Pipeline The CI/CD pipeline automatically handles: - โœ… **Release Candidates**: Built from `release/*` branches - โœ… **Production Releases**: Triggered by version tags on `main` - โœ… **PyPI Publishing**: Automatic on tag creation - โœ… **Docker Images**: Multi-architecture builds - โœ… **GitHub Releases**: With artifacts and release notes ### CI/CD Pipeline The GitHub Actions workflow automatically: - โœ… Runs tests on Python 3.11 and 3.12 - โœ… Performs security scanning - โœ… Builds and pushes Docker images - โœ… Publishes to PyPI on tag creation - โœ… Creates GitHub releases ### Requirements for PyPI Publication - Set `PYPI_API_TOKEN` secret in GitHub repository - Ensure all tests pass - Follow semantic versioning ## ๐Ÿ› ๏ธ Development Tools ### Debug Tools Use the debug script to inspect MCP server structure: ```bash # Run debug tools to check server structure uv run python scripts/debug_tools.py # This will show: # - Available MCP tools # - Tool types and attributes # - Server configuration ``` ### Comprehensive Testing Run the full integration test suite: ```bash # Run comprehensive tests uv run python tests/test_integration/comprehensive_test.py # This tests: # - All optimization tools (9 categories) # - Server health and functionality # - Performance benchmarks # - End-to-end workflows ``` ### Docker Build Instructions #### Image Details - **Base**: Python 3.12 Slim (Debian-based) - **Size**: ~649MB (optimized with multi-stage builds) - **Architecture**: Multi-platform support (x86_64, ARM64) - **Security**: Non-root user, minimal dependencies - **Performance**: Optimized Python bytecode, cleaned build artifacts #### Local Build Commands ```bash # Standard build docker build -t mcp-optimizer:latest . # Build with development dependencies docker build --build-arg ENV=development -t mcp-optimizer:dev . # Build with cache mount for faster rebuilds docker build --mount=type=cache,target=/build/.uv -t mcp-optimizer . # Check image size docker images mcp-optimizer # Run container docker run -p 8000:8000 mcp-optimizer:latest # For development with volume mounting docker run -p 8000:8000 -v $(pwd):/app mcp-optimizer:latest # Test container functionality docker run --rm mcp-optimizer:latest python -c "from mcp_optimizer.mcp_server import create_mcp_server; print('โœ… MCP Optimizer works!')" ``` ## ๐Ÿค Contributing We welcome contributions! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines. ### Git Flow Policy This project follows a standard Git Flow workflow: - **Feature branches** โ†’ `develop` branch - **Release branches** โ†’ `main` branch - **Hotfix branches** โ†’ `main` and `develop` branches ๐Ÿ“š **Documentation**: - [Contributing Guide](CONTRIBUTING.md) - Complete development workflow and Git Flow policy - [Release Process](.github/RELEASE_PROCESS.md) - How releases are created and automated - [Repository Setup](.github/REPOSITORY_SETUP.md) - Complete setup guide including branch protection and security configuration ### Development Setup ```bash # Clone and setup git clone https://github.com/dmitryanchikov/mcp-optimizer.git cd mcp-optimizer # Create feature branch from develop git checkout develop git checkout -b feature/your-feature-name # Install dependencies uv sync --extra dev # Run tests uv run pytest tests/ -v # Run linting uv run ruff check src/ uv run mypy src/ # Create PR to develop branch (not main!) ``` ## ๐Ÿ“„ License This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. ## ๐Ÿ™ Acknowledgments - [OR-Tools](https://developers.google.com/optimization) - Google's optimization tools - [PuLP](https://coin-or.github.io/pulp/) - Linear programming in Python - [FastMCP](https://github.com/jlowin/fastmcp) - Fast MCP server implementation ## ๐Ÿ“ž Support - ๐Ÿ“ง Email: support@mcp-optimizer.com - ๐Ÿ› Issues: [GitHub Issues](https://github.com/dmitryanchikov/mcp-optimizer/issues) - ๐Ÿ“– Documentation: [docs/](docs/) --- **Made with โค๏ธ for the optimization community** ## ๐Ÿ“Š Docker Image Size Analysis The MCP Optimizer Docker image has been optimized to balance functionality and size: | Component | Size | % of Total | Description | |-----------|------|------------|-------------| | **Python packages (/venv)** | **237.0 MB** | **42.8%** | Virtual environment with dependencies | | **System libraries (/usr)** | **173.2 MB** | **31.3%** | Base Debian system + Python | | **Other** | **137.4 MB** | **24.8%** | Base image, filesystem | | **Configuration (/var, /etc)** | **6.2 MB** | **1.1%** | System settings | | **Application code (/code)** | **0.2 MB** | **0.04%** | MCP Optimizer source code | ### Key Dependencies by Size - **OR-Tools**: 75.0 MB (27.8% of venv) - Critical optimization solver (requires pandas + numpy) - **pandas**: 45.0 MB (16.7% of venv) - Required by OR-Tools for data operations - **NumPy**: 24.0 MB (8.9% of venv) - Required by OR-Tools for numerical computing - **PuLP**: 34.9 MB (12.9% of venv) - Linear programming solver - **FastMCP**: 15.2 MB (5.6% of venv) - MCP server framework - **Pydantic**: 12.8 MB (4.7% of venv) - Data validation ### Dependencies Analysis - **Core packages cannot be reduced further**: OR-Tools (our main optimization engine) requires both pandas and numpy as mandatory dependencies - **Optional examples moved**: Additional packages for examples (streamlit, plotly) moved to `[examples]` extra - **Minimal core impact**: Moving examples to optional dependencies only affects development/demo usage ### Image Optimization - **Current optimized size**: ~420MB - **Core functionality**: Includes all necessary dependencies for production optimization - **Example support**: Install with `[examples]` extra for additional demo functionality - **OR-Tools constraint**: Cannot remove pandas/numpy due to hard dependency requirements

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/dmitryanchikov/mcp-optimizer'

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