Skip to content

Latest commit

 

History

History
148 lines (115 loc) · 5.88 KB

File metadata and controls

148 lines (115 loc) · 5.88 KB

Changelog

All notable changes to this project will be documented in this file.

[0.1.3] - 2025-12-02

Fixed

Server Import Fix for Deployment

  • Issue: ImportError when deploying to Fly.io: cannot import name 'Server' from 'chuk_mcp_server'
  • Root Cause: The class name changed from Server to ChukMCPServer in chuk-mcp-server
  • Fix: Updated src/chuk_mcp_solver/server.py to import and use ChukMCPServer instead of Server
  • Impact: Server now starts successfully in Docker/Fly.io environments

[0.1.2] - 2025-12-02

Published to PyPI with all Docker support and fixes.

[0.1.1] - 2025-12-02

Fixed

Cache Deadlock Fix

  • Issue: test_cache_stats test was hanging due to deadlock in SolutionCache.stats() method
  • Root Cause: The stats() method acquired self._lock, then called the hit_rate property which tried to acquire the same lock again. Since threading.Lock is not reentrant, this caused a deadlock.
  • Fix: Changed threading.Lock to threading.RLock (Reentrant Lock) in src/chuk_mcp_solver/cache.py
    • Line 10: Updated import from Lock to RLock
    • Line 38: Changed self._lock = Lock() to self._lock = RLock()
  • Impact: All cache tests now pass without hanging

Performance Test Fix

  • Issue: test_partial_solution_on_timeout was failing with timeout status instead of returning a partial solution
  • Root Cause: Test timeout was too short (1ms) for OR-Tools CP-SAT to find even a trivial feasible solution before timing out
  • Fix: Increased timeout in tests/test_performance.py:178 from 1ms to 50ms
  • Additional: Updated src/chuk_mcp_solver/solver/ortools/solver.py:164 to check for both cp_model.FEASIBLE and cp_model.OPTIMAL statuses when handling partial solutions
  • Impact: Test now reliably passes by giving solver enough time to find at least one feasible solution

Added

Docker Support

  • Dockerfile: Multi-stage build for optimized image size (~300-400MB)
    • Based on python:3.11-slim
    • Runs as non-root user (mcpuser) for security
    • Includes health check
    • Default command: HTTP mode on port 8000
  • docker-compose.yml: Service definition with resource limits and health checks
  • .dockerignore: Optimizes Docker build context by excluding unnecessary files
  • DOCKER.md: Comprehensive Docker usage guide with examples for:
    • Building and running containers
    • Configuration with environment variables
    • Transport modes (HTTP vs STDIO)
    • Production deployment
    • CI/CD integration
    • Troubleshooting

Makefile Docker Targets

  • docker-build: Build Docker image
  • docker-run: Run Docker container
  • docker-stop: Stop running container
  • docker-clean: Remove container and image
  • docker-test: Run tests in Docker container
  • docker-shell: Open shell in running container
  • docker-push: Push image to registry
  • docker-compose-up: Start services with docker-compose
  • docker-compose-down: Stop services with docker-compose
  • docker-compose-rebuild: Rebuild and restart services

Package Distribution

  • MANIFEST.in: Ensures proper file inclusion in source distributions
    • Includes README.md, LICENSE, pyproject.toml
    • Recursively includes Python files from src/ and examples/
    • Excludes compiled bytecode files

Public MCP Endpoint

  • Added documentation for hosted solver at https://solver.chukai.io/mcp
  • No installation required - use directly from Claude Desktop
  • Perfect for testing, demos, or production use

Enhanced Installation Options

  • Highlighted uvx as recommended installation method
  • Added uvx install option for global installation
  • Organized installation options by use case

Changed

Server Transport Handling

  • Breaking: Simplified command-line argument parsing in src/chuk_mcp_solver/server.py
  • Removed: argparse dependency
  • Default: STDIO mode (for Claude Desktop compatibility)
  • HTTP Mode: Pass http or --http argument
  • Logging: Improved logging suppression in STDIO mode to reduce noise
  • Pattern: Now matches chuk-mcp-celestial transport handling

Documentation Updates

  • README.md:
    • Updated test count from 151+ to 170 tests
    • Added public MCP endpoint section
    • Enhanced Quick Start with three options (Public, uvx, Development)
    • Added Docker usage section
    • Improved installation instructions with emojis and clear hierarchy
  • Test Count: Updated badges and documentation to reflect 170 passing tests

Test Results

All 170 tests passing:

  • Fixed hanging cache tests (test_cache_stats)
  • Fixed failing performance test (test_partial_solution_on_timeout)
  • All existing functionality preserved
  • No breaking changes to core API

Migration Notes

For Users

  • No action required - all changes are backward compatible
  • Consider using the public endpoint at https://solver.chukai.io/mcp for quick testing
  • For production use, consider Docker deployment for better isolation

For Developers

  • If running the server programmatically, note the simplified transport handling:
    • Default: STDIO mode (no arguments)
    • HTTP mode: Pass "http" or "--http" as argument
    • Old --transport flag is no longer supported

For Docker Users

  • Use make docker-build and make docker-run for easy Docker operations
  • Default container runs in HTTP mode on port 8000
  • See DOCKER.md for comprehensive deployment guide

Security

  • Docker image runs as non-root user (mcpuser)
  • Minimal runtime dependencies reduce attack surface
  • Health checks ensure service availability
  • No secrets or credentials in Docker image

Performance

  • Multi-stage Docker build reduces image size
  • Cache now uses reentrant locks for better concurrency
  • Partial solution timeout handling improved for better user experience

[0.1.0] - 2024-12-01

Initial release with comprehensive constraint solving and optimization capabilities.

See README.md for full feature list.