Token导航 LogoToken导航TokenDH.com
Minizinc MCP logo
开发工具stdio官方级别未说明来源级核验

Minizinc MCP

MCP Server

提供MiniZinc约束编程能力的MCP服务器,支持模型求解、验证及多种传输协议。

工具数

2

提示词数

0

GitHub Stars

1

资源数

0
Docker开发工具命令行工具

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

V-Sekai-fire

提供方

V-Sekai-fire

最后核验

2026/5/17 20:19

运行时

Docker

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

docker run -d -p 8081:8081 --name minizinc-mcp minizinc-mcp

详细介绍

MiniZinc MCP服务器

提供MiniZinc约束编程功能的模型上下文协议(MCP)服务器。

特性

  • 使用HiGHS求解器求解MiniZinc模型(带浮动支持的LP/MIP)
  • 验证MiniZinc模型的语法和类型错误,而无需解决
  • 支持MZN(模型)和DZN(数据)内容作为字符串
  • 自动标准库包含(例如。, alldifferent.mzn)当模型中不存在时
  • 全面的输出格式:解析DZN格式进行变量提取,从显式输出语句中传递output_text
  • 通过STDIO或HTTP传输支持JSON-RPC 2.0协议
  • 服务器发送事件(SSE)支持流式响应

快速开始

先决条件

  • 灵丹妙药1.18+
  • MiniZinc已安装并可在PATH中使用
备注MiniZinc会自动安装在Docker镜像中。

安装

git clone 
cd minizinc-mcp
mix deps.get
mix compile

用法

STDIO传输(默认)

对于当地发展:

mix mcp.server

或使用release:

./_build/prod/rel/minizinc_mcp/bin/minizinc_mcp start

HTTP传输

对于web部署(例如Smithery):

PORT=8081 MIX_ENV=prod ./_build/prod/rel/minizinc_mcp/bin/minizinc_mcp start

终点:

  • POST / -JSON-RPC 2.0 MCP请求
  • GET /sse -服务器发送流媒体事件
  • GET /health -健康检查

码头工人

docker build -t minizinc-mcp .
docker run -d -p 8081:8081 --name minizinc-mcp minizinc-mcp

工具

服务器提供以下MCP工具:

minizinc_solve

使用HiGHS求解器(带浮动支撑的LP/MIP)求解MiniZinc模型。

参数

  • model_content (字符串,必填):MiniZinc模型内容(.mzn)为字符串
  • data_content (string,可选):DZN数据内容为字符串(例如。, "n = 8;").必须是有效的DZN格式。已解析并包含在响应中 input_data 现场。
  • timeout (整数,可选):可选超时(毫秒)(默认值:30000,即30秒)。允许的最大值为30000毫秒(30秒);超过此值的上限为30秒。
  • auto_include_stdlib (boolean,可选):自动包含标准MiniZinc库(例如。, alldifferent.mzn)如果不存在(默认值: true)

Output Format Details

minizinc_solve 该工具以JSON格式返回解决方案,格式如下:

  • DZN格式解析:当MiniZinc提供DZN格式输出时(模型没有显式 output 变量被解析并作为结构化数据返回(例如。, {"x": 10, "y": [1, 2, 3]})
  • 输出文本传递:当模型包括显式 output 语句,输出文本在 output_text 字段(例如。, {"output_text": "x = 10\n"})
  • 两种格式:当DZN和显式输出都可用时,它们都包含在响应中
  • 输入数据:何时 data_content 解析后的DZN数据包含在 input_data 领域
  • 状态:解决方案状态(例如。, "SATISFIED", "OPTIMAL_SOLUTION", "UNSATISFIABLE")可用时包括在内

响应始终在MCP内容字段中以JSON字符串的形式返回。

Standard Library Support

minizinc_solve 该工具自动包括常见的MiniZinc标准库(例如。, alldifferent.mzn) 如果它们尚未出现在模型中(当 auto_include_stdlibtrue).这意味着您可以使用 标准功能,如 all_different 无需添加显式 include 声明。

Solve Tool Examples

工作室:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "minizinc_solve",
    "arguments": {
      "model_content": "var int: x; constraint x > 0; solve satisfy;"
    }
  }
}

