mcpField
M
mcp-optimizer

mcp-optimizer

本地服务
github.com/dmitryanchikov版本控制572 周前更新

关于 mcp-optimizer

mcp-optimizer 是面向数学优化任务的 MCP 服务,支持 PuLP 与 OR-Tools。它将线性规划、调度、路径规划等问题提供给 MCP 客户端,并支持 STDIO 和 SSE 传输。

主要功能

  1. 01支持 PuLP 与 OR-Tools 求解器
  2. 02覆盖多类优化问题
  3. 03提供 STDIO 与 SSE 传输
  4. 04支持 Docker、pip 和 uvx 安装

适用场景

  1. 01求解线性规划与整数规划
  2. 02优化物流路径与车辆路线
  3. 03安排生产计划和作业排程

MCP 相关

作为 MCP 服务,它向客户端提供数学优化能力,支持 STDIO 直连和 SSE 远程通信。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"optimizer": {
"command": "uvx",
"args": [
"mcp-optimizer"
]
}
}
}
启动命令uvx mcp-optimizer

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypimcp-optimizer

工具

13

收录的工具列表 · 更新于 2 周前

参数类型必填说明
constraintsarray是
objectiveobject是
solverstring否
time_limit_secondsany否
variablesobject是

详细介绍

MCP Optimizer

🚀 数学优化 MCP 服务,支持 PuLP 和 OR-Tools

Tests Coverage Python License

📖 快速链接: 🚀 快速开始 | 🔧 macOS 故障排除 | 📊 示例 | 🎯 功能

🚀 快速开始

推荐的安装方式(按优先级排序)
1. 🐳 Docker(推荐)— 跨平台

最稳定的方式,功能完整

# 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 — 跨平台

标准方式

# 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(完整支持),macOS(部分支持)
# 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 用户: 如果遇到与 OR-Tools 相关的错误,请参阅🔧 macOS uvx 故障排除部分,其中提供了自动修复脚本。

🍎 macOS 注意事项

OR-Tools 支持:

  • uvx:仅支持 PuLP(功能有限)
  • pip:完整支持 OR-Tools
  • Docker:完整支持 OR-Tools

通过 pip 完整支持 OR-Tools:

# Install OR-Tools via Homebrew
brew install or-tools

# Then install mcp-optimizer
pip install "mcp-optimizer[stable]"
传输模式建议
安装方式推荐传输方式原因
DockerSSE稳定性最佳
pip + venvSTDIO避免较新版本中的依赖问题
uvxSTDIO兼容性最佳
与大模型客户端集成
Claude Desktop 集成

选项 1:使用 Docker(推荐)

  1. 从 claude.ai 安装 Claude Desktop
  2. 拉取 Docker 镜像:
docker pull ghcr.io/dmitryanchikov/mcp-optimizer:latest
  1. 添加到 claude_desktop_config.json:
{
  "mcpServers": {
    "mcp-optimizer": {
      "command": "docker",
      "args": [
        "run", "--rm", "-i",
        "ghcr.io/dmitryanchikov/mcp-optimizer:latest",
        "python", "main.py"
      ]
    }
  }
}
  1. 重启 Claude Desktop,并查找 🔨 工具图标

选项 2:使用 pip + venv

# Create virtual environment and install
python -m venv .venv
source .venv/bin/activate  # Linux/macOS
pip install mcp-optimizer

然后添加到 Claude Desktop 配置中:

{
  "mcpServers": {
    "mcp-optimizer": {
      "command": "mcp-optimizer"
    }
  }
}

选项 3:使用 uvx 添加到 claude_desktop_config.json:

{
  "mcpServers": {
    "mcp-optimizer": {
      "command": "uvx",
      "args": ["mcp-optimizer"]
    }
  }
}

注意:在 macOS 上,uvx 的功能有限(仅支持 PuLP 求解器);也可参阅🔧 macOS uvx 故障排除

Docker 高级配置(适用于远程 MCP 客户端)

# 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 端点:http://localhost:8000/sse(用于 MCP 通信的服务器发送事件)

Cursor 集成
  1. 在 Cursor 中安装 MCP 扩展
  2. 将 mcp-optimizer 添加到工作区设置中(推荐使用 Docker):
{
  "mcp.servers": {
    "mcp-optimizer": {
      "command": "docker",
      "args": [
        "run", "--rm", "-i",
        "ghcr.io/dmitryanchikov/mcp-optimizer:latest",
        "python", "main.py"
      ]
    }
  }
}

其他配置:

// 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"]
    }
  }
}
其他大模型客户端

