mcpField
O
OptimEngine - Operations Scheduling Solver

OptimEngine - Operations Scheduling Solver

ローカル
github.com/MicheleCampi生産性414 週間前に更新

OptimEngine - Operations Scheduling Solver について

OptimEngineはOR-Tools CP-SATを使い、スケジューリング、経路計画、梱包の問題を解き、不確実性下のリスクを分析します。数理最適化をAIエージェントやアプリに組み込みたい運用・エンジニアリングチーム向けです。

主な機能

  1. 01フレキシブルジョブショップのスケジュール最適化
  2. 02車両経路と梱包の最適化
  3. 03感度とロバスト性の分析
  4. 04モンテカルロによる不確実性評価
  5. 05パレート解と推奨案の生成

活用シーン

  1. 01先行関係のある機械作業のスケジュール作成
  2. 02時間枠を考慮した車両経路の計画
  3. 03パラメーター変更による解への影響評価

MCP 対応

MCP サーバーとして、SSEおよびStreamable HTTP経由で11の最適化ツールをMCPクライアントに公開し、OAuth 2.1にも対応します。同じ機能はRESTからも利用できます。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"optim-engine": {
"command": "npx",
"args": [
"-y",
"supergateway"
]
}
}
}
起動コマンドnpx -y supergateway

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmsupergateway

ツール

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

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

詳細

⚡ OptimEngine

本番環境向け最適化プラットフォーム — 4 層アーキテクチャ、OR-Tools CP-SAT、MCP ネイティブ、OAuth 2.1、オブザーバビリティを最優先。

テスト Python 3.12 ライセンス: MIT MCP 互換 稼働中


概要

OptimEngine は NP 困難な最適化問題(スケジューリング、ルーティング、パッキング)を解き、不確実性のもとでのリスク(感度、ロバスト、確率的、パレート)を定量化します。REST と MCP(SSE + Streamable HTTP、OAuth 2.1 対応)の両方で、4 つのインテリジェンスレベル(L1 決定論的 → L3 規範的)にわたる 11 個のツールを提供します。

このシステムは、3 つのエンジニアリング原則を中心に構築されています。数学的な正確性(LLM による近似ではなく、実際の CP-SAT ソルバーを使用)、本番環境での堅牢性(完全なオブザーバビリティスタック、ビジネスロジックのテストカバレッジ、負荷テスト済み)、エージェントフレンドリー(MCP デュアルスタック、OAuth、レート制限、JSON のみの契約)です。

アーキテクチャ

flowchart TB
    Client[AI Agents / MCP Clients / REST] --> Edge[Edge Proxy<br/>Vercel]
    Edge --> L2[L2 Core Gateway<br/>FastAPI · orchestration]
    L2 --> L1[L1 Solver Layer<br/>OR-Tools 9.15 CP-SAT<br/>FJSP · CVRPTW · Packing · Sensitivity · Robust · Stochastic · Pareto · Prescriptive]
    L2 --> L3[L3 Thin Proxies<br/>Payment rails · MCP discovery]
    L1 --> Obs[Observability<br/>OpenTelemetry · Prometheus · Grafana Cloud]
    L2 --> Obs
    L3 --> Obs

エッジプロキシを含む 4 層構成で、Railway の 6 つのサービスと Vercel の 1 つの関数に分散してデプロイされます。すべてのレイヤーに OpenTelemetry トレーシング、Prometheus ミドルウェアを組み込み、支払いイベント時には Telegram でアラートを送信します。

技術スタック

レイヤーテクノロジー
ランタイムPython 3.12、FastAPI、Uvicorn
ソルバーOR-Tools 9.15 CP-SAT、NumPy、カスタム Monte Carlo
MCPFastMCP(SSE + Streamable HTTP)、ScaleKit OAuth 2.1、PyJWT
バリデーションPydantic v2
オブザーバビリティOpenTelemetry SDK、Prometheus クライアント、Grafana Cloud
負荷テストLocust 2.43
CIGitHub Actions、pytest、pytest-cov
デプロイRailway(コンピューティング)、Vercel(エッジ)、GitHub Actions(CI)

機能

L1 — 決定論的最適化
ソルバー問題主な機能
スケジューリング柔軟なジョブショップ(FJSP)優先順位制約、時間枠、機械ごとの所要時間、稼働可能時間枠、品質ゲート、セットアップマトリクス
ルーティングCVRPTW容量、時間枠、GPS 距離、ドロップ訪問、4 つの目的関数
ビンパッキング多次元パッキング重量と体積の制約、アイテム数量、グループ、部分パッキング、4 つの目的関数
L2 — 不確実性下での最適化
モジュール機能出力
感度分析パラメーターを1つずつ摂動脆弱性マップ、感度スコア、重要フラグ、リスク順位
ロバスト最適化不確実性の範囲 → 最悪ケースへの備えロバスト解、ロバスト性の価格、実行可能性率
確率的最適化確率分布 → モンテカルロ法期待値、VaR、CVaR(90/95/99 %)、分布の概要
L2.5 — 多目的最適化
モジュール機能出力
パレートフロンティア競合する2〜4個の目的非劣解、トレードオフ比率、相関分析
L3 — 処方的
モジュール機能出力
処方的アドバイス履歴データ → 予測 → 最適化 → リスク → 推奨アクション、リスク調整済みメイクスパン、実行可能性リスク評価

パフォーマンス

