mcpField
M
MCP-ORTools

MCP-ORTools

ローカル
github.com/Jacck科学・教育2296 週間前に更新

MCP-ORTools について

MCP-ORTools は、Google OR-Tools による制約ソルバーを LLM から利用できるようにする MCP サーバーです。標準化された JSON 形式で制約モデルを記述し、制約充足問題や最適化問題を解く用途に向けられています。

主な機能

  1. 01JSON による モデル定義
  2. 02整数変数とブール変数のサポート
  3. 03線形制約と線形の目的関数
  4. 04タイムアウトを指定できる CP-SAT ソルバー
  5. 05OPTIMAL や INFEASIBLE などのステータス出力

活用シーン

  1. 01ナップサック問題の求解
  2. 02制約付きのポートフォリオ選択
  3. 03排他条件や必須条件を含む組み合わせ最適化

MCP 対応

本プロジェクトは MCP サーバーとして動作し、Claude Desktop などの MCP クライアントに OR-Tools の求解機能を公開します。モデルは JSON で送信され、解は JSON で返されます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

MCP-ORTools

制約充足に Google OR-Tools を使用する Model Context Protocol(MCP)サーバー実装です。標準化された制約モデル仕様を通じて、大規模言語モデルでの使用を想定しています。

概要

MCP-ORTools は、Model Context Protocol を通じて Google の OR-Tools 制約プログラミングソルバーと大規模言語モデルを統合し、AI モデルが次のことを行えるようにします。

  • 制約モデルの送信と検証
  • モデルパラメーターの設定
  • 制約充足問題と最適化問題の求解
  • 解の取得と分析

インストール

  1. パッケージをインストールします。
pip install git+https://github.com/Jacck/mcp-ortools.git
  1. Claude 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 ベースのモデル仕様
  • 次の項目をサポート:
    • 整数変数とブール変数(定義域:[min, max])
    • OR-Tools のメソッド構文を使用した線形制約
    • 線形最適化目標
    • タイムアウトとソルバーパラメーター
    • 二項制約と関係
    • ポートフォリオ選択問題
    • ナップサック問題
制約でサポートされる操作
  • 基本的な算術演算:+, -, *
  • 比較:.le(), .ge(), .eq(), .ne()
  • 変数の線形結合
  • 制約の組み合わせによる二値論理

開発

開発環境をセットアップするには:

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
}

ステータスの値:

  • OPTIMAL:最適解が見つかりました
  • FEASIBLE:実行可能解が見つかりました
  • INFEASIBLE:解が存在しません
  • UNKNOWN:解を特定できませんでした

ライセンス

MIT License — 詳細は LICENSE ファイルを参照してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。