mcpField
M
MetaTrader MCP Server

MetaTrader MCP Server

ローカル
github.com/ariadng金融データ84131 週間前に更新

MetaTrader MCP Server について

MetaTrader MCP Server は、AI アシスタントを MetaTrader 5 取引プラットフォームに接続する MCP サーバーです。自然言語で口座情報や相場を照会し、注文を行えます。トレーダー、開発者、アナリストを対象とし、MCP、REST API、WebSocket のインターフェースを提供します。

主な機能

  1. 01自然言語による口座照会と取引
  2. 02注文の発注・変更・決済
  3. 03リアルタイム価格と過去の相場データ
  4. 04残高、有効証拠金、証拠金などの口座情報
  5. 05WebSocket によるティック配信
  6. 06MCP、REST API、WebSocket のインターフェース

活用シーン

  1. 01Claude Desktop で MT5 の残高とポジションを確認する
  2. 02Open WebUI から取引ツールを呼び出して注文する
  3. 03リアルタイム相場をダッシュボードや取引ボットに提供する

MCP 対応

本プロジェクトは MCP サーバーであり、MT5 の口座、相場、注文に関するツールを STDIO または SSE で MCP クライアントに公開します。Claude Desktop や Claude Code からリモート接続することもできます。

設定

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

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

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

リポジトリ

ツール

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

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

詳細

MetaTrader MCP Server


PyPI version Python 3.10+ License: MIT

自然言語で AI アシスタントに取引を任せましょう

MetaTrader MCP Server



📑 目次


🌟 これは何ですか?

MetaTrader MCP Server は、AI アシスタント(Claude、ChatGPT など)を MetaTrader 5 取引プラットフォームに接続するブリッジです。ボタンをクリックする代わりに、AI アシスタントに実行してほしいことを伝えるだけです。

「口座残高を見せて」 「EUR/USD を 0.01 ロット買って」 「利益が出ているポジションをすべて決済して」

AI がリクエストを理解し、MetaTrader 5 上で自動的に実行します。

仕組み
You → AI Assistant → MCP Server → MetaTrader 5 → Your Trades

✨ 機能

  • 🗣️ 自然言語での取引 - 平易な英語で AI に話しかけて取引を実行
  • 🤖 複数 AI に対応 - Claude Desktop、ChatGPT(Open WebUI 経由)などで動作
  • 📊 市場情報にフルアクセス - リアルタイム価格、過去のデータ、銘柄情報を取得
  • 💼 口座を完全に管理 - 残高、純資産、証拠金、取引統計を確認
  • ⚡ 注文管理 - 簡単なコマンドで注文の発注、変更、決済
  • 🔒 セキュア - 認証情報はすべてお使いのマシン内に保持
  • 🌐 柔軟なインターフェース - MCP サーバー、REST API、WebSocket ストリームとして利用
  • 📖 充実したドキュメント - 詳細なガイドと使用例

🎯 対象ユーザー

  • AI を使って取引を自動化したいトレーダー
  • 取引ボットや分析ツールを構築する開発者
  • 市場データにすばやくアクセスしたいアナリスト
  • AI と金融市場の組み合わせに関心のあるすべての方

⚠️ 重要な免責事項

以下をよくお読みください:

金融商品の取引には、重大な損失リスクが伴います。本ソフトウェアは現状有姿で提供され、開発者は、本ソフトウェアの使用に起因する取引上の損失、利益、または結果について、一切の責任を負いません。

本ソフトウェアを使用することで、以下を承認したものとみなされます。

  • 金融取引のリスクを理解していること
  • 本システムを通じて実行されるすべての取引について、自らが責任を負うこと
  • いかなる結果についても、開発者に責任を問わないこと
  • 自己責任で本ソフトウェアを使用すること

これは金融上の助言ではありません。常に責任ある取引を行ってください。


📋 前提条件

開始する前に、以下を用意してください。

  1. Python 3.10 以降 - こちらからダウンロード
  2. MetaTrader 5 ターミナル - こちらからダウンロード
  3. MT5 取引口座 - デモまたはライブ口座の認証情報
    • ログイン番号
    • パスワード
    • サーバー名(例:「MetaQuotes-Demo」)

