使用说明
项目简介
MCP Solver 是一个基于 Model Context Protocol (MCP) 的服务器实现,它将 MiniZinc 约束编程技术与大型语言模型 (LLM) 相结合。该服务器允许 LLM 通过 MCP 协议调用约束求解工具,从而扩展 LLM 在解决复杂约束满足和优化问题方面的能力。例如,LLM 可以利用 MCP Solver 来解决调度问题、资源分配问题、以及各种组合优化难题。
主要功能点
- 约束模型编辑与管理: 支持创建、编辑和验证 MiniZinc 约束模型。允许 LLM 通过工具动态修改和调整约束模型,以适应不同的问题场景。
- 高效约束求解: 集成 Chuffed 约束求解器,提供高效的约束求解能力。支持设置求解超时时间,防止长时间运行。
- 解状态访问: 允许 LLM 获取求解结果中的变量值,从而理解和解释求解方案。
- 知识库管理: 内置简单的知识库 (Memo),用于存储和检索与约束求解相关的知识,帮助 LLM 更好地理解和利用求解过程。
- 标准 MCP 协议: 遵循 MCP 协议标准,易于与任何兼容 MCP 协议的客户端集成,例如 Claude Desktop 应用。
安装步骤
-
安装 Claude Desktop 应用 (或其他 MCP 客户端)
访问 https://claude.ai/download 下载并安装 Claude Desktop 应用。
-
安装 MCP Solver
打开终端,执行以下命令:
git clone https://github.com/MCP-Mirror/szeider_mcp-solver.git cd szeider_mcp-solver uv pip install -e .注意: 确保你的系统已安装 Python 3.9+ 和 MiniZinc 约束求解工具(及其 Chuffed 求解器)。MiniZinc 安装指南请参考 https://www.minizinc.org。
服务器配置
MCP 服务器需要配置在 MCP 客户端中才能使用。以 Claude Desktop 应用为例,你需要创建或修改配置文件 'claude_desktop_config.json'。
-
创建或编辑配置文件
根据你的操作系统,找到 Claude Desktop 应用的配置目录,并创建或编辑 'claude_desktop_config.json' 文件。
- macOS: '~/Library/Application/Support/Claude/claude_desktop_config.json'
- Windows: '%APPDATA%\Claude\claude_desktop_config.json'
- Linux: '~/.config/Claude/claude_desktop_config.json' (可能需要根据实际情况调整)
-
配置服务器信息
将以下 JSON 配置添加到 'claude_desktop_config.json' 文件中。你需要将 '/absolute/path/to/mcp-solver' 替换为你本地 'mcp-solver' 仓库的绝对路径。
{ "mcpServers": { "minizinc": { "command": "uv", "args": ["--directory", "/absolute/path/to/mcp-solver", // 替换为你的 mcp-solver 仓库的绝对路径 "run", "mcp-solver"] } } }Windows 用户注意: 在 Windows 路径中使用双反斜杠 '\',例如 '"C:\absolute\path\to\mcp-solver"'。
配置参数说明:
- '"minizinc"': 服务器名称,在 Claude 客户端中用于标识该 MCP 服务器。
- '"command": "uv"': 启动服务器的命令,这里使用 'uv run' 来运行 Python 脚本。确保你的环境中 'uv' 已安装,或者根据你的 Python 环境配置调整为 'python' 或 'python3' 等命令。
- '"args"': 传递给启动命令的参数列表。
- '"--directory", "/absolute/path/to/mcp-solver"': 指定工作目录为 'mcp-solver' 仓库的根目录。
- '"run", "mcp-solver"': 运行 'mcp-solver' 模块,即执行 'src/mcp_solver/server.py' 文件。
基本使用方法
配置完成后,在 Claude Desktop 应用中,你可以通过 Prompt 或指令来调用 MCP Solver 提供的工具。
常用工具示例:
- 'get_model': 获取当前约束模型的内容。
- 'edit_model': 编辑约束模型。你需要指定要修改的起始行号 'line_start'、结束行号 'line_end' (可选,为 null 表示到文件末尾) 以及新的内容 'content'。
- 'validate_model': 验证当前约束模型的语法和语义是否正确。
- 'solve_model': 使用 Chuffed 求解器求解当前模型。可以设置可选的 'timeout' 参数 (秒) 来限制求解时间。
- 'get_variable': 获取求解结果中指定变量的值。你需要提供 'variable_name' (变量名) 和可选的 'indices' (数组索引,1-based)。
- 'get_solve_time': 获取上次求解的执行时间。
- 'get_memo': 获取当前知识库的内容。
- 'edit_memo': 编辑知识库内容。参数与 'edit_model' 类似,用于指定编辑范围和新内容。
使用示例 (Claude Prompt):
Solve the following constraint problem: ... (描述问题) 可以使用工具 'edit_model' 编辑模型,然后使用 'validate_model' 验证模型,最后使用 'solve_model' 求解模型。
注意: 详细的工具使用方法和示例对话,请参考仓库 'examples' 文件夹中的内容。
信息
分类
AI与计算