本番環境のベンチマーク概要(完全なレポート:BENCHMARKS.md):

  • 757件のリクエストを処理し、失敗は0件。累計20分間の負荷テストによる結果です。
  • インフラの最低遅延:約200 ms(FastAPI + エッジプロキシ + 認証 + 可観測性のオーバーヘッド)
  • 現在のRailwayプランでは同時ユーザー数5人で飽和点に達し、それを超えるとシステムは段階的に性能が低下します
  • ボトルネックはインフラではなくソルバーのCPUです。スケーリングには、ゲートウェイを垂直に拡張するのではなく、L1で水平に拡張する方法が適しています

Grafanaのライブダッシュボード:public-dashboards/optimengine

テストとCI

Tests

  • 7つのソルバーモジュールにわたる121件のテストがすべて成功
  • 全体カバレッジ77 %、ビジネスロジックエンジンの平均カバレッジ88 %
  • GitHub Actionsにより、プッシュとプルリクエストのたびに実行
  • カバレッジレポートはビルド成果物としてアップロード(HTML + XML)

テストスイートではモックではなく、実際のCP-SATソルブを実行します。単なるコードパスではなく、数学的性質(CVaRの順序、容量制約、摂動に対する単調性)をアサーションで検証します。

v9.0.0の主な変更点

学術的なFJSPと実際の工場の運用とのギャップを埋める、4つのスケジューリングエンジンのアップグレードです。すべてv8のリクエストとの後方互換性があります。

機械ごとの処理時間 — 同じタスクでも、機械によって処理時間が異なります:

{
  "task_id": "milling",
  "duration": 100,
  "eligible_machines": ["CNC-1", "CNC-2"],
  "duration_per_machine": {"CNC-1": 120, "CNC-2": 80}
}

稼働可能時間帯 — 機械ごとに複数のシフトとメンテナンス時間を設定できます:

{
  "machine_id": "CNC-1",
  "availability_windows": [
    {"start": 0, "end": 480},
    {"start": 510, "end": 960}
  ]
}

品質ゲート — ジョブには最低品質が求められ、機械には歩留まり率があります:

{ "job_id": "ORD-BOSCH", "quality_min": 0.97 }
{ "machine_id": "CNC-4", "yield_rate": 0.99 }

段取り時間マトリックス — 順序に依存する切り替えコストを設定できます:

{
  "setup_times": [
    {"machine_id": "M1", "from_job_id": "J1", "to_job_id": "J2", "setup_time": 15}
  ]
}

クイックスタート

claude.ai(リモートMCPコネクター)

Settings → Integrationsから、リモートMCPコネクターとして追加します:

https://optim-engine-production.up.railway.app/mcp

OAuthで保護されたエンドポイントの場合:

https://optim-engine-production.up.railway.app/mcp/v2
REST(curl)
curl -X POST https://optim-engine-production.up.railway.app/optimize_schedule \
  -H "Content-Type: application/json" \
  -H "X-Engine-Key: $ENGINE_API_KEY" \
  -d '{
    "jobs": [
      {"job_id": "J1", "tasks": [
        {"task_id": "cut", "duration": 30, "eligible_machines": ["M1", "M2"]},
        {"task_id": "weld", "duration": 20, "eligible_machines": ["M2"]}
      ]}
    ],
    "machines": [{"machine_id": "M1"}, {"machine_id": "M2"}],
    "objective": "minimize_makespan"
  }'
MCPクライアントの設定
{
  "mcpServers": {
    "optim-engine": {
      "url": "https://optim-engine-production.up.railway.app/mcp"
    }
  }
}

検証ケーススタディ:MetalPrecision(合成データ)

イタリアの精密機械加工工場をモデルにした合成データセットです。CNC センター 4 台(2015~2023 年製)、実際の自動車・産業分野の顧客をモデルにした顧客注文 5 件、タスク 15 件を使用しています。7 つすべてのモジュールを対象に、ソルバーの動作をエンドツーエンドで検証するために使用しました。

ツール結果
optimize_schedule最適メイクスパン 225 分、納期遵守 5/5、平均稼働率 83.3 %、0.04 秒
validate_schedule違反ゼロ、改善提案 2 件
analyze_sensitivity3.6 秒で 73 回のソルブを実行し、最も感度の高いパラメーターを特定(感度スコア 8.9)
optimize_robust最悪ケース 210 分、ロバスト性の代償 7.7 %、実行可能性 100 %
optimize_paretoトレードオフのフロンティア:195/15 分 対 220/0 分、相関 -1.0
optimize_stochasticモンテカルロシナリオ 30 件、CVaR95 = 188.5、CV 4.7 %
prescriptive_advise予測 +1.3 %/期間、リスク調整後の範囲 167~183

データセット内の顧客名は説明用です。これは実際の顧客への導入ではなく、ソルバーの検証とデモを目的としたベンチマークシナリオです。

本番環境へのデプロイ

エンドポイント役割
optim-engine-production.up.railway.appL1 + L2 + L3 の計算(Railway、6 サービス)
エッジプロキシ(Vercel)CORS 処理、ヘッダーの書き換え、エッジキャッシュ
claude.ai の MCP コネクターClaude クライアント向けのツール提供

ディスカバリー

x402scan、Smithery、the402.ai でエージェントエコノミー向けに掲載されています。このシステムは、有料プランのエンドポイント向けに Base と Solana での x402 マイクロペイメントに対応しています。決済の統合については L3 のシンプロキシレイヤーに記載されていますが、プロジェクトの主な焦点ではありません。

ライセンス

MIT — LICENSE を参照してください。

ミケーレ・カンピ が開発しました。

コメント

MCP は初めてですか?

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

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