MetaTrader 5 MCP Server について
MetaTrader 5 MCP Server は、MetaTrader 5 取引プラットフォーム向けの MCP サーバーです。AI アシスタントからマーケットデータの取得、注文の実行、取引履歴の分析を行えます。MT5 での取引やマーケット分析に AI を活用したいユーザー向けです。
主な機能
- 01MetaTrader 5 ターミナルと取引口座への接続
- 02銘柄、ローソク足、ティックデータの取得
- 03注文の発注とポジション・未約定注文の照会
- 04注文および約定履歴の照会
活用シーン
- 01AI アシスタントによる銘柄の相場とヒストリカルデータの確認
- 02チャットからの取引注文の確認と送信
- 03指定期間の取引履歴の振り返り
MCP 対応
このプロジェクトは MCP サーバーであり、MetaTrader 5 の接続、マーケットデータ、取引、履歴照会の機能をツールとリソースとして MCP クライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MetaTrader 5 MCP サーバー
MetaTrader 5 向けの Model Context Protocol(MCP)サーバーです。AI アシスタントが MetaTrader 5 プラットフォームと連携し、取引や市場データの分析を行えます。ドキュメント
機能
- MetaTrader 5 ターミナルに接続します
- 市場データ(シンボル、レート、ティック)にアクセスします
- 取引を発注・管理します
- 取引履歴を分析します
- Model Context Protocol を通じて AI アシスタントと連携します
インストール
PyPI から
uvx --from mcp-metatrader5-server mt5mcp
ソースから
git clone https://github.com/Qoyyuum/mcp-metatrader5-server.git
cd mcp-metatrader5-server
uv sync
uv run mt5mcp
要件
- uv(推奨)または pip
- Python 3.11 以降
- Windows にインストールされた MetaTrader 5 ターミナル
- MetaTrader 5 アカウント(デモまたはリアル)
使い方
クイックスタート
このサーバーは、Claude Desktop などの MCP クライアント向けに、デフォルトで stdio モードで実行されます。
uv run mt5mcp
開発モード(HTTP)
HTTP トランスポートでテストするには、.env ファイルを作成します。
MT5_MCP_TRANSPORT=http
MT5_MCP_HOST=127.0.0.1
MT5_MCP_PORT=8000
次に、以下を実行します。
uv run mt5mcp
サーバーは http://127.0.0.1:8000 で起動します。
MCP クライアント向けのインストール
方法 1:uvx を使う(最も簡単 — インストール不要)⭐
以下の設定を MCP クライアントの設定ファイルに追加します。
Claude Desktop の場合(claude_desktop_config.json):
{
"mcpServers": {
"mcp-metatrader5-server": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/Qoyyuum/mcp-metatrader5-server",
"mt5mcp"
]
}
}
}
方法 2:FastMCP Install を使う(推奨)
git clone https://github.com/Qoyyuum/mcp-metatrader5-server
cd mcp-metatrader5-server
リポジトリを Git クローンした後、以下のコマンドを実行します。
MCP JSON 形式の場合
uv run fastmcp install mcp-json src/mcp_mt5/main.py
Claude Desktop の場合
uv run fastmcp install claude-desktop src/mcp_mt5/main.py
Claude Code の場合
uv run fastmcp install claude-code src/mcp_mt5/main.py
Cursor の場合
uv run fastmcp install cursor src/mcp_mt5/main.py
Gemini CLI の場合
uv run fastmcp install gemini-cli src/mcp_mt5/main.py
方法 3:手動設定
これを claude_desktop_config.json または任意の LLM 設定ファイルに追加します。
{
"mcpServers": {
"mcp-metatrader5-server": {
"command": "uvx",
"args": [
"--from",
"mcp-metatrader5-server",
"mt5mcp"
]
}
}
}
API リファレンス
接続管理
initialize(): MT5 ターミナルを初期化しますlogin(account, password, server): 取引アカウントにログインしますshutdown(): MT5 ターミナルへの接続を終了します
市場データ関数
get_symbols(): 利用可能なすべてのシンボルを取得しますget_symbols_by_group(group): グループ別にシンボルを取得しますget_symbol_info(symbol): 指定したシンボルの情報を取得しますget_symbol_info_tick(symbol): シンボルの最新ティックを取得しますcopy_rates_from_pos(symbol, timeframe, start_pos, count): 指定位置からバーを取得しますcopy_rates_from_date(symbol, timeframe, date_from, count): 指定日時からバーを取得しますcopy_rates_range(symbol, timeframe, date_from, date_to): 指定した期間内のバーを取得しますcopy_ticks_from_pos(symbol, start_pos, count): 指定位置からティックを取得しますcopy_ticks_from_date(symbol, date_from, count): 指定日時からティックを取得しますcopy_ticks_range(symbol, date_from, date_to): 指定した期間内のティックを取得します
取引関数
order_send(request): 取引サーバーに注文を送信しますorder_check(request): 指定したパラメーターで注文を発注できるか確認しますpositions_get(symbol, group): オープンポジションを取得しますpositions_get_by_ticket(ticket): チケット番号でオープンポジションを取得しますorders_get(symbol, group): 有効な注文を取得しますorders_get_by_ticket(ticket): チケット番号で有効な注文を取得しますhistory_orders_get(symbol, group, ticket, position, from_date, to_date): 履歴から注文を取得しますhistory_deals_get(symbol, group, ticket, position, from_date, to_date): 履歴から取引を取得します
ワークフローの例
接続して市場データを取得する
# Initialize MT5
initialize()
# Log in to your trading account
login(account=123456, password="your_password", server="your_server")
# Get available symbols
symbols = get_symbols()
# Get recent price data for EURUSD
rates = copy_rates_from_pos(symbol="EURUSD", timeframe=15, start_pos=0, count=100)
# Shut down the connection
shutdown()
取引を発注する
# Initialize and log in
initialize()
login(account=123456, password="your_password", server="your_server")
# Create an order request
request = OrderRequest(
action=mt5.TRADE_ACTION_DEAL,
symbol="EURUSD",
volume=0.1,
type=mt5.ORDER_TYPE_BUY,
price=mt5.symbol_info_tick("EURUSD").ask,
deviation=20,
magic=123456,
comment="Buy order",
type_time=mt5.ORDER_TIME_GTC,
type_filling=mt5.ORDER_FILLING_IOC
)
# Send the order
result = order_send(request)
# Shut down the connection
shutdown()
リソース
サーバーは、AI アシスタントが MetaTrader 5 API の使い方を理解できるよう、以下のリソースを提供します。
mt5://getting_started:MetaTrader 5 API を使用する基本的なワークフローmt5://trading_guide:取引の発注と管理に関するガイドmt5://market_data_guide:市場データへのアクセスと分析に関するガイドmt5://order_types:注文タイプに関する情報mt5://order_filling_types:注文の執行タイプに関する情報mt5://order_time_types:注文の有効期限タイプに関する情報mt5://trade_actions:取引リクエストのアクションに関する情報
プロンプト
サーバーは、AI アシスタントがユーザーとやり取りできるよう、以下のプロンプトを提供します。
connect_to_mt5(account, password, server):MetaTrader 5 に接続してログインしますanalyze_market_data(symbol, timeframe):特定の銘柄の市場データを分析しますplace_trade(symbol, order_type, volume):特定の銘柄の取引を発注しますmanage_positions():オープンポジションを管理しますanalyze_trading_history(days):取引履歴を分析します
開発
プロジェクト構成
mcp-metatrader5-server/
├── src/
│ └── mcp_mt5/
│ ├── __init__.py # Entry point with main()
│ ├── main.py # FastMCP server with all tools
│ └── test_client.py # Test client for development
├── docs/
│ ├── getting_started.md
│ ├── market_data_guide.md
│ ├── trading_guide.md
│ └── publishing.md
├── .env # Environment configuration (create from .env.example)
├── README.md
├── pyproject.toml # Project metadata (using hatchling)
└── uv.lock # Dependency lock file
パッケージのビルド
uv を使用する場合(推奨):
uv build
これにより、dist/ ディレクトリに wheel とソースディストリビューションが作成されます。
PyPI への公開
uv を使用する場合:
# Build first
uv build
# Publish to PyPI
uv publish
# Or publish to TestPyPI first
uv publish --publish-url https://test.pypi.org/legacy/
ライセンス
MIT
謝辞
- MetaTrader 5 プラットフォームを提供する MetaQuotes
- MCP サーバーの実装を提供する FastMCP
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。
