MetaTrader MCP Server
](https://pypi.org/project/metatrader-mcp-server/)  
让AI助手使用自然语言为您交易
______________________________________________________________________
📑 目录
______________________________________________________________________
🌟 这是什么?
MetaTrader MCP服务器 是连接人工智能助手(如Claude、ChatGPT)和MetaTrader 5交易平台的桥梁。你可以简单地告诉你的AI助手该做什么,而不是点击按钮:
“显示我的账户余额” “购买0.01手欧元/美元” “关闭所有盈利头寸”
AI理解您的请求,并在MetaTrader 5上自动执行。
运作原理
You → AI Assistant → MCP Server → MetaTrader 5 → Your Trades✨ 特性
- 🗣️ 自然语言交易 -用简单的英语与人工智能交谈以执行交易
- 🤖 多AI支持 -适用于Claude Desktop、ChatGPT(通过Open WebUI)等
- 📊 完全市场准入 -获取实时价格、历史数据和交易品种信息
- 💼 完全账户控制 -检查余额、权益、保证金和交易统计数据
- ⚡ 订单管理 -使用简单的命令下达、修改和关闭订单
- 🔒 安全 -所有凭据都保留在您的计算机上
- 🌐 灵活的界面 -用作MCP服务器、REST API或WebSocket流
- 📖 证据充分的 -综合指南和示例
🎯 这是给谁的?
- 交易者 希望使用人工智能实现交易自动化的人
- 开发者 构建交易机器人或分析工具
- 分析师 需要快速访问市场数据的人
- 任何人 有兴趣将人工智能与金融市场相结合
⚠️ 重要免责声明
请仔细阅读:
交易金融工具涉及重大损失风险。此软件按原样提供,开发人员接受 无责任 对于使用本软件的任何交易损失、收益或后果。
通过使用此软件,您承认:
- 你了解金融交易的风险
- 您负责通过此系统执行的所有交易
- 您不会让开发人员对任何结果负责
- 您使用此软件的风险由您自行承担
这不是财务建议。始终以负责任的态度进行交易。
______________________________________________________________________
📋 先决条件
在开始之前,请确保您已经:
- 登录号码 - 密码 - 服务器名称(例如,“MetaQuotes-Demo”)
🚀 快速开始
步骤1:安装软件包
打开终端或命令提示符并运行:
pip install metatrader-mcp-server步骤2:启用算法交易
- 打开MetaTrader 5
- 首选
Tools→Options - 点击
Expert Advisors标签 - 勾选以下框
Allow algorithmic trading - 点击
OK
步骤3:选择您的界面
根据您想如何使用它来选择一个:
选项A:与克劳德桌面(本地STDIO)一起使用
- 查找您的Claude Desktop配置文件:
- 视窗: %APPDATA%\Claude\claude_desktop_config.json - 苹果电脑: ~/Library/Application Support/Claude/claude_desktop_config.json
- 打开文件并添加此配置:
{
"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"
]
}
}
}- 替换
YOUR_MT5_LOGIN,YOUR_MT5_PASSWORD,以及YOUR_MT5_SERVER使用您的真实凭证
- 重新启动克劳德桌面
- 开始聊天!尝试: *“我的账户余额是多少?”*
选项B:与Open WebUI一起使用(适用于ChatGPT和其他LLM)
- 启动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- 打开浏览器
http://localhost:8000/docs查看API文档
- 在Open WebUI中:
- 首选 设置 → 工具 - 点击 添加工具服务器 - 进入 http://localhost:8000 - 保存
- 现在,您可以在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)
在安装了MT5的Windows VPS上运行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隧道。
______________________________________________________________________
🤖 交易助理技能(克劳德代码/克劳德桌面)
A预制 交易终端助理 技能包含在 claude-skill/ 目录。它为Claude提供了有关所有32种交易工具、输出格式和MetaTrader 5领域专业知识的结构化知识。
安装Claude代码
选项1:Symlink(推荐)
从标准的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客户端都可以同时连接。
______________________________________________________________________
💡 用法示例
使用克劳德桌面
配置后,您可以自然聊天:
检查您的帐户:
您:“显示我的帐户信息” 克劳德: *返回余额、股权、保证金、杠杆等。*
获取市场数据:
你:“欧元/美元的当前价格是多少?” 克劳德: *显示出价、要价和点差*
进行交易:
你:“买入0.01手英镑/美元,止损1.2500,止盈1.2700” 克劳德: *执行交易并确认*
管理职位:
你:“关闭我所有亏损的头寸” 克劳德: *关闭头寸并报告结果*
分析历史记录:
你:“显示我上周欧元/美元的所有交易” 克劳德: *以表格形式返回交易历史记录*
使用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-获取历史订单记录
______________________________________________________________________
🔧 高级配置
使用环境变量
创建一个 .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服务器支持多种传输模式:
| 标志 | 环境变量 | 默认值 | 描述 |
|---|---|---|---|
--transport | MCP_TRANSPORT | sse | 运输类型: sse, stdio, streamable-http |
--host | MCP_HOST | 0.0.0.0 | 要绑定的主机(仅限SSE/HTTP) |
--port | MCP_PORT | 8080 | 要绑定的端口(仅限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)
}配置选项:
- 登录 (int,必填):您的MT5帐户登录号
- 密码 (str,必填):您的MT5帐户密码
- 服务器 (str,必填):MT5服务器名称(例如,“MetaQuotes-Demo”)
- 路径 (str,可选):MT5终端可执行文件的完整路径。如果未指定,客户端将自动搜索标准安装目录
- 超时 (int,可选):连接超时(毫秒)。默认值:60000(60秒)
- 便携的 (bool,可选):为MT5终端启用便携模式。默认值:False
- 最大重试次数 (int,可选):连接重试尝试的最大次数。默认值:3
- 退避因子 (浮点数,可选):重试延迟的指数退避因子。默认值:1.5
- 冷却时间 (float,可选):连接尝试之间的最短时间(秒)。默认值:2.0
- 调试 (bool,可选):启用详细的调试日志以进行故障排除。默认值:False
______________________________________________________________________
🗺️ 路线图
| 功能 | 状态 |
|---|---|
| MetaTrader 5连接 | ✅ 完成 |
| Python客户端库 | ✅ 完成 |
| MCP服务器 | ✅ 完成 |
| 克劳德桌面集成 | ✅ 完成 |
| HTTP/REST API服务器 | ✅ 完成 |
| 打开WebUI集成 | ✅ 完成 |
| OpenAPI文档 | ✅ 完成 |
| PyPI包 | ✅ 已发布 |
| 苏格兰和南方能源公司运输支持 | ✅ 完成 |
| 谷歌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______________________________________________________________________
🤝 贡献
欢迎投稿!以下是您可以提供帮助的方式:
- 报告Bug - 打开一个问题
- 建议功能 -在问题中分享你的想法
- 提交拉取请求 -修复错误或添加功能
- 改进文档 -帮助使文档更清晰
- 分享示例 -展示你是如何使用它的
贡献指南
- 分叉存储库
- 创建要素分支(
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许可证获得许可-请参阅 许可证 文件以获取详细信息。
______________________________________________________________________
🙏 致谢
- 内置于 FastMCP 用于MCP协议支持
- 用途 MetaTrader 5 Python包
- 由...驱动 快速API 用于REST API
______________________________________________________________________
📊 项目统计
- 版本: 0.5.1
- python: 3.10+
- 许可证:MIT
- 状态:积极发展
______________________________________________________________________
制作❤️ 通过 Aria Dhanang
⭐ 如果你觉得这个仓库有用,就把它标上!

