Google OR-Tools server

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

MCP-ORツール

制約解決にGoogle OR-Toolsを用いたモデルコンテキストプロトコル(MCP)サーバー実装。標準化された制約モデル仕様を通じて大規模言語モデルで使用できるように設計されています。

概要

MCP-ORTools は、モデル コンテキスト プロトコルを介して 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ベースのモデル仕様
  • サポート対象:
    • 整数変数とブール変数(ドメイン: [最小値、最大値])
    • 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ファイルを参照

-
security - not tested
A
license - permissive license
-
quality - not tested

MCP-ORTools は、MCP を介して Google の OR-Tools 制約プログラミング ソルバーを大規模言語モデルと統合し、AI モデルで次のことが可能になります。

制約モデルの提出と検証、モデルパラメータの設定、制約充足と最適化問題の解決、ソリューションの取得と分析

  1. Overview
    1. Installation
      1. Model Specification
        1. Constraint Syntax
      2. Usage Examples
        1. Simple Optimization Model
        2. Knapsack Problem
      3. Features
        1. Supported Operations in Constraints
      4. Development
        1. Model Response Format
          1. License
            ID: 2wcoht4ueg