返回市场
咕尔迪-mcp

咕尔迪-mcp

作者:novvoo2 星标更新:2025-10-24

项目介绍

Gurddy MCP 服务器

PyPI 版本 Python 支持 许可证:MIT 实时演示

一个全面的模型上下文协议(MCP)服务器,用于解决约束满足问题(CSP)、线性规划(LP)、极小极大优化以及由SciPy支持的高级优化问题。基于集成SciPy的gurddy优化库构建,通过两种MCP传输方式支持解决各种经典问题:标准I/O(IDE集成)和可流式传输的HTTP(Web客户端)。

🚀 快速开始(标准I/O): pip install gurddy_mcp 然后在您的IDE中进行配置

🌐 快速开始(HTTP): docker run -p 8080:8080 gurddy-mcp 或参阅部署指南

📦 PyPI 包: https://pypi.org/project/gurddy_mcp

主要特性

🎯 CSP 问题求解

  • N皇后问题: 在N×N棋盘上放置N个皇后,使其互不攻击
  • 图着色: 给顶点分配颜色,使相邻顶点颜色不同
  • 地图着色: 对地理区域进行着色,使相邻区域颜色不同
  • 数独求解器: 解决标准9×9数独谜题
  • 逻辑谜题: 爱因斯坦斑马谜题和自定义逻辑问题
  • 调度: 课程安排、会议安排、资源分配
  • 通用CSP求解器: 支持自定义约束满足问题

📊 LP/优化问题

  • 线性规划: 具有线性约束的连续变量优化
  • 混合整数规划: 具有整数和连续变量的优化
  • 生产计划: 带敏感度分析的资源受限生产优化
  • 投资组合优化: 在风险约束下的投资分配
  • 运输问题: 供应链和物流优化

🎮 极小极大/博弈论

  • 零和游戏: 求解两人游戏(石头剪刀布、匹配硬币、性别之战)
  • 混合策略纳什均衡: 寻找最优概率策略
  • 鲁棒优化: 在不确定性下最小化最坏情况损失
  • 最大化最小收益: 最大化最坏情况收益(保守策略)
  • 安全博弈: 防御者-攻击者资源分配
  • 鲁棒投资组合: 在市场情景下最小化最大损失
  • 生产计划: 保守生产决策(最大化最小利润)
  • 广告竞争: 市场份额游戏和竞争策略

🔬 SciPy 集成

  • 非线性投资组合优化: 使用SciPy优化的二次风险模型
  • 统计参数估计: 带约束的分布拟合(最大似然估计,分位数匹配)
  • 信号处理优化: FIR滤波器设计与频率响应优化
  • 混合CSP-SciPy: 离散设施选择+连续容量优化
  • 数值积分: 涉及积分和复杂函数的优化问题

🧮 经典数学问题

  • 24点游戏: 使用四个数字找到算术表达式以达到24
  • 鸡兔同笼问题: 经典约束问题,涉及头和脚
  • 迷你数独: 使用CSP技术解决4×4数独
  • 4皇后问题: 教育目的的简化N皇后问题
  • 0-1背包问题: 经典优化问题,涉及重量和价值约束

🔌 MCP 协议支持

  • 标准I/O传输: 本地IDE集成(Kiro,Claude Desktop,Cline等)
  • 可流式传输的HTTP传输: Web客户端和远程访问,可选流式传输
  • 统一接口: 两种传输方式使用相同的工具
  • JSON-RPC 2.0: 完全符合协议
  • 自动批准: 配置可信工具以实现无缝执行

安装

从PyPI安装(推荐)

# 安装最新稳定版本
pip install gurddy_mcp

# 或安装带有开发依赖项
pip install gurddy_mcp[dev]

从源码安装

# 克隆仓库
git clone https://github.com/novvoo/gurddy-mcp.git
cd gurddy-mcp

# 开发模式安装
pip install -e .

验证安装

# 测试MCP标准I/O服务器
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{} }' | gurddy-mcp

使用方法

1. MCP 标准I/O 服务器(主要接口)

gurddy-mcp命令是一个可以集成到工具如Kiro中的MCP标准I/O服务器。

方案A: 使用uvx(推荐 - 总是最新的版本)

使用uvx确保您始终运行最新发布的版本而无需手动安装。

~/.kiro/settings/mcp.json.kiro/settings/mcp.json中配置:

推荐: 显式指定最新版本