对于其他兼容 MCP 的客户端(Continue、Cody 等),请使用类似的配置方式。推荐优先级:

  1. Docker(跨平台稳定性最佳)
  2. pip + venv(标准 Python 方式)
  3. uvx(快速测试,在 macOS 上功能有限)
高级安装选项
本地开发
# 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
本地构建和运行软件包

在测试和开发时,你可以在本地构建软件包,并使用 uvx 运行:

# 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

注意:本地构建会在 dist/ 目录中同时生成 wheel(.whl)和源码分发包(.tar.gz)文件。建议使用 wheel 文件通过 uvx 安装,因为它速度更快且无需编译。

使用自定义配置运行 Docker
# 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
独立服务命令
# 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
传输模式

MCP Optimizer 支持两种 MCP 传输协议:

  • STDIO:标准输入/输出,用于直接集成 MCP 客户端(Claude Desktop、Cursor 等)
  • SSE:通过 HTTP 传输的服务器发送事件,用于基于 Web 的 MCP 客户端和远程集成

STDIO 传输(默认 — 适用于 Claude Desktop 等 MCP 客户端)

# 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 传输(适用于远程 MCP 客户端)

# 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

可用的 CLI 选项

# 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

🔧 平台兼容性与故障排除

macOS 兼容性

✅ 功能完整:

  • Homebrew + pip:brew install or-tools && pip install mcp-optimizer
  • 虚拟环境:python -m venv venv && source venv/bin/activate && pip install ortools mcp-optimizer
  • Docker:容器中完整支持 OR-Tools

⚠️ 功能有限:

  • uvx(隔离环境):由于 OR-Tools 原生库路径问题,只能使用 PuLP 求解器
  • 回退行为:OR-Tools 不可用时会自动切换到 PuLP

常见问题与解决方案:

  1. OR-Tools“Library not loaded”错误:

    # Solution: Install via Homebrew
    brew install or-tools
    # Then use regular pip/venv instead of uvx
    
  2. uvx 显示 OR-Tools 警告:

    WARNING: OR-Tools not available: No module named 'ortools'
    

    这是预期行为——uvx 使用 PuLP 求解器提供回退功能。

  3. macOS 最佳实践:

    • 生产部署使用 Docker
    • 开发时使用 Homebrew + pip
    • 快速测试使用 uvx(功能有限)
Linux/Windows 兼容性

✅ 功能完整:

  • uvx:开箱即用,支持 OR-Tools
  • pip:标准安装
  • Docker:推荐用于生产环境
各平台的求解器可用性
平台uvxpipDocker
macOS仅 PuLP✅ 完整✅ 完整
Linux✅ 完整✅ 完整✅ 完整
Windows✅ 完整✅ 完整✅ 完整

求解器功能:

  • OR-Tools:高级算法(CP-SAT、路径规划、调度)
  • PuLP:基础线性规划,可靠的回退方案

🔧 macOS uvx 故障排查

问题:uvx 中的 OR-Tools 库问题

常见错误消息:

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

根本原因:OR-Tools 二进制 wheel 包含硬编码的库路径,在 uvx 隔离环境中会失效。这是 macOS 特有的问题,源于 uvx 隔离依赖项的方式。

📊 不同安装方式对功能的影响

✅ uvx + 回退方案(仅 PuLP 求解器)可用:

  • 线性规划——基础优化、单纯形法
  • 金融优化——投资组合优化、风险管理
  • 生产规划——资源分配、库存管理

❌ uvx 无法提供(需要 OR-Tools):

  • 分配问题——匈牙利算法、运输问题
  • 整数规划——混合整数、二元规划(SCIP/CBC)
  • 背包问题——离散优化、多种变体
  • 车辆路径规划——TSP、CVRP、时间窗(约束规划)
  • 作业调度——CP-SAT 求解器、资源规划
🛠️ 解决方案(按优先顺序排列)
1. 自动修复脚本(推荐)
# 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. 手动修复
# 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. 使用 pip(始终有效)
# Install dependencies first
brew install or-tools

# Install package
pip install mcp-optimizer
mcp-optimizer
4. 使用 Docker(适用于生产环境)
docker run -p 8000:8000 mcp-optimizer

🎯 功能

支持的优化问题类型:
  • 线性规划——最大化/最小化线性目标函数
  • 分配问题——使用匈牙利算法实现最优资源分配
  • 运输问题——物流与供应链优化
  • 背包问题——最优物品选择(0-1、有界、无界)
  • 路径规划问题——带时间窗的 TSP 和 VRP
  • 调度问题——作业与班次调度
  • 整数规划——离散优化问题
  • 金融优化——投资组合优化与风险管理
  • 生产规划——多期生产规划