🚀 クイックスタート

ステップ 1:パッケージをインストールする

ターミナルまたはコマンドプロンプトを開き、次を実行します。

pip install metatrader-mcp-server
ステップ 2:アルゴリズム取引を有効にする
  1. MetaTrader 5 を開きます
  2. Tools → Options を選択します
  3. Expert Advisors タブをクリックします
  4. Allow algorithmic trading のチェックボックスをオンにします
  5. OK をクリックします
ステップ 3:インターフェースを選ぶ

使い方に応じて、いずれかを選択してください。

オプション A:Claude Desktop で使用(ローカル STDIO)
  1. Claude Desktop の設定ファイルを探します:

    • Windows:%APPDATA%\Claude\claude_desktop_config.json
    • Mac:~/Library/Application Support/Claude/claude_desktop_config.json
  2. ファイルを開き、次の設定を追加します:

{
  "mcpServers": {
    "metatrader": {
      "command": "metatrader-mcp-server",
      "args": [
        "--login",     "YOUR_MT5_LOGIN",
        "--password",  "YOUR_MT5_PASSWORD",
        "--server",    "YOUR_MT5_SERVER",
        "--transport", "stdio"
      ]
    }
  }
}

任意:MT5 ターミナルのパスを指定

MT5 ターミナルが標準以外の場所にインストールされている場合は、--path 引数を追加します:

{
  "mcpServers": {
    "metatrader": {
      "command": "metatrader-mcp-server",
      "args": [
        "--login",     "YOUR_MT5_LOGIN",
        "--password",  "YOUR_MT5_PASSWORD",
        "--server",    "YOUR_MT5_SERVER",
        "--transport", "stdio",
        "--path",      "C:\\Program Files\\MetaTrader 5\\terminal64.exe"
      ]
    }
  }
}
  1. YOUR_MT5_LOGIN、YOUR_MT5_PASSWORD、YOUR_MT5_SERVER を実際の認証情報に置き換えます

  2. Claude Desktop を再起動します

  3. チャットを始めましょう!「口座残高はいくらですか?」と試してみてください。

オプション B:Open WebUI で使用(ChatGPT やその他の LLM 向け)
  1. HTTP サーバーを起動します:
metatrader-http-server --login YOUR_LOGIN --password YOUR_PASSWORD --server YOUR_SERVER --host 0.0.0.0 --port 8000

任意:MT5 ターミナルのパスを指定

MT5 ターミナルが標準以外の場所にインストールされている場合は、--path 引数を追加します:

metatrader-http-server --login YOUR_LOGIN --password YOUR_PASSWORD --server YOUR_SERVER --path "C:\Program Files\MetaTrader 5\terminal64.exe" --host 0.0.0.0 --port 8000
  1. ブラウザーで http://localhost:8000/docs を開き、API ドキュメントを確認します

  2. Open WebUI で:

    • Settings → Tools を開きます
    • Add Tool Server をクリックします
    • http://localhost:8000 を入力します
    • 保存します
  3. これで、Open WebUI のチャットで取引ツールを使用できます!

オプション C:WebSocket によるリアルタイムのレート配信

ダッシュボード、ボット、監視向けに、ライブティックデータ(ビッド、アスク、スプレッド、出来高)を WebSocket 経由でストリーミングします:

metatrader-quote-server --login YOUR_LOGIN --password YOUR_PASSWORD --server YOUR_SERVER

任意の WebSocket クライアントで接続します:

websocat ws://localhost:8765

connected メッセージに続いて、JSON 形式のティック更新が継続的に届きます。詳しくはWebSocket レートサーバーを参照してください。

オプション D:リモート MCP サーバー(SSE)

Windows VPS(MT5 がインストールされている環境)で MCP サーバーを実行し、Claude Desktop または Claude Code からリモート接続します。

サーバー側(Windows VPS 上):

metatrader-mcp-server --login YOUR_LOGIN --password YOUR_PASSWORD --server YOUR_SERVER

デフォルトでは、SSE サーバーが 0.0.0.0:8080 で起動します。--host と --port で設定を変更できます:

