mcpField
M
MCP-ORTools

MCP-ORTools

本地服务
github.com/Jacck科研与教育2296 周前更新

关于 MCP-ORTools

MCP-ORTools 是基于 Google OR-Tools 的 MCP 服务,用于约束求解。它面向需要让大模型通过标准化 JSON 描述约束模型的用户,可求解约束满足与优化问题。

主要功能

  1. 01基于 JSON 的模型描述
  2. 02支持整数与布尔变量
  3. 03线性约束与线性优化目标
  4. 04CP-SAT 求解器与超时参数
  5. 05返回 OPTIMAL、FEASIBLE、INFEASIBLE 等状态

适用场景

  1. 01背包问题求解
  2. 02投资组合选择
  3. 03带有互斥或必选条件的组合优化

MCP 相关

该项目作为 MCP 服务运行,将 OR-Tools 求解能力暴露给 MCP 客户端,例如 Claude Desktop。模型以 JSON 格式提交,求解结果以 JSON 返回。

配置

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

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

MCP-ORTools

一个使用 Google OR-Tools 进行约束求解的模型上下文协议(MCP)服务实现。旨在通过标准化的约束模型规范与大语言模型配合使用。

概述

MCP-ORTools 通过模型上下文协议,将 Google OR-Tools 约束编程求解器与大语言模型集成,使 AI 模型能够:

  • 提交并验证约束模型
  • 设置模型参数
  • 求解约束满足和优化问题
  • 获取并分析解

安装

  1. 安装软件包:
pip install git+https://github.com/Jacck/mcp-ortools.git
  1. 配置 Claude Desktop 在 %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-Tools 方法列出约束
  • objective:可选的优化目标
约束语法

约束必须使用 OR-Tools 方法语法:

  • .__le__() 表示小于或等于(<=)
  • .__ge__() 表示大于或等于(>=)
  • .__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-Tools CP-SAT 求解器
  • 基于 JSON 的模型规范
  • 支持:
    • 整数和布尔变量(取值范围:[min, max])
    • 使用 OR-Tools 方法语法的线性约束
    • 线性优化目标
    • 超时和求解器参数
    • 二元约束和关系
    • 投资组合选择问题
    • 背包问题
约束中支持的操作
  • 基本算术:+、-、*
  • 比较:.le()、.ge()、.eq()、.ne()
  • 变量的线性组合
  • 通过组合约束实现二元逻辑

开发

设置开发环境:

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:找到最优解
  • FEASIBLE:找到可行解
  • INFEASIBLE:不存在解
  • UNKNOWN:无法确定解

许可证

MIT 许可证——详情请参见 LICENSE 文件

评论

支持 Markdown

第一次接触 MCP?

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

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