MCP-ORツール
制約解決にGoogle OR-Toolsを用いたモデルコンテキストプロトコル(MCP)サーバー実装。標準化された制約モデル仕様を通じて大規模言語モデルで使用できるように設計されています。
概要
MCP-ORTools は、モデル コンテキスト プロトコルを介して Google の OR-Tools 制約プログラミング ソルバーを大規模言語モデルと統合し、AI モデルで次のことが可能になります。
制約モデルの送信と検証
モデルパラメータを設定する
制約充足問題と最適化問題を解く
ソリューションを取得して分析する
Related MCP server: Google Sheets MCP
インストール
パッケージをインストールします。
pip install git+https://github.com/Jacck/mcp-ortools.gitClaude Desktop を構成する
%APPDATA%\Claude\claude_desktop_config.json(Windows) または~/Library/Application Support/Claude/claude_desktop_config.json(macOS) に構成ファイルを作成します。
{
"mcpServers": {
"ortools": {
"command": "python",
"args": ["-m", "mcp_ortools.server"]
}
}
}モデル仕様
モデルは、次の 3 つの主要なセクションを持つ JSON 形式で指定されます。
variables: 変数とそのドメインを定義するconstraints: OR-Toolsメソッドを使用した制約のリストobjective: オプションの最適化目的
制約構文
制約には OR-Tools メソッド構文を使用する必要があります。
.__le__()、以下 (<=) を表します。.__ge__()より大きいか等しい (>=) を表します。等価性 (==) を表す
.__eq__()等しくない (!=) の場合は
.__ne__()
使用例
シンプルな最適化モデル
{
"variables": [
{"name": "x", "domain": [0, 10]},
{"name": "y", "domain": [0, 10]}
],
"constraints": [
"(x + y).__le__(15)",
"x.__ge__(2 * y)"
],
"objective": {
"expression": "40 * x + 100 * y",
"maximize": true
}
}ナップサック問題
例: 値が [3,1,2,1]、重量が [2,2,1,1] で、合計重量制限が 2 であるアイテムを選択します。
{
"variables": [
{"name": "p0", "domain": [0, 1]},
{"name": "p1", "domain": [0, 1]},
{"name": "p2", "domain": [0, 1]},
{"name": "p3", "domain": [0, 1]}
],
"constraints": [
"(2*p0 + 2*p1 + p2 + p3).__le__(2)"
],
"objective": {
"expression": "3*p0 + p1 + 2*p2 + p3",
"maximize": true
}
}追加の制約の例:
{
"constraints": [
"p0.__eq__(1)", // Item p0 must be selected
"p1.__ne__(p2)", // Can't select both p1 and p2
"(p2 + p3).__ge__(1)" // Must select at least one of p2 or p3
]
}特徴
OR-Tools CP-SATソルバーの完全サポート
JSONベースのモデル仕様
サポート対象:
整数変数とブール変数(ドメイン: [最小値、最大値])
OR-Toolsメソッド構文を使用した線形制約
線形最適化目標
タイムアウトとソルバーパラメータ
バイナリ制約と関係
ポートフォリオ選択の問題
ナップザックの問題
制約内でサポートされている操作
基本的な算術: +、-、*
比較: 。ル()、。げ()、。 eq (), .ね()
変数の線形結合
制約の組み合わせによるバイナリロジック
発達
開発用に設定するには:
git clone https://github.com/Jacck/mcp-ortools.git
cd mcp-ortools
pip install -e .モデル応答形式
ソルバーは JSON 形式でソリューションを返します。
{
"status": "OPTIMAL",
"solve_time": 0.045,
"variables": {
"p0": 0,
"p1": 0,
"p2": 1,
"p3": 1
},
"objective_value": 3.0
}ステータス値:
最適: 最適な解決策が見つかりました
実現可能: 実現可能な解決策が見つかった
実行不可能: 解決策は存在しない
不明: 解決策を決定できませんでした
ライセンス
MITライセンス - 詳細はLICENSEファイルを参照
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.