metatrader-mcp-server --login YOUR_LOGIN --password YOUR_PASSWORD --server YOUR_SERVER --host 127.0.0.1 --port 9000

クライアント側(ローカルマシン上の Claude Desktop 設定):

{
  "mcpServers": {
    "metatrader": {
      "url": "http://VPS_IP:8080/sse"
    }
  }
}

VPS_IP をサーバーの IP アドレスに置き換えます。

セキュリティに関する警告:MCP プロトコルには認証機能がありません。SSE サーバーをネットワーク経由で公開する場合は、ファイアウォールを使用して IP アドレスによるアクセスを制限するか、認証機能付きのリバースプロキシの背後に配置するか、SSH トンネルを使用してください。


🤖 取引アシスタントスキル(Claude Code / Claude Desktop)

claude-skill/ ディレクトリには、あらかじめ構築された 取引ターミナルアシスタントスキルが含まれています。32 種類すべての取引ツール、出力形式、MetaTrader 5 の専門知識を体系的に Claude に提供します。

Claude Code へのインストール

オプション 1:シンボリックリンク(推奨)

標準の Claude Code スキルディレクトリから claude-skill/ へのシンボリックリンクを作成します:

cd metatrader-mcp-server
mkdir -p .claude
ln -s ../claude-skill .claude/skills

スキルが自動検出され、/trading として使用できるようになります。

オプション 2:コピー

スキルファイルを Claude Code のスキルディレクトリにコピーします:

cd metatrader-mcp-server
mkdir -p .claude/skills
cp -r claude-skill/trading .claude/skills/trading
Claude Desktop へのインストール

Claude Desktop の場合は、スキルをグローバル Claude スキルディレクトリにコピーします:

# macOS
mkdir -p ~/Library/Application\ Support/Claude/skills
cp -r claude-skill/trading ~/Library/Application\ Support/Claude/skills/trading

# Windows
mkdir "%APPDATA%\Claude\skills"
xcopy /E claude-skill\trading "%APPDATA%\Claude\skills\trading\"
スキルの機能
  • 直接実行:依頼に応じて取引をすぐに実行します。追加の確認は必要ありません
  • ワークフロー:複雑な操作のためにツールを連携する方法を把握しています(例:成行注文を出してから SL/TP を設定)
  • フォーマット:口座データ、ポジション、注文、価格を見やすいターミナル形式のテーブルで表示します
  • 専門知識:MT5 の注文タイプ、時間足、シンボル形式、フィリングモードを理解しています
使用方法

インストール後は、/trading を呼び出すか、取引に関する質問を自然な言葉で尋ねてください:

/trading
> Show me my account dashboard
> Buy 0.1 lots of EURUSD with SL at 1.0800
> Close all profitable positions
> Show me GBPUSD H4 candles

📡 WebSocket レートサーバー

WebSocket レートサーバーは、MetaTrader 5 から任意の WebSocket クライアントにリアルタイムのティックデータをストリーミングします。ライブダッシュボード、アルゴリズム取引のフロントエンド、リアルタイム監視に最適です。

サーバーの起動
metatrader-quote-server --login YOUR_LOGIN --password YOUR_PASSWORD --server YOUR_SERVER

デフォルトでは、サーバーは ws://0.0.0.0:8765 で起動します。

カスタマイズ
metatrader-quote-server \
  --login YOUR_LOGIN \
  --password YOUR_PASSWORD \
  --server YOUR_SERVER \
  --host 127.0.0.1 \
  --port 9000 \
  --symbols "EURUSD,GBPUSD,XAUUSD" \
  --poll-interval 200
設定
フラグ環境変数デフォルト説明
--hostQUOTE_HOST0.0.0.0バインドするホスト
--portQUOTE_PORT8765バインドするポート
--symbolsQUOTE_SYMBOLSXAUUSD,USOIL,GBPUSD,USDJPY,EURUSD,BTCUSD配信するシンボル(カンマ区切り)
--poll-intervalQUOTE_POLL_INTERVAL_MS100ティックのポーリング間隔(ミリ秒)

CLI フラグは環境変数より優先され、環境変数はデフォルト値より優先されます。

メッセージ形式

