Skip to main content
Glama
ariadng

metatrader-mcp-server

PyPI version Python 3.10+ License: MIT

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

MetaTrader MCP Server


📑 目次


Related MCP server: Financial Datasets 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. ツールオプション に移動

  3. エキスパートアドバイザ タブをクリック

  4. アルゴリズム取引を許可する にチェックを入れる

  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_LOGINYOUR_MT5_PASSWORDYOUR_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で:

    • 設定ツール に移動

    • ツールサーバーを追加 をクリック

    • 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

これにより、デフォルトで 0.0.0.0:8080 でSSEサーバーが起動します。--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/ ディレクトリに、構築済みの Trading Terminal Assistant スキルが含まれています。これにより、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

設定

フラグ

環境変数

デフォルト

説明

--host

QUOTE_HOST

0.0.0.0

バインドするホスト

--port

QUOTE_PORT

8765

バインドするポート

--symbols

QUOTE_SYMBOLS

XAUUSD,USOIL,GBPUSD,USDJPY,EURUSD,BTCUSD

ストリーミングするシンボル(カンマ区切り)

--poll-interval

QUOTE_POLL_INTERVAL_MS

100

ティックポーリング間隔(ミリ秒)

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 - 成行買い/売り注文を実行

  • 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

A
license - permissive license
-
quality - not tested
D
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Issues opened vs closed

Latest Blog Posts

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/ariadng/metatrader-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server