MCP-ORTools 使用说明

项目简介

MCP-ORTools 是一个基于 Model Context Protocol (MCP) 的服务器实现,它使用 Google OR-Tools 优化库作为后端,为大型语言模型 (LLM) 提供约束求解能力。通过此服务器,LLM 可以提交约束模型、设置参数、求解约束满足和优化问题,并获取解决方案。

主要功能点

  • 约束模型提交与验证: 允许 LLM 客户端以 JSON 格式提交约束模型,服务器会验证模型结构的正确性。
  • 约束求解: 使用 Google OR-Tools 强大的 CP-SAT 求解器求解提交的模型,支持整数和布尔变量、线性约束和线性优化目标。
  • 获取解决方案: 返回 JSON 格式的求解结果,包括求解状态(最优、可行、不可行等)、求解时间以及优化变量的取值。
  • 支持多种约束类型: 支持基本的算术运算、比较运算、线性组合以及二进制逻辑约束,能够处理背包问题、投资组合选择等多种优化问题。
  • 超时控制: 允许在求解模型时设置超时时间,防止求解过程无限制运行。

安装步骤

  1. 安装软件包: 打开终端或命令提示符,运行以下命令安装 MCP-ORTools:
    pip install git+https://github.com/Jacck/mcp-ortools.git
    这将从 GitHub 仓库下载并安装 'mcp-ortools' 包及其依赖项。

服务器配置

要将此 MCP 服务器与 MCP 客户端(例如 Claude Desktop)配合使用,您需要在客户端的配置文件中添加服务器配置。以下是 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"]
    }
  }
}

配置参数说明:

  • 'server name': 'ortools' (服务器名称,您可以自定义,用于在客户端配置中标识和引用此服务器)
  • 'command': 'python' (启动服务器的命令,这里使用 Python 解释器)
  • 'args': '["-m", "mcp_ortools.server"]' (传递给 'command' 的参数,'-m mcp_ortools.server' 表示以模块方式运行 'mcp_ortools.server' 模块,即启动服务器主程序)

基本使用方法

  1. 启动 MCP 服务器: 根据客户端的配置方式启动 'mcp-ortools' 服务器。对于 Claude Desktop,配置完成后,当 Claude 需要使用 MCP 服务器时会自动启动。您也可以在命令行中直接运行 'mcp-ortools' 命令来启动服务器。

  2. 提交约束模型: 在 MCP 客户端中,使用 'submit_model' 工具提交 JSON 格式的约束模型。模型需要包含 'variables' (变量定义), 'constraints' (约束条件), 和可选的 'objective' (优化目标)。 例如,提交一个简单的线性规划模型:

    {
        "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. 求解模型: 使用 'solve_model' 工具求解已提交的模型。可以设置可选的 'timeout' 参数限制求解时间(单位为秒)。

  4. 获取解决方案: 使用 'get_solution' 工具获取求解结果。结果将以 JSON 格式返回,包含求解状态、求解时间和变量的取值。

    例如,服务器可能返回如下 JSON 响应:

    {
        "status": "OPTIMAL",
        "solve_time": 0.045,
        "variables": {
            "x": 10,
            "y": 5
        },
        "objective_value": 900.0
    }

请参考仓库的 README.md 文件和示例代码以获取更详细的模型定义和使用方法。

信息

分类

AI与计算