接続時 — サーバーはシンボルリストを含む connected メッセージを送信し、その後、キャッシュ済みのティックを送信します。

{"type": "connected", "symbols": ["XAUUSD", "EURUSD", "GBPUSD"], "poll_interval_ms": 100}

ティックの更新 — 買値、売値、または出来高が変化するたびに送信されます。

{"type": "tick", "symbol": "XAUUSD", "bid": 2345.67, "ask": 2345.89, "spread": 0.22, "volume": 1234, "time": "2026-03-14T10:30:45+00:00"}

エラー — シンボルを取得できない場合に送信されます。

{"type": "error", "symbol": "INVALID", "message": "Symbol not found or data unavailable"}
例:Python で接続する
import asyncio
import json
from websockets.asyncio.client import connect

async def main():
    async with connect("ws://localhost:8765") as ws:
        async for message in ws:
            tick = json.loads(message)
            if tick["type"] == "tick":
                print(f"{tick['symbol']}: {tick['bid']}/{tick['ask']} (spread: {tick['spread']})")

asyncio.run(main())
設計上の注意点
  • 変更検出:買値、売値、または出来高が実際に変化した場合にのみ配信するため、不要な通信を削減できます。
  • 途中参加のクライアント:新しいクライアントには接続時にキャッシュ済みのティックがすぐに送信されるため、次の変化を待つ必要がありません。
  • MT5 のスレッド安全性:並行アクセスの問題を防ぐため、すべての MT5 SDK 呼び出しを単一のスレッドエグゼキューター経由で直列化します。
  • 複数クライアント:任意の数の WebSocket クライアントが同時に接続できます。

💡 使用例

Claude Desktop での使用

設定が完了すると、自然な言葉でチャットできます。

口座を確認する:

あなた:「口座情報を表示して」

Claude:残高、エクイティ、証拠金、レバレッジなどを返します。

マーケットデータを取得する:

あなた:「EUR/USD の現在価格はいくら?」

Claude:買値、売値、スプレッドを表示します。

取引を行う:

あなた:「GBP/USD を 0.01 ロット買って。ストップロスは 1.2500、テイクプロフィットは 1.2700 に設定して」

Claude:取引を実行し、確認します。

ポジションを管理する:

あなた:「損失が出ているポジションをすべて決済して」

Claude:ポジションを決済し、結果を報告します。

履歴を分析する:

あなた:「先週の EUR/USD の取引をすべて表示して」

Claude:取引履歴を表形式で返します。

HTTP API での使用
# Get account info
curl http://localhost:8000/api/v1/account/info

# Get current price
curl "http://localhost:8000/api/v1/market/price?symbol_name=EURUSD"

# Place a market order
curl -X POST http://localhost:8000/api/v1/order/market \
  -H "Content-Type: application/json" \
  -d '{
    "symbol": "EURUSD",
    "volume": 0.01,
    "type": "BUY",
    "stop_loss": 1.0990,
    "take_profit": 1.1010
  }'

# Get all open positions
curl http://localhost:8000/api/v1/positions

# Close a specific position
curl -X DELETE http://localhost:8000/api/v1/positions/12345
Python ライブラリとしての使用
from metatrader_client import MT5Client

# Connect to MT5
config = {
    "login": 12345678,
    "password": "your_password",
    "server": "MetaQuotes-Demo"
}
client = MT5Client(config)
client.connect()

# Get account statistics
stats = client.account.get_trade_statistics()
print(f"Balance: ${stats['balance']}")
print(f"Equity: ${stats['equity']}")

# Get current price
price = client.market.get_symbol_price("EURUSD")
print(f"EUR/USD Bid: {price['bid']}, Ask: {price['ask']}")

# Place a market order
result = client.order.place_market_order(
    type="BUY",
    symbol="EURUSD",
    volume=0.01,
    stop_loss=1.0990,
    take_profit=1.1010
)
print(result['message'])

# Close all positions
client.order.close_all_positions()

# Disconnect
client.disconnect()

📚 利用可能な操作

口座管理
  • get_account_info - 残高、エクイティ、損益、証拠金維持率、レバレッジ、通貨を取得します