测试
自动化测试脚本

快速测试:

# 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

手动测试:

# 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

测试脚本功能:

  • ✅ 本地包测试:构建、STDIO/SSE 模式、CLI 功能
  • ✅ Docker 容器测试:镜像构建、环境变量、健康检查
  • ✅ 全面测试套件:并行执行并生成详细报告
  • ✅ 自动清理:测试后清理进程和容器
  • ✅ 跨平台:支持 macOS、Linux(容器测试需要 Docker)

要求:

  • 本地测试:uv、curl、lsof、gtimeout/timeout
  • Docker 测试:docker + 本地测试要求
  • macOS:brew install coreutils(用于 gtimeout)

CI/CD 集成:

# GitHub Actions example
- name: Test Package
  run: ./scripts/test_local_package.sh
- name: Test Docker
  run: ./scripts/test_docker_container.sh

📊 使用示例

线性规划
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
指派问题
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
背包问题
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
投资组合优化
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

🏗️ 架构

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/

🧪 测试结果

✅ 全面测试套件
🧪 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!
✅ 单元测试
  • 66 项测试通过,9 项跳过
  • 执行时间:0.45 秒
  • 所有核心组件均正常运行
📈 性能指标
  • 线性规划:约 0.01 秒
  • 指派问题:约 0.01 秒
  • 背包问题:约 0.01 秒
  • 复杂测试套件:3 个优化问题耗时 0.02 秒
  • 整体性能:🚀 出色!

🔧 技术细节

核心求解器
  • OR-Tools:用于指派、运输和背包问题
  • PuLP:用于线性/整数规划
  • FastMCP:用于 MCP 服务集成
支持的求解器
  • CBC、GLPK、GUROBI、CPLEX(通过 PuLP)
  • SCIP、CP-SAT(通过 OR-Tools)
主要功能
  • ✅ 完整的 MCP 协议集成
  • ✅ 全面的输入验证
  • ✅ 稳健的错误处理
  • ✅ 高性能优化
  • ✅ 可用于生产环境的架构
  • ✅ 广泛的测试覆盖
  • ✅ 支持 Docker 和 Kubernetes

📋 要求

  • Python 3.11+
  • uv(用于依赖管理)
  • OR-Tools(自动安装)
  • PuLP(自动安装)

🚀 生产部署

Docker
# Build image
docker build -t mcp-optimizer .

# Run container
docker run -p 8000:8000 mcp-optimizer
Kubernetes
# Deploy to Kubernetes
kubectl apply -f k8s/
监控
# Start monitoring stack
docker-compose up -d

🎯 项目状态

✅ 已可用于生产环境 🚀

  • 已实现并测试所有核心优化工具
  • MCP 服务功能完整
  • 测试覆盖全面(66 项单元测试 + 9 项集成测试)
  • 已确认 OR-Tools 集成正常运行
  • 性能已优化(复杂测试套件耗时 < 30s)
  • 已准备好部署到生产环境

📖 使用示例

examples/ 目录包含实际示例和提示词,展示如何将 MCP Optimizer 与大语言模型(LLM)配合使用:

可用示例
  • 📊 线性规划(RU | EN)
    • 生产优化、膳食规划、运输和混合问题
  • 👥 指派问题(RU | EN)
    • 员工与项目指派、机器与订单分配、任务分配
  • 💰 投资组合优化(RU | EN)
    • 投资组合、退休规划、风险管理
如何使用示例
  1. 用于 LLM 集成:复制提示词文本,并将其连同 MCP Optimizer 访问权限一起提供给大模型
  2. 用于直接 API 调用:将提供的 API 结构直接与 MCP Optimizer 函数配合使用
  3. 用于学习:了解不同类型的优化问题及其建模方式

每个示例都包含:

  • 问题描述和真实场景
  • 可直接用于大模型的提示词
  • 技术 API 结构
  • 常见触发短语
  • 实际应用

🔄 近期更新

最新版本功能:
  1. 函数导出 - 为所有工具模块添加了可导出函数:

    • linear_programming.py 中的 solve_linear_program()
    • assignment.py 中的 solve_assignment_problem()
    • knapsack.py 中的 solve_knapsack_problem()
    • financial.py 中的 optimize_portfolio()
    • production.py 中的 optimize_production()
  2. 增强测试 - 更新了全面测试套件,确保函数签名正确

  3. OR-Tools 集成 - 确认所有 OR-Tools 组件均可正常运行

🚀 全自动发布流程

新的简化 Git 流程(3 步!)

项目采用全自动发布流程:

