MCPソルバー
SAT、SMT、制約解決機能を大規模言語モデルに公開するモデル コンテキスト プロトコル (MCP) サーバー。
概要
MCP ソルバーは、モデル コンテキスト プロトコルを通じて SAT、SMT、制約解決を LLM と統合し、AI モデルが対話的に作成、編集、解決できるようにします。
MCP ソルバーのシステム アーキテクチャと理論的基礎の詳細な説明については、付随する研究論文「Stefan Szeider、 「MCP-Solver: Integrating Language Models with Constraint Programming Systems」 、arXiv:2501.00539、2024 を参照してください。
利用可能なツール
以下では、 item は(MinZinc/Pysat/Z3) コードの一部を指し、 model はエンコーディングを指します。
ツール名 | 説明 |
---|---|
clear_model | モデルからすべてのアイテムを削除します |
add_item | 特定のインデックスに新しいアイテムを追加する |
delete_item | インデックスのアイテムを削除 |
replace_item | インデックスの項目を置換 |
get_model | 番号付きアイテムで現在のモデルコンテンツを取得する |
solve_model | モデルを解く(タイムアウトパラメータ付き) |
システム要件
- PythonとプロジェクトマネージャーUV
- Python 3.11以上
- モード固有の要件: MiniZinc、PySAT、Python Z3 (必要なパッケージは pip 経由でインストールされます)
- オペレーティングシステム: macOS、Windows、Linux(適切な適応が必要)
インストール
MCP Solver には、Python 3.11 以上、 uv
パッケージ マネージャー、およびソルバー固有の依存関係 (MiniZinc、Z3、または PySAT) が必要です。
Windows、macOS、Linux の詳細なインストール手順については、 INSTALL.md を参照してください。
クイックスタート:
利用可能なモード / バックエンドの解決
MCPソルバーは3つの異なる動作モードを提供し、それぞれ異なる制約解決バックエンドと統合されます。各モードは特定の依存関係を必要とし、異なる種類の問題に対処するための独自の機能を提供します。
MiniZincモード
MiniZinc モードは、次の機能を備えた MiniZinc 制約モデリング言語との統合を提供します。
- グローバル制約を備えた豊富な制約式
- Chuffed制約ソルバーとの統合
- 最適化機能
get_solution
経由でソリューション値にアクセスする
依存関係: minizinc
パッケージが必要です ( uv pip install -e ".[mzn]"
)
設定: MiniZinc モードで実行するには、次を使用します。
PySATモード
PySAT モードでは、次の機能を使用して Python SAT 解決ツールキットと対話できます。
- CNF(連言正規形)を使用した命題制約モデリング
- さまざまな SAT ソルバー (Glucose3、Glucose4、Lingeling など) へのアクセス
- カーディナリティ制約 (at_most_k、at_least_k、exactly_k)
- ブール制約解決のサポート
依存関係: python-sat
パッケージが必要です ( uv pip install -e ".[pysat]"
)
設定: PySAT モードで実行するには、次を使用します。
Z3モード
Z3 モードでは、次の機能を備えた Z3 SMT (Satisfiability Modulo Theories) 解決機能にアクセスできます。
- 豊富な型システム: ブール値、整数、実数、ビットベクトル、配列
- 量指定子による制約解決
- 最適化機能
- 一般的なモデリングパターンのテンプレートライブラリ
依存関係: z3-solver
パッケージが必要です ( uv pip install -e ".[z3]"
)
設定: Z3 モードで実行するには、次を使用します。
MCP テストクライアント
MCPソルバーには、 ReActエージェントフレームワークをベースにした、開発、実験、診断用のMCPクライアントが含まれています。このクライアントはLLMとMCPサーバー間の仲介役として機能し、自然言語による問題記述を形式制約プログラミングによるソリューションに変換します。
インストール
クライアントはLLMプロバイダからのAPIキーを必要とします。Anthropic(デフォルトのLLMはClaude Sonnet 3.7)の場合は、 ANTHROPIC_API_KEY
環境変数を設定してください。この環境変数は、ご自身の環境で設定するか、プロジェクトルートの.env
ファイルに含めることができます。
使用法
クライアントは、各ソルバー バックエンドに特化したコマンドを提供します。
例
例1:鋳造問題(MiniZinc)
これは、George Johnson (NYT、1999 年 7 月 13 日) の例に基づいています。
ユーザー
ある演出家が、純真な女優アルバレスか、甥の俳優コーエンのどちらかを作品に出演させる義務があるとします。しかし、アルバレスさんはコーエン氏(彼女の元恋人)との共演を断り、新たな恋人である俳優ダベンポートをキャストに加えるよう要求します。プロデューサーは、自身の好意に応えたい一心で、俳優ブラニスラフスキーに出演を強く求めます。しかし、ブラニスラフスキー氏はアルバレスさんやダベンポート氏との共演は断ります。演出家は、この劇に出演させることができるでしょうか?
システム: clear_model
Copy
システム: add_item
(複数)
Copy
システム: solve_model
Copy
解決策 (コーエンとブラニスラフスキーをキャストし、アルバレスやダベンポートはキャストしない) はすべての制約を満たします。
例2: Nクイーン問題 (MiniZinc)
ユーザー
n×nのチェス盤にn個のクイーンを置けるかどうか試してみましょう。n=10、20、30、40で試し、解く時間を比較してみましょう。
システム: clear_model
Copy
システム: add_item
(複数)
Copy
システム: solve_model
(nの値を変更してn=10、20、30、40で実行)
解決時間の比較: n=10: 0.001sn=20: 0.005sn=30: 0.040sn=40: 0.043s
テストされたすべてのボードサイズに対してソリューションが存在します。時間計算量は非線形に増加しますが、n=40までは管理可能な範囲に留まります。
例3: 巡回セールスマン問題 (MiniZinc)
ユーザー
ウィーンに拠点を置く営業担当者が、オーストリア全土を巡るツアーを計画し、各州都を一度ずつ訪問したいと考えています。最短ルートを見つけるお手伝いをお願いします。距離(km):1=ウィーン、2=ザンクト・ペルテン、3=アイゼンシュタット、4=リンツ、5=グラーツ、6=クラーゲンフルト、7=ザルツブルク、8=インスブルック、9=ブレゲンツ
[ユーザーメッセージに距離マトリックス表が提供されています]
システム: add_item
(複数)
Copy
システム: solve_model
Copy
最適ルート: ウィーン→ザンクト・ペルテン→リンツ→ザルツブルク→ブレゲンツ→インスブルック→クラーゲンフルト→グラーツ→アイゼンシュタット→ウィーン、総距離は1,564km。
フィードバック
このフォームから著者にフィードバックを送信できます。
免責事項
このMCPソルバーはプロトタイプ段階であり、慎重に使用する必要があります。ユーザーは実験することをお勧めしますが、クリティカルな環境での使用は自己責任となります。
ライセンス
このプロジェクトは MIT ライセンスに基づいてライセンスされています - 詳細についてはLICENSEファイルを参照してください。
This server cannot be installed
local-only server
The server can only run on the client's local machine because it depends on local resources.
MiniZinc 制約解決機能を大規模言語モデルに公開するモデル コンテキスト プロトコル (MCP) サーバー。
Related MCP Servers
- AsecurityFlicenseAqualityA Model Context Protocol (MCP) server that optimizes token usage by caching data during language model interactions, compatible with any language model and MCP client.Last updated -4JavaScript
- -securityAlicense-qualityA Model Context Protocol (MCP) server that helps large language models index, search, and analyze code repositories with minimal setupLast updated -9PythonMIT License
- -securityAlicense-qualityA Model Context Protocol (MCP) compliant server that allows Large Language Models (LLMs) to search and retrieve content from microCMS APIs.Last updated -TypeScriptMIT License
- -securityAlicense-qualityA Model Context Protocol server that enables large language models to interact with Linear's issue tracking system, allowing management of issues, projects, teams, and other Linear resources.Last updated -TypeScriptMIT License