マーケットデータ
  • get_symbols - 利用可能なすべての取引シンボルを一覧表示します
  • get_symbol_price - シンボルの現在の買値/売値を取得します
  • get_candles_latest - 最近の価格ローソク足(OHLCV データ)を取得します
  • get_candles_by_date - 指定した期間の過去のローソク足を取得します
  • get_symbol_info - シンボルの詳細情報を取得します
注文の実行
  • place_market_order - 成行の BUY/SELL 注文を即時に実行します
  • place_pending_order - 将来の実行に向けて指値/逆指値注文を発注します
  • modify_position - ストップロスまたはテイクプロフィットを更新します
  • modify_pending_order - 保留中の注文パラメーターを変更します
ポジション管理
  • get_all_positions - すべてのオープンポジションを表示します
  • get_positions_by_symbol - 取引ペアでポジションを絞り込みます
  • get_positions_by_id - 指定したポジションの詳細を取得します
  • close_position - 指定したポジションを決済します
  • close_all_positions - すべてのオープンポジションを決済します
  • close_all_positions_by_symbol - 指定したシンボルのポジションをすべて決済します
  • close_all_profitable_positions - 利益が出ている取引のみを決済します
  • close_all_losing_positions - 損失が出ている取引のみを決済します
保留中の注文
  • get_all_pending_orders - 保留中の注文をすべて一覧表示します
  • get_pending_orders_by_symbol - シンボルで保留中の注文を絞り込みます
  • cancel_pending_order - 指定した保留中の注文をキャンセルします
  • cancel_all_pending_orders - 保留中の注文をすべてキャンセルします
  • cancel_pending_orders_by_symbol - 指定したシンボルの保留中の注文をキャンセルします
取引履歴
  • get_deals - 完了した取引の履歴を取得します
  • get_orders - 過去の注文記録を取得します

🔧 詳細設定

環境変数の使用

コマンドラインに認証情報を入力する代わりに、.env ファイルを作成します。

LOGIN=12345678
PASSWORD=your_password
SERVER=MetaQuotes-Demo

# Optional: Specify custom MT5 terminal path (auto-detected if not provided)
# MT5_PATH=C:\Program Files\MetaTrader 5\terminal64.exe

次に、引数を指定せずにサーバーを起動します。

metatrader-http-server

サーバーは .env ファイルから認証情報を自動的に読み込みます。

MCP トランスポートの設定

MCP サーバーは複数のトランスポートモードをサポートしています。

フラグ環境変数デフォルト説明
--transportMCP_TRANSPORTsseトランスポートの種類:sse、stdio、streamable-http
--hostMCP_HOST0.0.0.0バインドするホスト(SSE/HTTP のみ)
--portMCP_PORT8080バインドするポート(SSE/HTTP のみ)

CLI フラグは環境変数より優先され、環境変数はデフォルト値より優先されます。

カスタムポートとホスト(HTTP API)
metatrader-http-server --host 127.0.0.1 --port 9000
接続パラメーター

MT5 クライアントは追加の設定をサポートしています。

config = {
    "login": 12345678,
    "password": "your_password",
    "server": "MetaQuotes-Demo",
    "path": None,               # Path to MT5 terminal executable (default: auto-detect)
    "timeout": 60000,           # Connection timeout in milliseconds (default: 60000)
    "portable": False,          # Use portable mode (default: False)
    "max_retries": 3,           # Maximum connection retry attempts (default: 3)
    "backoff_factor": 1.5,      # Delay multiplier between retries (default: 1.5)
    "cooldown_time": 2.0,       # Seconds to wait between connections (default: 2.0)
    "debug": True               # Enable debug logging (default: False)
}

設定オプション:

  • login(int、必須):MT5 アカウントのログイン番号
  • password(str、必須):MT5 アカウントのパスワード
  • server(str、必須):MT5 サーバー名(例:「MetaQuotes-Demo」)
  • path(str、任意):MT5 ターミナル実行ファイルへのフルパス。指定しない場合、クライアントは標準のインストールディレクトリを自動的に検索します
  • timeout(int、任意):ミリ秒単位の接続タイムアウト。デフォルト:60000(60 秒)
  • portable(bool、任意):MT5 ターミナルのポータブルモードを有効にします。デフォルト:False
  • max_retries(int、任意):接続の最大再試行回数。デフォルト:3
  • backoff_factor(float、任意):再試行間隔を延ばす指数バックオフ係数。デフォルト:1.5
  • cooldown_time(float、任意):接続試行間の最小時間(秒)。デフォルト:2.0
  • debug(bool、任意):トラブルシューティング用の詳細なデバッグログを有効にします。デフォルト:False

