MCP-ORTools
使用Google OR-Tools实现的模型上下文协议(MCP)服务器,用于约束求解。
MCP-ORTools Quick Start Guide
简介
MCP-ORTools 是一个通过模型上下文协议(MCP)将 Google OR-Tools 约束编程求解器与大型语言模型集成的工具,使 AI 模型能够进行约束求解和优化。
安装
pip install git+https://github.com/Jacck/mcp-ortools.git
配置 Claude Desktop
创建配置文件:
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"ortools": {
"command": "python",
"args": ["-m", "mcp_ortools.server"]
}
}
}
使用方法
模型规范
模型以 JSON 格式定义,包含三个主要部分:
variables
:定义变量及其域constraints
:使用 OR-Tools 方法列出的约束objective
:可选的优化目标
约束语法
约束使用 OR-Tools 方法语法:
.__le__()
表示 <=.__ge__()
表示 >=.__eq__()
表示 ==.__ne__()
表示 !=
示例1:简单优化模型
{
"variables": [
{"name": "x", "domain": [0, 10]},
{"name": "y", "domain": [0, 10]}
],
"constraints": [
"(x + y).__le__(15)",
"x.__ge__(2 * y)"
],
"objective": {
"expression": "40 * x + 100 * y",
"maximize": true
}
}
示例2:背包问题
选择价值为 [3,1,2,1] 和重量为 [2,2,1,1] 的物品,总重量限制为 2。
{
"variables": [
{"name": "p0", "domain": [0, 1]},
{"name": "p1", "domain": [0, 1]},
{"name": "p2", "domain": [0, 1]},
{"name": "p3", "domain": [0, 1]}
],
"constraints": [
"(2*p0 + 2*p1 + p2 + p3).__le__(2)"
],
"objective": {
"expression": "3*p0 + p1 + 2*p2 + p3",
"maximize": true
}
}
响应格式
求解器返回 JSON 格式的解决方案:
{
"status": "OPTIMAL",
"solve_time": 0.045,
"variables": {
"p0": 0,
"p1": 0,
"p2": 1,
"p3": 1
},
"objective_value": 3.0
}
状态值:
OPTIMAL
:找到最优解FEASIBLE
:找到可行解INFEASIBLE
:无解UNKNOWN
:无法确定解
支持的功能
- 整数和布尔变量
- 使用 OR-Tools 方法语法的线性约束
- 线性优化目标
- 求解器参数和超时设置
- 二进制约束和关系操作
- 适用于背包问题和投资组合选择
更多信息
更多详细信息请访问 GitHub 项目页面。