MCP Order Flow Server について
MCP Order Flow Serverは、市場のマイクロストラクチャーデータを使うアルゴリズム取引向けに、リアルタイムのオーダーフロー分析を提供します。gRPCで市場データを取得し、パターン、主要価格水準、売買の勢いを分析します。
主な機能
- 01リアルタイムのオーダーフロー分析
- 02gRPCによる市場データ取得
- 03吸収、積み上げ、スイープの検出
- 04サポート・レジスタンス水準の算出
- 05売買動向と数量加速の指標
活用シーン
- 01株式やETFのティッカー別オーダーフロー分析
- 02短い時間幅での市場パターン確認
- 03アルゴリズム取引向けのサポート・レジスタンス取得
MCP 対応
MCPサーバーはオーダーフロー分析ツールを公開し、ティッカー、履歴時間幅、パターン検出の有無を指定できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP Order Flow Server
アルゴリズム取引アプリケーション向けに、リアルタイムのオーダーフロー分析を提供する高性能な Model Context Protocol(MCP)サーバーです。このサーバーは gRPC を介して市場データブローカーに接続し、機関投資家水準のマーケットマイクロストラクチャ分析情報を提供します。
機能
- リアルタイムのオーダーフロー分析:ライブのマーケットマイクロストラクチャデータ処理
- 高性能な gRPC 統合:サブミリ秒の遅延でデータを取得
- 機関投資家のパターン検出:吸収、積み上げ、スイープのパターン
- サポート/レジスタンス水準:アルゴリズムによって導出される主要な価格水準
- 市場モメンタム指標:買い気配/売り気配の動向と数量の加速
- MCP プロトコル準拠:AI エージェントや LLM とシームレスに統合
クイックスタート
前提条件
- Python 3.10 以降
- 互換性のある市場データブローカー(gRPC エンドポイント)
- マーケットマイクロストラクチャの概念に関する基本的な知識
インストール
-
リポジトリをクローンします:
git clone <repository-url> cd mcp-order-flow-server -
依存関係をインストールします:
pip install -r requirements.txt -
protobuf ファイルを生成します(gRPC データソースを使用する場合):
./generate_proto.sh -
環境を設定します(任意):
export DATA_BROKER_GRPC_URL=localhost:9090 export LOG_LEVEL=INFO -
サーバーを起動します:
python src/mcp_server.py
使用方法
MCP ツール:analyze_order_flow_tool
このサーバーは、オーダーフロー分析用の MCP ツールを 1 つ公開します。
パラメーター
| パラメーター | 型 | デフォルト | 説明 |
|---|---|---|---|
ticker | string | 必須 | 株式/ETF のティッカーシンボル(例:"SPY"、"QQQ") |
history | string | "5mins" | 分析対象の時間枠(例:"30s"、"10mins"、"1h") |
include_patterns | boolean | true | 応答にパターン検出結果を含めるかどうか |
リクエスト例
{
"method": "tools/call",
"params": {
"name": "analyze_order_flow_tool",
"arguments": {
"ticker": "SPY",
"history": "5mins",
"include_patterns": true
}
}
}
応答例
<order_flow_data ticker="SPY" timestamp="2024-01-15T10:30:00" current_price="485.24">
<data_summary>
<quote_count>1847</quote_count>
<history_window>300s</history_window>
<pattern_count>3</pattern_count>
</data_summary>
<current_quote>
<bid_price>485.230</bid_price>
<ask_price>485.250</ask_price>
<bid_size>1800</bid_size>
<ask_size>1200</ask_size>
<spread>0.020</spread>
</current_quote>
<metrics window="10s">
<momentum>
<bid_movement>0.050</bid_movement>
<ask_movement>0.045</ask_movement>
<bid_lifts>3</bid_lifts>
<ask_lifts>2</ask_lifts>
</momentum>
<size_dynamics>
<avg_bid_size>1650</avg_bid_size>
<avg_ask_size>1250</avg_ask_size>
<large_bids>1</large_bids>
<large_asks>0</large_asks>
</size_dynamics>
<behaviors>
<bid_stacking>YES</bid_stacking>
<momentum_building>YES</momentum_building>
</behaviors>
</metrics>
<significant_levels>
<bid_levels>
<level price="485.20" appearances="15" total_size="45000" />
<level price="485.15" appearances="12" total_size="38000" />
</bid_levels>
<ask_levels>
<level price="485.30" appearances="12" total_size="38000" />
<level price="485.35" appearances="9" total_size="28000" />
</ask_levels>
</significant_levels>
<detected_patterns>
<pattern type="absorption">
<subtype>bullish</subtype>
<strength>strong</strength>
<description>Strong bid absorption at 485.20</description>
</pattern>
</detected_patterns>
</order_flow_data>
設定
環境変数
# Data source configuration
DATA_SOURCE=grpc # Use 'grpc' (recommended) or 'redis'
DATA_BROKER_GRPC_URL=localhost:9090 # gRPC endpoint for market data
# Redis fallback (if DATA_SOURCE=redis)
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_DB=0
# Logging
LOG_LEVEL=INFO # DEBUG, INFO, WARNING, ERROR
データソース
| ソース | レイテンシ | スループット | 用途 |
|---|---|---|---|
| gRPC | 0.1-0.5ms | 2000+ req/s | 本番環境(推奨) |
| Redis | 0.5-2ms | 500+ req/s | 開発/フォールバック |
アーキテクチャ
┌─────────────────┐ ┌──────────────────┐ ┌───────────────────┐
│ MCP Client │───▶│ MCP Server │───▶│ Market Data │
│ (AI Agent) │ │ (This Repo) │ │ Broker (gRPC) │
└─────────────────┘ └──────────────────┘ └───────────────────┘
│
▼
┌──────────────────┐
│ Order Flow │
│ Analysis Engine │
└──────────────────┘
主なコンポーネント
- MCP サーバー:ツールリクエストを処理する FastMCP ベースのサーバー
- gRPC クライアント:市場データブローカーから高性能にデータを取得
- 状態マネージャー:XML 応答のフォーマットとデータ集約
- パターン検出器:機関投資家のパターンをリアルタイムで認識
開発
プロジェクト構成
mcp-order-flow-server/
├── src/
│ ├── mcp_server.py # Main MCP server entry point
│ ├── config.py # Configuration management
│ ├── proto/ # Generated protobuf files
│ ├── storage/
│ │ ├── grpc_client.py # gRPC data client
│ │ └── redis_client.py # Redis fallback client
│ ├── formatters/
│ │ └── state_manager.py # XML response formatting
│ └── tools/
│ └── order_flow_tool.py # MCP tool implementation
├── generate_proto.sh # Protobuf generation script
├── test_tool.py # Development testing
└── requirements.txt # Python dependencies
テスト
# Run development tests
python test_tool.py
# Test specific ticker
python -c "
import asyncio
from src.tools.order_flow_tool import analyze_order_flow
result = asyncio.run(analyze_order_flow('SPY', '1min', True))
print(result)
"
protobuf ファイルの再生成
市場データブローカーの protobuf 定義が変更された場合:
./generate_proto.sh
パフォーマンス
ベンチマーク
- 分析レイテンシ:リクエストあたり < 1ms(gRPC モード)
- 同時リクエスト数:2000 件以上の分析を同時に実行
- メモリ使用量:基本約 50MB + アクティブなティッカーごとに 1KB
- CPU 使用率:最新のハードウェアで < 5%
最適化のヒント
- 本番環境へのデプロイには gRPC モードを使用します
- 応答を速くするには 履歴の時間枠を短くします
- 不要な場合は パターン検出を無効にします(
include_patterns=false) - 複数のティッカーを分析する場合は リクエストをまとめて送信します
エラー処理
このサーバーは、一般的な問題について詳細なエラー応答を返します。
<order_flow_data ticker="INVALID" error="true">
<error_message>No data available for ticker</error_message>
<possible_causes>
<cause>Invalid ticker symbol</cause>
<cause>Market data broker not running</cause>
<cause>Network connectivity issues</cause>
</possible_causes>
<suggestions>
<suggestion>Verify ticker symbol is correct</suggestion>
<suggestion>Check market data broker status</suggestion>
<suggestion>Ensure network connectivity</suggestion>
</suggestions>
</order_flow_data>
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。