oas-execute-mcp
oas-execute-mcp
言語モデルとブローカー注文の間に安全レイヤーを設けるMCPサーバー。
モデルがorder_submitを呼び出すと、ブローカーに届く前にリクエストは6つの独立したチェックを通過します。どのチェックも単独で拒否できます。書き込みパスでは7つのチェックになります。これは、ストップロスルールが新規注文ではなく修正を管理するためです。許可された試行も拒否された試行もすべて、理由を付けて監査ログに追加されます。ブローカー自体は交換可能なバックエンドの背後にあるため、同じツールインターフェースが、モデルにはどちらか分からないまま、ディスク上のシミュレーターまたは稼働中のMetaTrader 5ターミナルに対して動作します。
独自のチャネル上で、1トレードごとの人間の承認なしに10万ドルのプロップファーム評価口座に対して注文を送信していたエージェントのために構築されました。ミスサイズの注文はテスト失敗ではなかったケースです。
存在理由
エージェントに資金を使うツールを与える際の興味深い点は、成功パスではありません。以下の点です:
ツールが中途半端に成功したときに返すもの — 注文は約定したがストップが付かなかった場合;
タイムアウトが発生した場合の着地点 — ブローカーが応答せず、約定したかどうか不明な場合;
それより上のレイヤーが失敗を成功として報告するのを防ぐ方法。
したがって、ここでの設計ルールは、何が起こったかについてのモデル自身の説明を決して信頼しないことです。ポジション状態は、呼び出しのたびにブローカーから再読み取りされます。拒否は明示的で、数が少なく、プロンプトの横ではなく実行パスに直接配置されます。
Related MCP server: mt5-mcp
安全レイヤー
7つのチェック、それぞれが独立して拒否可能で、すべて機械可読な理由とともにログに記録されます。そのうち6つはorder_submitとブローカーの間に立ちます。check_sl_widen_blockは修正を管理するため、新規注文には決して適用されません:
チェック | 拒否する条件 |
| ディスク上にキルスイッチファイルが存在する。即座に作動、再起動不要。 |
| 設定された上限よりも速く注文が到着している。 |
| 上流の決定レコードが古い — 古い承認に基づく注文は許可されない。 |
| サイズ、売買方向、または銘柄がブローカーの報告と一致しない。 |
| ストップロス修正がストップを価格から遠ざける方向に動かす。 |
| このセッションでの手動オーバーライドが許可回数を超えた。 |
| 口座 equity が設定された最低値を下回った。 |
監査追記はすべてのパスでゲートの後に実行されます。許可された場合も拒否された場合も同様です。これは記録であり、チェックではありません。痕跡を残さない拒否は、システムの障害として扱われます。
safety.pyはこれらをrun_entry_safety_gates、run_modify_safety_gates、run_close_safety_gatesにグループ化しているため、決済が新規注文のみを管理すべきルールによってブロックされることはありません。これは、安全システムが保護すべきポジションにトレーダーを閉じ込めてしまう障害モードを防ぎます。
ツールインターフェース
7つのツール:order_submit · order_modify · order_close · close_all · position_list · account_info · health_check
アーキテクチャ
model tool call
│
▼
server.py ── MCP stdio server, tool schemas + dispatch
│
▼
safety.py ── 7 gates, audit log, kill switch ◄── refuses here, before the broker
│
▼
backends/ ── swappable
├── stub.py on-disk simulation, no broker, deterministic
└── mt5_demo.py file bridge → MetaTrader 5 (Wine/macOS) via an MQL5 EA
localhost HTTP listener, shared-secret token on the firing routeMQL5エキスパートアドバイザー(oas_execute_mcp/mql5/OAS_Bridge.mq5)はlocalhostエンドポイントをポーリングし、ターミナル側で実行します。backends/base.pyがインターフェースです。ブローカーを追加するにはこれを実装するだけで、バックエンドより上の層は変更されません。
インストール
pip install -e ".[dev]"MCPクライアントで以下のように指定します:
{
"mcpServers": {
"oas-execute": {
"command": "/path/to/.venv/bin/python",
"args": ["-m", "oas_execute_mcp.server"],
"cwd": "/path/to/parent-of-this-package"
}
}
}バックエンドの選択とパスは環境変数で設定します:
変数 | デフォルト | 目的 |
|
|
|
|
| 状態、監査ログ、口座記録 |
| Wine上のMT5デフォルト | ブリッジ用のMT5 |
デフォルトではstubで出荷されます。ブローカーを指定するには、明示的に選択する必要があります。
このリポジトリに認証情報は一切含まれず、含めるべきではありません。 MT5バックエンドは既にログインしているターミナルに従います。読み取る口座記録は文書用(ログインとサーバー名)であり、パスワードは含まれず、バージョン管理外に置くべきものです。
テスト
PYTHONPATH=. python3 tests/test_smoke.py # full submit → modify → close cycle + failure modes
for t in tests/test_*.py; do PYTHONPATH=. python3 "$t"; done # the whole suite
python3 -m pytest tests/ -q # same suite, if you would rather type this9つのテストファイルがあり、クリーンチェックアウトですべて合格します。各ファイルは自己完結型のチェッカーです。モジュールスコープでアサーションを実行し、失敗時は非ゼロで終了するため、インタープリター以外は必要ありません。tests/suite_test.pyは同じスクリプトをサブプロセスとして駆動するため、pytestも有効なエントリポイントです。これはブリッジであり、2番目のスイートではありません。一方のランナーにしか見えないテストのバージョンは存在しません。このテストは、スタブに対する送信/修正/決済サイクル、約定後のストップロスアンカリングと再導出、ブリッジのクライアントモードハンドシェイク、相場とポジションのルート、そしてエラー形状のペイロードが空のポジションリストとして消費されるのを防ぐゲート(実際のインシデントで、タイムアウトが{"positions": []}を返し、下流のリーダーがそれを信じたケース)をカバーしています。
2つのテストは、対象が存在しない場合にパスではなくスキップします。 これらはこのサーバーのコンシューマーをテストするため、ホストプロジェクト(OAS_HOST_REPO、OAS_RECONCILE_CMD)が必要です。確認すべきものが存在しないときに静かにグリーンになるチェックは、チェックがないより悪いです。
ステータスと制限事項
stubバックエンドは完全で決定論的です。mt5_demoは、macOS上のWineで動作するMetaTrader 5ターミナルに対して本番環境で使用されています。check_rate_limitは実装されていますが、テストベンチでは使用されていません — ベンチはブローカーのタイムアウトとキルスイッチの発動をシミュレートしますが、レート制限の応答はシミュレートしません。「実装済み」と「テスト済み」の区別がこのリポジトリの主題そのものであるため、明記しています。MT5ブリッジはmacOS/Wine向けに設計されています。ネイティブWindowsインストールでは
OAS_MT5_COMMON_FILESの設定が必要ですが、私自身でテストはしていません。シングルターミナル設計:リスナーは1つのポート上のシングルトンであり、2番目のサーバープロセスは最初のものを検出してバインディングを競うのではなく転送します。
ライセンス
MIT — LICENSEを参照してください。
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- MIT
- AlicenseAqualityAmaintenanceAn MCP server that lets an AI agent read your MetaTrader 5 account and place trades over the Model Context Protocol, with a configurable human approval gate.154MIT
- Alicense-qualityCmaintenanceA local-first MCP server that bridges AI coding agents with MetaTrader 5 for inspection, market data, MQL5 development, compiling, Strategy Tester review, workspace sync, logs, audit trails, demo trading, and carefully gated live trading.MIT
- FlicenseBqualityCmaintenanceAn MCP trading server over a paper broker with a deterministic risk layer that enforces limits before orders reach the handler, ensuring safe AI agent trading.7
Related MCP Connectors
MCP server exposing the Backtest360 engine API as tools for AI agents.
MCP server for Gainium — manage trading bots, deals, and balances via AI assistants
MCP server for AI dialogue using various LLM models via AceDataCloud
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/zorionarrillaga/oas-execute-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server