{
  "mcpServers": {
    "gurddy": {
      "command": "uvx",
      "args": ["gurddy-mcp@latest"],
      "env": {},
      "disabled": false,
      "autoApprove": [
        "run_example",
        "info",
        "install",
        "solve_n_queens",
        "solve_sudoku",
        "solve_graph_coloring",
        "solve_map_coloring",
        "solve_lp",
        "solve_production_planning",
        "solve_minimax_game",
        "solve_minimax_decision",
        "solve_24_point_game",
        "solve_chicken_rabbit_problem",
        "solve_scipy_portfolio_optimization",
        "solve_scipy_statistical_fitting",
        "solve_scipy_facility_location"
      ]
    }
  }
}

替代方案: 不指定版本(也使用最新版本)

{
  "mcpServers": {
    "gurddy": {
      "command": "uvx",
      "args": ["gurddy-mcp"],
      "env": {},
      "disabled": false,
      "autoApprove": [
        "run_example", "info", "install", "solve_n_queens", "solve_sudoku", 
        "solve_graph_coloring", "solve_map_coloring", "solve_lp", 
        "solve_production_planning", "solve_minimax_game", "solve_minimax_decision",
        "solve_24_point_game", "solve_chicken_rabbit_problem", 
        "solve_scipy_portfolio_optimization", "solve_scipy_statistical_fitting", 
        "solve_scipy_facility_location"
      ]
    }
  }
}

固定特定版本(如有需要)

{
  "mcpServers": {
    "gurddy": {
      "command": "uvx",
      "args": ["gurddy-mcp==<VERSION>"],
      "env": {},
      "disabled": false,
      "autoApprove": [
        "run_example", "info", "install", "solve_n_queens", "solve_sudoku", 
        "solve_graph_coloring", "solve_map_coloring", "solve_lp", 
        "solve_production_planning", "solve_minimax_game", "solve_minimax_decision",
        "solve_24_point_game", "solve_chicken_rabbit_problem", 
        "solve_scipy_portfolio_optimization", "solve_scipy_statistical_fitting", 
        "solve_scipy_facility_location"
      ]
    }
  }
}

为什么使用uvx?

  • ✅ 自动运行最新发布的版本
  • ✅ 无需手动安装或升级
  • ✅ 每次执行时隔离环境
  • ✅ 不与系统Python产生依赖冲突

前提条件: 首先安装uv:

# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh

# 或使用pip
pip install uv

# 或使用Homebrew(macOS)
brew install uv

方案B: 使用直接命令(安装后)

如果您已经通过pip安装了gurddy-mcp:

{
  "mcpServers": {
    "gurddy": {
      "command": "gurddy-mcp",
      "args": [],
      "env": {},
      "disabled": false,
      "autoApprove": [
        "run_example", "info", "install", "solve_n_queens", "solve_sudoku", 
        "solve_graph_coloring", "solve_map_coloring", "solve_lp", 
        "solve_production_planning", "solve_minimax_game", "solve_minimax_decision",
        "solve_24_point_game", "solve_chicken_rabbit_problem", 
        "solve_scipy_portfolio_optimization", "solve_scipy_statistical_fitting", 
        "solve_scipy_facility_location"
      ]
    }
  }
}

可用的MCP工具(共16个):

  • info - 获取gurddy MCP服务器信息和能力
  • install - 安装或升级gurddy包
  • run_example - 运行示例程序(n_queens,graph_coloring,minimax,scipy_optimization,classic_problems等)
  • solve_n_queens - 解决任意棋盘大小的N皇后问题
  • solve_sudoku - 使用CSP解决9×9数独谜题
  • solve_graph_coloring - 解决图着色问题,可配置颜色
  • solve_map_coloring - 解决地图着色问题(例如澳大利亚,美国)
  • solve_lp - 解决线性规划(LP)或混合整数规划(MIP)
  • solve_production_planning - 生产优化,可选敏感度分析
  • solve_minimax_game - 两人零和游戏(寻找纳什均衡)
  • solve_minimax_decision - 鲁棒优化(最小化最大损失或最大化最小收益)
  • solve_24_point_game - 使用算术运算解决24点游戏
  • solve_chicken_rabbit_problem - 解决经典鸡兔同笼问题,涉及头和脚约束
  • solve_scipy_portfolio_optimization - 使用SciPy解决非线性投资组合优化
  • solve_scipy_statistical_fitting - 使用SciPy解决统计参数估计
  • solve_scipy_facility_location - 使用混合CSP-SciPy方法解决设施选址问题