HTTP:

curl -X POST http://localhost:8081/ \
  -H "Content-Type: application/json" \
  -H "mcp-protocol-version: 2025-06-18" \
  -d '{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "minizinc_solve", "arguments": {"model_content": "var int: x; constraint x > 0; solve satisfy;"}}}'

数据内容:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "minizinc_solve",
    "arguments": {
      "model_content": "var int: n; array[1..n] of var int: x; constraint all_different(x); solve satisfy;",
      "data_content": "n = 8;",
      "timeout": 30000
    }
  }
}

minizinc_validate

通过检查语法和类型检查来验证MiniZinc模型,而无需求解。在尝试解决模型之前,对调试模型很有用。

参数

  • model_content (字符串,必填):MiniZinc模型内容(.mzn)为字符串
  • data_content (string,可选):DZN数据内容为字符串(例如。, "n = 8;").必须是有效的DZN格式。
  • auto_include_stdlib (boolean,可选):自动包含标准MiniZinc库(例如。, alldifferent.mzn)如果不存在(默认值: true)

响应格式

返回一个JSON对象:

  • valid (boolean):模型是否有效
  • errors (array):错误消息列表(如果有的话)
  • warnings (array):警告消息列表(如果有的话)
  • message (string):人类可读消息(有效时)
  • raw_output (string):原始MiniZinc验证输出(无效时)

Validate Tool Examples

验证有效模型:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "minizinc_validate",
    "arguments": {
      "model_content": "var int: x; constraint x > 0; solve satisfy;"
    }
  }
}

对有效型号的响应:

{
  "valid": true,
  "errors": [],
  "warnings": [],
  "message": "Model is valid"
}

验证有语法错误的模型:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "minizinc_validate",
    "arguments": {
      "model_content": "var int: x; constraint x > 0 solve satisfy;"
    }
  }
}

对无效模型的响应:

{
  "valid": false,
  "errors": [
    "Error: syntax error, unexpected solve, expecting ';'"
  ],
  "warnings": [],
  "raw_output": "..."
}

配置

环境变量:

  • PORT -HTTP服务器端口(默认值:8081)
  • HOST -HTTP服务器主机(默认值: 0.0.0.0 如果设置了端口,否则 localhost)
  • MIX_ENV -环境(prod, dev, test)
  • ELIXIR_ERL_OPTIONS -Erlang选项(设置为 "+fnu" 对于UTF-8)
  • MCP_SSE_ENABLED -启用/禁用服务器发送事件(默认值: true,设置为 "false" 禁用)

服务器仅使用HTTP流(没有stdio传输)。

故障排除

未找到MiniZinc:确保MiniZinc已安装并在PATH中可用。对于Docker,MiniZinc包含在镜像中。

端口已在使用中:更改 PORT 环境变量或停止冲突的服务。

编译错误:运行 mix deps.get && mix clean && mix compile.

调试模式:使用 MIX_ENV=dev mix mcp.server 用于详细日志记录。

版本

当前版本: 1.0.0-dev2 (参见 mix.exs 最新版本)

需求

  • 灵丹妙药1.18+
  • Erlang/OTP 26+
  • MiniZinc 2.9.3+已安装并在PATH中可用(或使用包含MiniZinc的Docker镜像)

Development

建筑

mix deps.get
mix compile

测试

mix test

建筑发布

MIX_ENV=prod mix release

本地运行

对于STDIO传输(默认):

mix mcp.server
PORT=8081 mix run --no-halt

许可证

MIT许可证-有关详细信息,请参阅License.md。

版权

版权所有(c)2025年至今K.S.Ernest(iFire)Lee

目录标签

目录标签

Docker开发工具命令行工具Elixir本地部署约束编程数学优化求解器服务MiniZincJSON-RPC

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Docker

工具数量(toolCount,工具数)

2

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP