MCP-ORTools 使用说明
项目简介
MCP-ORTools 是一个基于 Model Context Protocol (MCP) 的服务器实现,它使用 Google OR-Tools 优化库作为后端,为大型语言模型 (LLM) 提供约束求解能力。通过此服务器,LLM 可以提交约束模型、设置参数、求解约束满足和优化问题,并获取解决方案。
主要功能点
- 约束模型提交与验证: 允许 LLM 客户端以 JSON 格式提交约束模型,服务器会验证模型结构的正确性。
- 约束求解: 使用 Google OR-Tools 强大的 CP-SAT 求解器求解提交的模型,支持整数和布尔变量、线性约束和线性优化目标。
- 获取解决方案: 返回 JSON 格式的求解结果,包括求解状态(最优、可行、不可行等)、求解时间以及优化变量的取值。
- 支持多种约束类型: 支持基本的算术运算、比较运算、线性组合以及二进制逻辑约束,能够处理背包问题、投资组合选择等多种优化问题。
- 超时控制: 允许在求解模型时设置超时时间,防止求解过程无限制运行。
安装步骤
- 安装软件包:
打开终端或命令提示符,运行以下命令安装 MCP-ORTools:
这将从 GitHub 仓库下载并安装 'mcp-ortools' 包及其依赖项。pip install git+https://github.com/Jacck/mcp-ortools.git
服务器配置
要将此 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' 模块,即启动服务器主程序)
基本使用方法
-
启动 MCP 服务器: 根据客户端的配置方式启动 'mcp-ortools' 服务器。对于 Claude Desktop,配置完成后,当 Claude 需要使用 MCP 服务器时会自动启动。您也可以在命令行中直接运行 'mcp-ortools' 命令来启动服务器。
-
提交约束模型: 在 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 } } -
求解模型: 使用 'solve_model' 工具求解已提交的模型。可以设置可选的 'timeout' 参数限制求解时间(单位为秒)。
-
获取解决方案: 使用 'get_solution' 工具获取求解结果。结果将以 JSON 格式返回,包含求解状态、求解时间和变量的取值。
例如,服务器可能返回如下 JSON 响应:
{ "status": "OPTIMAL", "solve_time": 0.045, "variables": { "x": 10, "y": 5 }, "objective_value": 900.0 }
请参考仓库的 README.md 文件和示例代码以获取更详细的模型定义和使用方法。
信息
分类
AI与计算