MCP ORTools
使用Google OR Tools进行约束求解的模型上下文协议(MCP)服务器实现。通过标准化的约束模型规范,设计用于大型语言模型。
概述
MCP ORTools通过模型上下文协议将Google的OR Tools约束编程求解器与大型语言模型集成在一起,使AI模型能够:
- 提交并验证约束模型
- 设置模型参数
- 解决约束满足和优化问题
- 检索和分析解决方案
安装
- 安装软件包:
pip install git+https://github.com/Jacck/mcp-ortools.git- 配置Claude桌面
在以下位置创建配置文件 %APPDATA%\Claude\claude_desktop_config.json (Windows)或 ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):
{
"mcpServers": {
"ortools": {
"command": "python",
"args": ["-m", "mcp_ortools.server"]
}
}
}型号规格
模型以JSON格式指定,有三个主要部分:
variables:定义变量及其域constraints:使用OR工具方法的约束列表objective:可选优化目标
约束语法
约束必须使用OR Tools方法语法:
.__le__()小于或等于(\=).__eq__()为了平等(==).__ne__()不相等(!=)
使用示例
简单优化模型
{
"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
}
}背包问题
示例:选择具有值\[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
}
}附加约束示例:
{
"constraints": [
"p0.__eq__(1)", // Item p0 must be selected
"p1.__ne__(p2)", // Can't select both p1 and p2
"(p2 + p3).__ge__(1)" // Must select at least one of p2 or p3
]
}特性
- 完整的OR工具CP-SAT求解器支持
- 基于JSON的模型规范
- 支持:
- 整数和布尔变量(域:\[min,max\]) - 使用OR Tools方法语法的线性约束 - 线性优化目标 - 超时和求解器参数 - 二元约束和关系 - 投资组合选择问题 - 背包问题
约束中支持的操作
- 基本算术:+,-\*
- 比较:。__乐__(), .__通用电气__(), .__当量__(), .__东北部__()
- 变量的线性组合
- 通过约束组合的二进制逻辑
发展
要设置开发:
git clone https://github.com/Jacck/mcp-ortools.git
cd mcp-ortools
pip install -e .模型响应格式
求解器以JSON格式返回解决方案:
{
"status": "OPTIMAL",
"solve_time": 0.045,
"variables": {
"p0": 0,
"p1": 0,
"p2": 1,
"p3": 1
},
"objective_value": 3.0
}状态值:
- OPTIMAL:找到最佳解决方案
- 可行:找到可行的解决方案
- 不可行:没有解决方案
- 未知:无法确定解决方案
许可证
MIT许可证-有关详细信息,请参阅许可证文件