测试MCP服务器:

# 测试初始化
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}' | gurddy-mcp

# 测试列出工具
echo '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}' | gurddy-mcp

# 测试info工具
echo '{"jsonrpc":"2.0","id":10,"method":"tools/call","params":{"name":"info","arguments":{"":""}}}' | gurddy-mcp | jq 

# 测试运行示例工具
echo '{"jsonrpc":"2.0","id":10,"method":"tools/call","params":{"name":"run_example","arguments":{"example":"n_queens"}}}' | gurddy-mcp | jq

# 测试数独工具
cat <<EOF | tr -d '\n'|gurddy-mcp|jq
{"jsonrpc":"2.0","id":123,"method":"tools/call","params":{
  "name":"solve_sudoku",
  "arguments":{
    "puzzle":[
      [5,3,0,0,7,0,0,0,0],
      [6,0,0,1,9,5,0,0,0],
      [0,9,8,0,0,0,0,6,0],
      [8,0,0,0,6,0,0,0,3],
      [4,0,0,8,0,3,0,0,1],
      [7,0,0,0,2,0,0,0,6],
      [0,6,0,0,0,0,2,8,0],
      [0,0,0,4,1,9,0,0,5],
      [0,0,0,0,8,0,0,7,9]
    ]
  }
}}
EOF

2. MCP HTTP 服务器

启动HTTP MCP服务器(MCP协议通过可流式传输的HTTP):

本地开发:

uvicorn mcp_server.mcp_http_server:app --host 127.0.0.1 --port 1234

Docker:

# 构建镜像
docker build -t gurddy-mcp .

# 运行容器
docker run -p 8080:8080 gurddy-mcp

访问服务器:

测试HTTP MCP服务器:

HTTP传输(非流式传输):

# 列出可用工具
curl -X POST http://127.0.0.1:8080/mcp/http \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'

# 调用工具
curl -X POST http://127.0.0.1:8080/mcp/http \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"info","arguments":{}}}'

HTTP传输(流式传输,带Accept头):

# 列出工具并获取流式响应
curl -X POST http://127.0.0.1:8080/mcp/http \
  -H "Content-Type: application/json" \
  -H "Accept: text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'

# 调用工具并获取流式响应
curl -X POST http://127.0.0.1:8080/mcp/http \
  -H "Content-Type: application/json" \
  -H "Accept: text/event-stream" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"solve_n_queens","arguments":{"n":4}}}'

HTTP传输(流式传输,带X-Stream头):

# 启用流式传输的另一种方式
curl -X POST http://127.0.0.1:8080/mcp/http \
  -H "Content-Type: application/json" \
  -H "X-Stream: true" \
  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"info","arguments":{}}}'

Python客户端示例:

  • examples/streamable_http_client.py - 带流式传输示例的HTTP传输客户端

MCP 工具

服务器提供以下MCP工具:

info

获取关于gurddy包的信息。

{
  "name": "info",
  "arguments": {}
}

install

安装或升级gurddy包。

{
  "name": "install",
  "arguments": {
    "package": "gurddy",
    "upgrade": false
  }
}

run_example

运行gurddy示例。

{
  "name": "run_example",
  "arguments": {
    "example": "n_queens"
  }
}

可用示例: lp, csp, n_queens, graph_coloring, map_coloring, scheduling, logic_puzzles, optimized_csp, optimized_lp, minimax, scipy_optimization, classic_problems

solve_n_queens

解决N皇后问题。

{
  "name": "solve_n_queens",
  "arguments": {
    "n": 8
  }
}

solve_sudoku

解决9x9数独谜题。

{
  "name": "solve_sudoku",
  "arguments": {
    "puzzle": [[5,3,0,...], [6,0,0,...], ...]
  }
}

solve_graph_coloring

解决图着色问题。

{
  "name": "solve_graph_coloring",
  "arguments": {
    "edges": [[0,1], [1,2], [2,0]],
    "num_vertices": 3,
    "max_colors": 1
  }
}

solve_map_coloring

解决地图着色问题。

{
  "name": "solve_map_coloring",
  "arguments": {
    "regions": ["A", "B", "C"],
    "adjacencies": [["A", "B"], ["B", "C"]],
    "max_colors": 2
  }
}