关于 mcp-optimizer
mcp-optimizer 是面向数学优化任务的 MCP 服务,支持 PuLP 与 OR-Tools。它将线性规划、调度、路径规划等问题提供给 MCP 客户端,并支持 STDIO 和 SSE 传输。
主要功能
- 01支持 PuLP 与 OR-Tools 求解器
- 02覆盖多类优化问题
- 03提供 STDIO 与 SSE 传输
- 04支持 Docker、pip 和 uvx 安装
适用场景
- 01求解线性规划与整数规划
- 02优化物流路径与车辆路线
- 03安排生产计划和作业排程
MCP 相关
作为 MCP 服务,它向客户端提供数学优化能力,支持 STDIO 直连和 SSE 远程通信。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
13收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| constraints | array | 是 | |
| objective | object | 是 | |
| solver | string | 否 | |
| time_limit_seconds | any | 否 | |
| variables | object | 是 |
详细介绍
MCP Optimizer
🚀 数学优化 MCP 服务,支持 PuLP 和 OR-Tools
📖 快速链接: 🚀 快速开始 | 🔧 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]"
传输模式建议
| 安装方式 | 推荐传输方式 | 原因 |
|---|---|---|
| Docker | SSE | 稳定性最佳 |
| pip + venv | STDIO | 避免较新版本中的依赖问题 |
| uvx | STDIO | 兼容性最佳 |
与大模型客户端集成
Claude Desktop 集成
选项 1:使用 Docker(推荐)
- 从 claude.ai 安装 Claude Desktop
- 拉取 Docker 镜像:
docker pull ghcr.io/dmitryanchikov/mcp-optimizer:latest
- 添加到
claude_desktop_config.json:
{
"mcpServers": {
"mcp-optimizer": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"ghcr.io/dmitryanchikov/mcp-optimizer:latest",
"python", "main.py"
]
}
}
}
- 重启 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 集成
- 在 Cursor 中安装 MCP 扩展
- 将 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 等),请使用类似的配置方式。推荐优先级:
- Docker(跨平台稳定性最佳)
- pip + venv(标准 Python 方式)
- 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
常见问题与解决方案:
-
OR-Tools“Library not loaded”错误:
# Solution: Install via Homebrew brew install or-tools # Then use regular pip/venv instead of uvx -
uvx 显示 OR-Tools 警告:
WARNING: OR-Tools not available: No module named 'ortools'这是预期行为——uvx 使用 PuLP 求解器提供回退功能。
-
macOS 最佳实践:
- 生产部署使用 Docker
- 开发时使用 Homebrew + pip
- 快速测试使用 uvx(功能有限)
Linux/Windows 兼容性
✅ 功能完整:
- uvx:开箱即用,支持 OR-Tools
- pip:标准安装
- Docker:推荐用于生产环境
各平台的求解器可用性
| 平台 | uvx | pip | Docker |
|---|---|---|---|
| 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)
- 投资组合、退休规划、风险管理
如何使用示例
- 用于 LLM 集成:复制提示词文本,并将其连同 MCP Optimizer 访问权限一起提供给大模型
- 用于直接 API 调用:将提供的 API 结构直接与 MCP Optimizer 函数配合使用
- 用于学习:了解不同类型的优化问题及其建模方式
每个示例都包含:
- 问题描述和真实场景
- 可直接用于大模型的提示词
- 技术 API 结构
- 常见触发短语
- 实际应用
🔄 近期更新
最新版本功能:
-
函数导出 - 为所有工具模块添加了可导出函数:
- linear_programming.py 中的
solve_linear_program() - assignment.py 中的
solve_assignment_problem() - knapsack.py 中的
solve_knapsack_problem() - financial.py 中的
optimize_portfolio() - production.py 中的
optimize_production()
- linear_programming.py 中的
-
增强测试 - 更新了全面测试套件,确保函数签名正确
-
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分支
📚 文档:
开发环境设置
# 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 文件。
🙏 致谢
📞 支持
- 📧 电子邮件:[email protected]
- 🐛 问题反馈:GitHub Issues
- 📖 文档:docs/
为优化领域倾心打造 ❤️
📊 Docker 镜像大小分析
MCP Optimizer Docker 镜像经过优化,在功能与大小之间取得平衡:
| 组件 | 大小 | 占总大小的比例 | 描述 |
|---|---|---|---|
| Python 软件包(/venv) | 237.0 MB | 42.8% | 包含依赖项的虚拟环境 |
| 系统库(/usr) | 173.2 MB | 31.3% | Debian 基础系统 + Python |
| 其他 | 137.4 MB | 24.8% | 基础镜像、文件系统 |
| 配置(/var、/etc) | 6.2 MB | 1.1% | 系统设置 |
| 应用代码(/code) | 0.2 MB | 0.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
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。