🗺️ ロードマップ

機能状況
MetaTrader 5 接続✅ 完了
Python クライアントライブラリ✅ 完了
MCP サーバー✅ 完了
Claude Desktop 連携✅ 完了
HTTP/REST API サーバー✅ 完了
Open WebUI 連携✅ 完了
OpenAPI ドキュメント✅ 完了
PyPI パッケージ✅ 公開済み
SSE トランスポートのサポート✅ 完了
Google ADK 連携🚧 進行中
WebSocket クォートサーバー✅ 完了
Docker コンテナ📋 予定

🛠️ 開発

開発環境のセットアップ
# Clone the repository
git clone https://github.com/ariadng/metatrader-mcp-server.git
cd metatrader-mcp-server

# Install in development mode
pip install -e .

# Install development dependencies
pip install pytest python-dotenv

# Run tests
pytest tests/
プロジェクト構成
metatrader-mcp-server/
├── src/
│   ├── metatrader_client/      # Core MT5 client library
│   │   ├── account/            # Account operations
│   │   ├── connection/         # Connection management
│   │   ├── history/            # Historical data
│   │   ├── market/             # Market data
│   │   ├── order/              # Order execution
│   │   └── types/              # Type definitions
│   ├── metatrader_mcp/         # MCP server implementation
│   ├── metatrader_openapi/     # HTTP/REST API server
│   └── metatrader_quote/       # WebSocket quote streamer
├── tests/                      # Test suite
├── docs/                       # Documentation
└── pyproject.toml             # Project configuration

🤝 コントリビューション

コントリビューションを歓迎します!次の方法でご協力いただけます。

  1. バグを報告する - Issue を作成する
  2. 機能を提案する - Issue でアイデアを共有する
  3. プルリクエストを送信する - バグを修正するか、機能を追加する
  4. ドキュメントを改善する - ドキュメントをより分かりやすくする
  5. 使用例を共有する - どのように活用しているかを紹介する
コントリビューションガイドライン
  • リポジトリをフォークします
  • 機能ブランチを作成します(git checkout -b feature/amazing-feature)
  • 変更を加えます
  • テストを作成または更新します
  • テストが通ることを確認します(pytest)
  • 変更をコミットします(git commit -m 'Add amazing feature')
  • ブランチにプッシュします(git push origin feature/amazing-feature)
  • プルリクエストを作成します

📖 ドキュメント


🆘 ヘルプを得る

よくある問題

「接続に失敗しました」

  • MT5 ターミナルが起動していることを確認してください
  • アルゴリズム取引が有効になっていることを確認してください
  • ログイン認証情報が正しいことを確認してください

「モジュールが見つかりません」

  • パッケージがインストールされていることを確認してください:pip install metatrader-mcp-server
  • Python のバージョンが 3.10 以上であることを確認してください

「注文の実行に失敗しました」

  • ブローカーでシンボルが利用可能であることを確認してください
  • 市場が開いていることを確認してください
  • 十分な証拠金があることを確認してください

📝 ライセンス

このプロジェクトは MIT ライセンスのもとでライセンスされています。詳細は LICENSE ファイルをご覧ください。


🙏 謝辞

  • MCP プロトコルをサポートする FastMCP を使用して構築されています
  • Python パッケージ MetaTrader5 を使用しています
  • REST API には FastAPI を使用しています

📊 プロジェクト統計

  • バージョン:0.5.1
  • Python:3.10+
  • ライセンス:MIT
  • ステータス:開発中

Aria Dhanang が ❤️ を込めて作成

役に立ったら、このリポジトリに ⭐ を付けてください!

PyPI • GitHub • Issues

コメント

MCP は初めてですか?

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

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