1. 创建发布分支
# 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. 创建指向 main 的 PR
# Create PR: release/v0.3.0 → main
gh pr create --base main --head release/v0.3.0 --title "Release v0.3.0"
3. 合并 PR — 完成!🎉

PR 合并后,将自动执行以下操作:

  • ✅ 创建标签 v0.3.0
  • ✅ 发布到 PyPI
  • ✅ 发布 Docker 镜像
  • ✅ 创建 GitHub Release
  • ✅ 将 main 合并回 develop
  • ✅ 清理发布分支

无需再手动运行 manual_finalize_release.py!

🔒 安全检测:采用混合方式,结合 GitHub 分支保护与自动发布检测。详情请参阅发布流程。

自动发布流水线

CI/CD 流水线会自动处理:

  • ✅ 候选版本:从 release/* 分支构建
  • ✅ 正式发布:由 main 上的版本标签触发
  • ✅ PyPI 发布:创建标签时自动执行
  • ✅ Docker 镜像:构建多架构镜像
  • ✅ GitHub Releases:包含构建产物和发布说明
CI/CD 流水线

GitHub Actions 工作流会自动:

  • ✅ 在 Python 3.11 和 3.12 上运行测试
  • ✅ 执行安全扫描
  • ✅ 构建并推送 Docker 镜像
  • ✅ 创建标签时发布到 PyPI
  • ✅ 创建 GitHub Releases
PyPI 发布要求
  • 在 GitHub 仓库中设置 PYPI_API_TOKEN 密钥
  • 确保所有测试通过
  • 遵循语义化版本规范

🛠️ 开发工具

调试工具

使用调试脚本检查 MCP 服务结构:

# 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
全面测试

运行完整的集成测试套件:

# 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 构建说明
镜像详情
  • 基础镜像:Python 3.12 Slim(基于 Debian)
  • 大小:约 649MB(通过多阶段构建进行优化)
  • 架构:支持多平台(x86_64、ARM64)
  • 安全性:使用非 root 用户,依赖项精简
  • 性能:优化 Python 字节码,清理构建产物
本地构建命令
# 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.md 了解相关指南。

Git Flow 策略

本项目遵循标准 Git Flow 工作流:

  • 功能分支 → develop 分支
  • 发布分支 → main 分支
  • 热修复分支 → main 和 develop 分支

📚 文档:

  • 贡献指南 - 完整的开发工作流和 Git Flow 策略
  • 发布流程 - 发布的创建与自动化方式
  • 仓库设置 - 完整的设置指南,包括分支保护和安全配置
开发环境设置
# 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!)

📄 许可证

本项目采用 MIT 许可证,详情请参阅 LICENSE 文件。

🙏 致谢

  • OR-Tools - Google 的优化工具
  • PuLP - Python 线性规划库
  • FastMCP - 快速 MCP 服务实现

📞 支持


为优化领域倾心打造 ❤️

📊 Docker 镜像大小分析

MCP Optimizer Docker 镜像经过优化,在功能与大小之间取得平衡:

组件大小占总大小的比例描述
Python 软件包(/venv)237.0 MB42.8%包含依赖项的虚拟环境
系统库(/usr)173.2 MB31.3%Debian 基础系统 + Python
其他137.4 MB24.8%基础镜像、文件系统
配置(/var、/etc)6.2 MB1.1%系统设置
应用代码(/code)0.2 MB0.04%MCP Optimizer 源代码
按大小排列的主要依赖项
  • OR-Tools:75.0 MB(占 venv 的 27.8%)——关键优化求解器(需要 pandas + numpy)
  • pandas:45.0 MB(占 venv 的 16.7%)——OR-Tools 执行数据操作所必需
  • NumPy:24.0 MB(占 venv 的 8.9%)——OR-Tools 执行数值计算所必需
  • PuLP:34.9 MB(占 venv 的 12.9%)——线性规划求解器
  • FastMCP:15.2 MB(占 venv 的 5.6%)——MCP 服务框架
  • Pydantic:12.8 MB(占 venv 的 4.7%)——数据验证
依赖项分析
  • 无法进一步缩减核心软件包:OR-Tools(我们的主要优化引擎)将 pandas 和 numpy 都作为必需依赖项
  • 已移至可选项的示例:示例所需的其他软件包(streamlit、plotly)已移至 [examples] extra
  • 对核心功能的影响最小:将示例移为可选依赖项只会影响开发和演示用途
镜像优化
  • 当前优化后的大小:约 420MB
  • 核心功能:包含生产环境优化所需的所有依赖项
  • 示例支持:安装 [examples] extra 即可使用其他演示功能
  • OR-Tools 限制:由于硬性依赖要求,无法移除 pandas/numpy

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。