概要
インストール
コンテンツ詳細
代替品
Gurddy MCPサーバーとは?
Gurddy MCPサーバーは、Model Context Protocol (MCP)に基づくインテリジェントな解決サーバーで、さまざまな数学的最適化と論理推論問題を解決するために特別に設計されています。複数の解決エンジンを統合し、シンプルな数独ゲームから複雑なポートフォリオ最適化まで、さまざまな問題を処理することができます。Gurddy MCPサーバーの使い方は?
2つの方法で使用できます:1) サポートされているAI IDEでMCPサーバーを設定する;2) HTTP APIを介して直接解決機能を呼び出す。サーバーは自動的に問題のタイプを分析し、適切な解決方法を選択します。適用シナリオ
教育学習、ビジネス決定、ゲーム開発、金融分析、生産計画など、数学的最適化と論理推論が必要なシナリオに適しています。学生が数学問題を解決する場合でも、専門家がビジネス最適化を行う場合でも、恩恵を受けることができます。主要機能
使い方
使用例
よくある質問
関連リソース
インストール
{
"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"
]
}
}
}
{
"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"
]
}
}
}🚀 Gurddy MCP Server
Gurddy MCP Serverは、制約充足問題(CSP)、線形計画(LP)、ミニマックス最適化、およびSciPyを用いた高度な最適化問題を解くための包括的なモデルコンテキストプロトコル(MCP)サーバーです。gurddy最適化ライブラリとSciPyを統合して構築され、stdio(IDE統合用)とストリーミング可能なHTTP(Webクライアント用)の2つのMCPトランスポートを通じて、さまざまな古典的な問題を解くことができます。
🚀 クイックスタート (Stdio): 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最適化を用いた二次リスクモデル
- 統計的パラメータ推定: 制約付きの分布フィッティング(MLE、分位数マッチング)
- 信号処理最適化: 周波数応答最適化を用いたFIRフィルタ設計
- ハイブリッドCSP-SciPy: 離散的な施設選択と連続的な容量最適化の組み合わせ
- 数値積分: 積分と複雑な関数を含む最適化問題
🧮 古典的な数学問題
- 24点ゲーム: 4つの数字を使って24になる算術式を見つける
- 鶏とウサギの問題: 頭と足の制約を持つ古典的な制約問題
- ミニ数独: CSP技術を用いた4×4の数独ソルバー
- 4クイーン問題: 教育目的で簡略化されたNクイーン問題
- 0-1ナップサック問題: 重さと価値の制約を持つ古典的な最適化問題
🔌 MCPプロトコルサポート
- Stdioトランスポート: ローカルの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 stdioサーバーをテスト
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | gurddy-mcp
💻 使用例
1. MCP Stdioサーバー (主要なインターフェース)
主なgurddy-mcpコマンドは、Kiroなどのツールと統合できるMCP stdioサーバーです。
オプション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: 直接コマンドを使用する (インストール後)
gurddy-mcpをpipでインストールした場合は、以下のように使用できます。
{
"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- PuLPを使用して線形計画(LP)または混合整数計画(MIP)問題を解くsolve_production_planning- オプションの感度分析を含む生産計画最適化問題を解くsolve_minimax_game- ミニマックス(ゲーム理論)を使用して二人の零和ゲームを解くsolve_minimax_decision- 不確実性下でのミニマックス決定問題(ロバスト最適化)を解くsolve_24_point_game- 4つの数字を使って算術演算で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
# 情報ツールをテスト
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サーバー(ストリーミング可能なHTTP上のMCPプロトコル)を起動します。
ローカル開発用
uvicorn mcp_server.mcp_http_server:app --host 127.0.0.1 --port 8080
Dockerを使用する場合
# イメージをビルドする
docker build -t gurddy-mcp .
# コンテナを実行する
docker run -p 8080:8080 gurddy-mcp
サーバーにアクセスする
- ルート: http://127.0.0.1:8080/
- ヘルスチェック: http://127.0.0.1:8080/health
- HTTPトランスポート: http://127.0.0.1:8080/mcp/http (POST - 通常とストリーミングの両方をサポート)
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": 3
}
}
solve_map_coloring
地図彩色問題を解きます。
{
"name": "solve_map_coloring",
"arguments": {
"regions": ["A", "B", "C"],
"adjacencies": [["A", "B"], ["B", "C"]],
"max_colors": 2
}
}
solve_lp
PuLPを使用して線形計画(LP)または混合整数計画(MIP)問題を解きます。
{
"name": "solve_lp",
"arguments": {
"profits": {
"ProductA": 30,
"ProductB": 40
},
"consumption": {
"ProductA": {"Labor": 2, "Material": 3},
"ProductB": {"Labor": 3, "Material": 2}
},
"capacities": {
"Labor": 100,
"Material": 120
},
"integer": true
}
}
solve_production_planning
オプションの感度分析を含む生産計画最適化問題を解きます。
{
"name": "solve_production_planning",
"arguments": {
"profits": {
"ProductA": 30,
"ProductB": 40
},
"consumption": {
"ProductA": {"Labor": 2, "Material": 3},
"ProductB": {"Labor": 3, "Material": 2}
},
"capacities": {
"Labor": 100,
"Material": 120
},
"integer": true,
"sensitivity_analysis": false
}
}
solve_minimax_game
ミニマックス(ゲーム理論)を使用して二人の零和ゲームを解きます。
{
"name": "solve_minimax_game",
"arguments": {
"payoff_matrix": [
[0, -1, 1],
[1, 0, -1],
[-1, 1, 0]
],
"player": "row"
}
}
指定されたプレイヤーの最適な混合戦略とゲームの値を返します。
solve_minimax_decision
不確実性下でのミニマックス決定問題(ロバスト最適化)を解きます。
{
"name": "solve_minimax_decision",
"arguments": {
"scenarios": [
{"A": -0.2, "B": -0.1, "C": 0.05},
{"A": 0.3, "B": 0.2, "C": -0.02},
{"A": 0.05, "B": 0.03, "C": -0.01}
],
"decision_vars": ["A", "B", "C"],
"budget": 100.0,
"objective": "minimize_max_loss"
}
}
目的: minimize_max_loss (ロバストポートフォリオ) または maximize_min_gain (保守的な生産)
solve_24_point_game
4つの数字を使って算術演算で24点ゲームを解きます。
{
"name": "solve_24_point_game",
"arguments": {
"numbers": [1, 2, 3, 4]
}
}
+, -, *, / と括弧を使用して正確に24になる算術式を見つけます。
solve_chicken_rabbit_problem
頭と足の制約を持つ古典的な鶏とウサギの問題を解きます。
{
"name": "solve_chicken_rabbit_problem",
"arguments": {
"total_heads": 35,
"total_legs": 94
}
}
総頭数と総足数から鶏(2本の足)とウサギ(4本の足)の数を決定します。
solve_scipy_portfolio_optimization
SciPyを使用して二次リスクモデルで非線形ポートフォリオ最適化問題を解きます。
{
"name": "solve_scipy_portfolio_optimization",
"arguments": {
"expected_returns": [0.12, 0.18, 0.15],
"covariance_matrix": [
[0.04, 0.01, 0.02],
[0.01, 0.09, 0.03],
[0.02, 0.03, 0.06]
],
"risk_tolerance": 1.0
}
}
平均分散最適化を使用して、リターンからリスクペナルティを引いた値を最大化するようにポートフォリオのウェイトを最適化します。
solve_scipy_statistical_fitting
SciPyを使用して分布フィッティングで統計的パラメータ推定問題を解きます。
{
"name": "solve_scipy_statistical_fitting",
"arguments": {
"data": [1.2, 2.3, 1.8, 2.1, 1.9, 2.4, 1.7, 2.0],
"distribution": "normal"
}
}
データに統計的分布("normal", "exponential", "uniform")をフィットさせ、適合度テストを提供します。
solve_scipy_facility_location
ハイブリッドCSP-SciPyアプローチを使用して施設配置問題を解きます。
{
"name": "solve_scipy_facility_location",
"arguments": {
"customer_locations": [[0, 0], [10, 10], [5, 15]],
"customer_demands": [100, 150, 80],
"facility_locations": [[2, 3], [8, 12], [6, 8]],
"max_facilities": 2,
"fixed_cost": 100.0
}
}
離散的な施設選択(CSP)と連続的な容量最適化(SciPy)を組み合わせて、総コストを最小化します。
Dockerデプロイメント
ビルドと実行
# イメージをビルドする
docker build -t gurddy-mcp .
# コンテナを実行する
docker run -p 8080:8080 gurddy-mcp
# または環境変数を指定する
docker run -p 8080:8080 -e PORT=8080 gurddy-mcp
Docker Compose
version: '3.8'
services:
gurddy-mcp:
build: .
ports:
- "8080:8080"
environment:
- PYTHONUNBUFFERED=1
restart: unless-stopped
出力例
Nクイーン問題
POST /solve-n-queens
{
"n": 8
}
論理パズル
$ python -m mcp_server.server run-example logic_puzzles
Solving Simple Logic Puzzle:
Solution:
Position 1: Alice has Cat in Green house
Position 2: Bob has Dog in Red house
Position 3: Carol has Fish in Blue house
Solving the Famous Zebra Puzzle (Einstein's Riddle)...
ANSWERS:
Who owns the zebra? Ukrainian (House 5)
Who drinks water? Japanese (House 2)
HTTP APIの例
古典的な問題解決
オーストラリアの地図彩色
import requests
response = requests.post("http://127.0.0.1:8080/solve-map-coloring", json={
"regions": ['WA', 'NT', 'SA', 'QLD', 'NSW', 'VIC', 'TAS'],
"adjacencies": [
['WA', 'NT'], ['WA', 'SA'], ['NT', 'SA'], ['NT', 'QLD'],
['SA', 'QLD'], ['SA', 'NSW'], ['SA', 'VIC'],
['QLD', 'NSW'], ['NSW', 'VIC']
],
"max_colors": 4
})
8クイーン問題
response = requests.post("http://127.0.0.1:8080/solve-n-queens",
json={"n": 8})
利用可能なサンプル
すべてのサンプルは、gurddy-mcp run-example <name> または python -m mcp_server.server run-example <name> を使用して実行できます。
CSPのサンプル ✅
- n_queens - Nクイーン問題(4、6、8クイーンのビジュアルボード表示付き)
- graph_coloring - グラフ彩色(三角形、正方形、ペテルセングラフ、ホイールグラフ)
- map_coloring - 地図彩色(オーストラリア、米国西部各州、ヨーロッパ)
- scheduling - スケジューリング問題(コーススケジューリング、会議スケジューリング、リソース割り当て)
- logic_puzzles - 論理パズル(単純な論理パズル、アインシュタインのシマウマパズル)
- optimized_csp - 高度なCSP技術(数独ソルバー)
LPのサンプル ✅
- lp / optimized_lp - 線形計画のサンプル:
- リスク制約付きのポートフォリオ最適化
- 輸送問題(サプライチェーン最適化)
- 制約緩和分析
- 問題サイズによるパフォーマンス比較
ミニマックスのサンプル ✅
- minimax - ミニマックス最適化とゲーム理論:
- ジャンケン(零和ゲーム)
- ペニーマッチング(協調ゲーム)
- 性別の戦い(混合戦略均衡)
- ロバストポートフォリオ最適化(最大損失を最小化する)
- 生産計画(最小利益を最大化する)
- セキュリティリソース割り当て(防御者と攻撃者のゲーム)
- 広告競争(市場シェアゲーム)
SciPy統合のサンプル ✅
- scipy_optimization - SciPyを用いた高度な最適化:
- 二次リスクモデルを用いた非線形ポートフォリオ最適化
- 統計的パラメータ推定(制約付きの分布フィッティング)
- 信号処理最適化(FIRフィルタ設計)
- ハイブリッドCSP-SciPy施設配置(離散と連続の最適化)
- 最適化目的における数値積分
古典的な数学問題のサンプル ✅
- classic_problems - 教育用の数学問題解決:
- 24点ゲーム(4つの数字を使って24になる算術式)
- 鶏とウサギの問題(古典的な制約充足)
- 4×4のミニ数独(簡略化されたCSPのデモンストレーション)
- Nクイーン問題の変種(教育用)
- 0-1ナップサック問題(古典的な最適化)
サポートされる問題タイプ
🧩 CSP問題
- Nクイーン: 任意のボードサイズ(N=4からN=100以上)の古典的なNクイーン問題
- グラフ彩色: 任意のグラフ(三角形、ペテルセングラフ、ホイールグラフなど)の頂点着色
- 地図彩色: 地理的な地域の着色(オーストラリア、米国、ヨーロッパの地図)
- 数独: 制約伝播を用いた標準の9×9の数独パズル
- 論理パズル: アインシュタインのシマウマパズルやカスタムの論理推論問題
- スケジューリング: 時間制約付きのコーススケジューリング、会議室、リソース割り当て
📈 最適化問題
- 線形計画: 線形制約を持つ連続変数の最適化
- 整数計画: 離散変数の最適化(生産数量、割り当て)
- 混合整数計画: 連続変数と離散変数の組み合わせ
- 生産計画: 多製品のリソース制約下での最適化
- ポートフォリオ最適化: リスクとリターンの制約付きの投資配分
- 輸送問題: サプライチェーンの最適化(倉庫から顧客へ)
🎲 ゲーム理論とロバスト最適化
- 零和ゲーム: ジャンケン、ペニーマッチング、性別の戦い
- 混合戦略ナッシュ均衡: 両プレイヤーの最適な確率的戦略
- ミニマックス決定: 不確実性シナリオ全体での最悪ケースの損失を最小化する
- マキシミン決定: 最悪ケースの利益を最大化する(保守的な戦略)
- ロバストポートフォリオ: 市場シナリオ全体での最大損失を最小化する
- セキュリティゲーム: 防御者と攻撃者のリソース割り当て問題
🔬 SciPyを用いた高度な最適化
- 非線形ポートフォリオ最適化: シャープレシオを最大化する二次リスクモデル
- 統計的パラメータ推定: MLEと分位数法を用いた分布フィッティング
- 信号処理: 周波数応答最適化を用いたFIRフィルタ設計
- ハイブリッド最適化: Gurddy CSPとSciPyの連続最適化を組み合わせる
- 数値積分: 積分を含む複雑な最適化問題
🧮 古典的な教育用問題
- 24点ゲーム: 4つの数字を使って24になる算術式を見つける
- 鶏とウサギの問題: 頭と足の制約付きの古典的な制約充足
- ミニ数独: CSP技術を用いた4×4の数独解決
- Nクイーン問題の変種: 古典的な問題の教育用バージョン
- ナップサック問題: 重さと価値の制約付きの0-1ナップサック最適化
パフォーマンス機能
- 高速な解決: 中小規模の問題(NクイーンN≤12、グラフ<50頂点)に対してミリ秒単位の応答
- スケーラブル: 大規模な問題(NクイーンN=100以上、1000以上の変数を持つLP)を処理できる
- メモリ効率: バックトラッキングサーチと制約伝播によりメモリ使用量を最小化する
- 拡張可能: カスタム制約、目的関数、問題タイプをサポートする
- 並行処理可能: HTTP APIが並行リクエスト処理をサポートする
- 本番環境対応: Dockerデプロイメント、ヘルスチェック、エラーハンドリング
パフォーマンスベンチマーク
標準的なハードウェアでの典型的な実行時間:
- CSPのサンプル: 0.4 - 0.5秒(Nクイーン、グラフ彩色、論理パズル)
- LPのサンプル: 0.8 - 0.9秒(ポートフォリオ、輸送、生産計画)
- ミニマックスのサンプル: 0.3 - 0.5秒(ゲーム解決、ロバスト最適化)
- SciPyのサンプル: 0.5 - 1.2秒(非線形最適化、統計的フィッティング)
- 古典的な問題: 0.1 - 0.3秒(24点、鶏とウサギ、ミニ数独)
- 数独: 標準の9×9のパズルで<0.1秒
- 大規模なNクイーン: N=100で約2 - 3秒
トラブルシューティング
一般的なエラー
"gurddy package not available":python -m mcp_server.server installでインストールします。"No solution found": 与えられた制約の下で解が存在しません。制約を緩和してみてください。"Invalid input types": 入力パラメータのデータ型を確認してください。"Unknown example":python -m mcp_server.server run-example --helpで利用可能なサンプルを確認してください。
インストール問題
# 個別にインストール
pip install gurddy pulp>=2.6.0 scipy>=1.9.0 numpy>=1.21.0
# インストールを確認
python -c "import gurddy, pulp, scipy, numpy; print('All dependencies installed')"
サンプルのデバッグ
サンプルを直接実行してデバッグします。
# gurddy_mcpをインストールした後
python -c "from mcp_server.examples import n_queens; n_queens.main()"
# またはソースから - CSPのサンプル
python mcp_server/examples/n_queens.py
python mcp_server/examples/graph_coloring.py
python mcp_server/examples/logic_puzzles.py
python mcp_server/examples/optimized_csp.py
# LPと最適化のサンプル
python mcp_server/examples/optimized_lp.py
# ゲーム理論とミニマックスのサンプル
python mcp_server/examples/minimax.py
# SciPy統合のサンプル(ポートフォリオ、統計的フィッティング、施設配置を含む)
python mcp_server/examples/scipy_optimization.py
# 古典的な数学問題(24点ゲーム、鶏とウサギの問題を含む)
python mcp_server/examples/classic_problems.py
# 個々のMCPツールを直接テスト
python -c "from mcp_server.handlers.gurddy import solve_24_point_game; print(solve_24_point_game([1,2,3,4]))"
python -c "from mcp_server.handlers.gurddy import solve_chicken_rabbit_problem; print(solve_chicken_rabbit_problem(35, 94))"
python -c "from mcp_server.handlers.gurddy import solve_scipy_portfolio_optimization; print(solve_scipy_portfolio_optimization([0.12, 0.18], [[0.04, 0.01], [0.01, 0.09]]))"
SciPy統合の要件
SciPy統合のサンプルには追加の依存関係が必要です。
# SciPyとNumPyをインストール
pip install scipy>=1.9.0 numpy>=1.21.0
# SciPy統合を確認
python -c "import scipy.optimize, numpy; print('SciPy integration ready')"
SciPyのサンプルには以下が含まれます
- 非線形ポートフォリオ最適化: シャープレシオを最大化する二次リスクモデル
- 統計的パラメータ推定: MLEと分位数法を用いた分布フィッティング
- 信号処理: 周波数応答最適化を用いたFIRフィルタ設計
- ハイブリッドCSP-SciPy: 離散と連続の最適化を組み合わせた施設配置
- 数値積分: 積分を含む複雑な最適化問題
開発
アーキテクチャ
このプロジェクトは、中央集権型のツールレジストリと自動生成されたスキーマを使用して、stdioサーバーとHTTPサーバーの間の一貫性を確保します。
- ツール定義:
mcp_server/tool_definitions.py(基本的なメタデータのみ) - 自動生成されたレジストリ:
mcp_server/tool_registry.py(関数シグネチャから生成されたスキーマ) - Stdioサーバー:
mcp_server/mcp_stdio_server.py(IDE統合用) - HTTPサーバー:
mcp_server/mcp_http_server.py(Webクライアント用) - ハンドラー:
mcp_server/handlers/gurddy.py(ツールの実装) - スキーマジェネレーター:
scripts/generate_registry.py(関数シグネチャからスキーマを自動生成)
新しいツールの追加
mcp_server/handlers/gurddy.pyでハンドラーを実装します。
def my_new_tool(param1: str, param2: int = 10) -> Dict[str, Any]:
"""Tool implementation with proper type hints."""
return {"result": "success"}
mcp_server/tool_definitions.pyで基本的なメタデータを追加します。
{
"name": "my_new_tool",
"function": "my_new_tool",
"description": "Description of what the tool does",
"category": "optimization",
"module": "handlers.gurddy"
}
- スキーマを生成して確認します。
# 関数シグネチャからスキーマを自動生成
python scripts/generate_registry.py
# 一貫性を確認
python scripts/verify_consistency.py
pytest tests/test_consistency.py -v
以上で完了です!スキーマは関数の型ヒントから自動的に生成され、stdioサーバーとHTTPサーバーの両方が新しいツールを認識します。
カスタム制約
# gurddyでカスタム制約を定義
def custom_constraint(var1, var2):
return var1 + var2 <= 10
model.addConstraint(gurddy.FunctionConstraint(custom_constraint, (var1, var2)))
テスト
# すべてのテストを実行
pytest
# 特定のテストスイートを実行
pytest tests/test_consistency.py -v
pytest tests/test_tool_registry.py -v
# ツールレジストリの一貫性を確認
python scripts/verify_consistency.py
📄 ライセンス
このプロジェクトはオープンソースライセンスの下でライセンスされています。詳細については、LICENSEファイルを参照してください。
代替品











