让你的EA被AI接管:MT5 MCP协议开发实战——从Python Server到Claude Code/Codex CLI全链路集成
让你的EA被AI接管:MT5 MCP协议开发实战——从Python Server到Claude Code/Codex CLI全链路集成
Build 6060原生MCP支持 × Python MCP Server × 读写分层安全架构 × AI Agent监管EA完整实操指南
EA开发的下一个十年,从理解MCP协议开始 | EAFX Tech 原创

2026年7月23日,MetaQuotes发布了MetaTrader 5 Build 6060。这个版本有一个看似低调但意义深远的变化:MT5原生内置了MCP(Model Context Protocol)协议支持。
7天后,Build 6090进一步扩展了AI Assistant的MCP方法集——新增向图表添加指标、获取全量指标参数的能力。至此,MT5不再只是"执行EA的终端",而是变成了一个"AI Agent可编程的交易操作系统"。
这意味着什么?AI可以通过标准MCP接口读取你的行情、分析你的持仓、执行交易、管理你的EA——而这一切不需要你自己写私有API。据MetaQuotes官方公告,MT5已经成为"现代AI Agent的完整市场数据和交易功能数据源"。
与此同时,cTrader推出了AI Agent Connect(双MCP Server架构)、TradingView上线了AI Chart Copilot、ThinkMarkets也发布了MCP Server。整个行业正在向"AI Agent原生"方向全面转型。
今天这篇文章,不是泛泛介绍MCP概念,而是一篇面向EA开发者的完整实操指南——从理解MCP架构,到搭建你的MCP Server,到用Claude Code/Codex CLI实现AI Agent监管EA,全链路走通。
风险提示:本文内容仅为MT5 MCP协议开发技术讨论,不构成任何投资建议或交易策略推荐。本网站(eafxtech.com)仅提供软件开发与技术服务,不涉及任何交易平台运营或经纪业务。文中涉及的MCP Server代码、AI Agent对接方案均为技术演示,实际部署效果可能因券商环境、网络条件和账户设置不同而有差异。自动化交易存在风险,AI Agent辅助操作不代表交易结果有保障,所有交易行为均由用户自行决策并承担相应风险。
本文与eafxtech已发布内容形成"AI+EA三维度"内容矩阵:7/21的《AI辅助EA代码审查》讲"用AI工具审查EA代码"(工具使用层面),7/27的《MT5 ONNX原生AI实战》讲"在EA中运行机器学习模型"(MQL5 ONNX集成),今天这篇讲"通过MCP协议让你的EA被AI Agent实时监控和辅助"(架构集成层面)。
一、MCP是什么?为什么EA开发者必须关注?
1.1 30秒理解MCP
知识点:MCP(Model Context Protocol)是一个开放标准协议,让AI Agent能够以统一接口操作外部应用。打个比方:USB-C之于各种设备 = MCP之于各种AI Agent。以前每个AI工具要单独写对接代码(像以前的USB-A、Lightning接口各搞一套),MCP统一了接口标准——你写一个MCP Server,Claude Code能用、Codex CLI能用、其他MCP兼容工具也能用。核心概念:MCP Server暴露一组"工具"(tools),每个工具有名字、参数schema和执行逻辑。AI Agent通过MCP协议调用这些工具,就像调用API一样。
据MetaQuotes官方定义:"与传统聊天机器人不同,AI Agent能够独立完成任务——通过将复杂任务分解为一系列动作,并利用连接应用的能力来执行。"
1.2 MCP对EA开发者的3个颠覆性变化
重点:变化1——AI不再只是"聊天",而是能"操作"。以前的AI只能分析文本和图片,现在通过MCP可以直接读你的持仓、查你的EA状态、甚至在你的授权下下单改单。这意味着AI从"旁观者"变成了"参与者"。
重点:变化2——一次开发,多Agent通用。你写一个MCP Server,Claude Code能用、Codex CLI能用、OpenClaw(小龙虾)能用、Fay数字人也能用——不需要为每个AI工具单独写适配代码。这就像USB-C统一了手机充电接口一样,MCP统一了AI与应用的对接方式。
重点:变化3——EA运维从"人盯"变成"AI盯"。以前是你人工看VPS上的EA日志、检查持仓状态、判断EA是否正常运行。现在AI Agent可以7×24实时监控、自动告警、甚至在你授意下修改策略参数。对于同时运行多个EA的开发者来说,这可能是最大的效率提升。
1.3 MT5的两层MCP能力
MT5的MCP能力分两层理解:
• 内置层(Build 6060+):MT5自带的AI Assistant,通过MQL5.community账号登录即可使用(免费MQL5 Lite计划),支持市场分析、持仓分析、交易历史复盘、EA代码生成。Build 6090新增了指标添加和参数查询能力。
• 外接层:通过MCP协议,可以连接Claude Code、Codex CLI等外部AI系统,实现更灵活的定制化操作。这一层需要你自己搭建MCP Server——也就是本文的核心内容。
进阶原理:MT5的MCP架构设计反映了一个重要趋势:交易平台正在从"封闭系统"走向"开放平台"。据FinanceMagnets报道,2026年5月Spotware率先推出cTrader AI Agent Connect(双MCP Server架构),TradingView推出AI Chart Copilot(Chrome扩展),ThinkMarkets上线MCP Server——三大平台几乎同步跟进。这不是某个厂商的孤例,而是整个外汇/CFD行业的基础设施升级方向。
二、架构设计:EA + MCP Server + AI Agent的三层模型
2.1 整体架构
进阶原理:EA + MCP Server + AI Agent的三层架构——底层是MT5终端+EA(运行在VPS或本地Windows上),负责策略执行;中间层是MCP Server(Python进程,通过MetaTrader5 Python库连接MT5终端),负责将MT5操作封装成MCP标准工具;顶层是AI Agent(Claude Code/Codex CLI/内置AI Assistant),通过MCP协议调用工具,实现监控、分析和辅助决策。核心原则:"交易归EA、监管归Agent"——策略执行仍由EA负责(这是EA的强项),AI负责监控状态、分析异常、在你授意下调整参数。
用一张图来理解这个架构:
┌─────────────────────────────────────────────────┐ │ 顶层:AI Agent层 │ │ Claude Code │ Codex CLI │ 内置AI Assistant │ ├─────────────────────────────────────────────────┤ │ 中间层:MCP Server(Python进程) │ │ 只读工具 │ 动钱工具 │ 安全控制层 │ ├─────────────────────────────────────────────────┤ │ 底层:MT5终端 + EA │ │ 策略执行 │ 订单管理 │ 行情数据 │ └─────────────────────────────────────────────────┘
2.2 工具分层:读写分离的安全架构
知识点:读写分离是MCP Server最重要的安全设计。所有MCP工具分为"只读层"和"动钱层"。只读层始终可用,负责获取账户状态、持仓信息、历史成交、行情数据等;动钱层默认关闭,需要通过环境变量显式开启。未开启时,动钱工具根本不暴露在工具列表中——AI连"乱下单"的入口都没有。据mt5-trading-mcp项目(MIT License),安全模型包含三层防护:preflight检查(执行前验证)+ human-consent gate(人工确认)+ audit log(操作审计),缺一不可。
只读层(始终可用):
• get_account_status:获取账户余额、净值、保证金
• get_positions:获取当前所有持仓(品种、手数、盈亏、Magic Number)
• get_open_orders:获取挂单
• get_history:获取历史成交
• get_market_data:获取指定品种的实时行情/K线数据
• get_ea_status:获取EA运行状态(运行时间、最近交易、当前信号)
动钱层-平/改(需显式开启):
• close_position:平仓
• modify_position:修改止损/止盈
• cancel_order:撤单
动钱层-开仓(独立开关,需二次确认):
• open_position:开仓
权限控制通过环境变量实现:
# 开启平/改权限 EASYDEAL_TRADING_WRITE=1 # 开启开仓权限(独立于平/改,更严格的控制) EASYDEAL_TRADING_WRITE_OPEN=1 # 未设置时,AI只能查看数据,不能做任何交易操作
2.3 安全红线:4条不可逾越的规则
风险:规则1——Magic Number隔离。AI通过MCP开的单,Magic Number必须避开所有在运行EA的Magic Number,否则EA会误认AI的单为自己的单去管理,导致不可预期的行为。建议为AI单独分配Magic Number段(如900000000+)。这一规则来源于EasyDeal开源项目(GPL-3.0)的实践总结。
风险:规则2——手数量化。下单手数必须按券商的volume_step/min/max取整,否则直接收到"Invalid volume"退单。不同券商的差异巨大:有的volume_step是0.01,有的是0.1;最小手数有0.01也有0.1。MCP Server必须在发送订单前自动做取整处理。
风险:规则3——返回值必须带ok字段。每个工具返回的JSON必须包含ok: true/false字段,否则AI会把错误结果误判为成功。这是多个开源项目(包括mt5-trading-mcp和mcp-metatrader5-server)在实践中踩过的坑。如果返回只有数据没有状态标记,AI无法区分"操作成功返回了数据"和"操作失败返回了错误信息"。
规则4——写操作二次确认。所有动钱操作必须经过完整的三级安全链:preflight检查(验证参数合法性、检查持仓是否存在)→ human-consent gate(需要人工确认才执行)→ audit log(操作结果写入审计日志),缺一不可。
三、实战:从零搭建你的第一个MT5 MCP Server
3.1 环境准备
操作指南:前提条件检查清单:①Windows系统(MT5必须在Windows上运行);②MT5 Build 6060或更高版本(建议直接升级到最新的6090,检查方法:Help → About);③Python 3.10+(MetaTrader5 Python库要求3.10+,注意Windows 7不支持AI Assistant);④一个MT5交易账户(强烈建议先用Demo账户测试);⑤已安装的AI工具(Claude Code/Codex CLI/其他MCP兼容工具)。
安装依赖:
# 方式一:使用现成的mt5-trading-mcp包(推荐新手) pip install MetaTrader5 mt5-trading-mcp # 方式二:使用mcp-metatrader5-server(基于FastMCP) pip install MetaTrader5 mcp-metatrader5-server # 方式三:从零搭建(本文后续演示) pip install MetaTrader5 fastmcp
操作指南:三种方式的选择建议——如果你只是想快速体验AI Agent监管EA的效果,选方式一或方式二,pip安装后5分钟即可运行;如果你想理解MCP Server的底层原理并做定制化开发,选方式三从零搭建。本文以方式三为主线,同时给出方式一、二的快速启动命令。
3.2 MCP Server核心代码实现
Step 1:MT5连接管理器
# mt5_mcp_server.py from fastmcp import FastMCP import MetaTrader5 as mt5 import os, json # 初始化MCP Server mcp = FastMCP("MT5-MCP-Server") # MT5连接管理器 def ensure_mt5_connected(): """确保MT5已连接,未连接则自动初始化""" if not mt5.terminal_info(): if not mt5.initialize(): return {"ok": False, "error": "MT5初始化失败"} return {"ok": True}
Step 2:定义只读工具(以get_positions为例)
@mcp.tool() def get_positions(magic_number: int = None) -> str: """获取当前所有持仓信息。 可选参数magic_number用于过滤特定EA的持仓。""" conn = ensure_mt5_connected() if not conn["ok"]: return json.dumps(conn) positions = mt5.positions_get() if positions is None: return json.dumps({"ok": True, "positions": []}) # 按Magic Number过滤 if magic_number is not None: positions = [p for p in positions if p.magic == magic_number] result = [] for p in positions: result.append({ "ticket": p.ticket, "symbol": p.symbol, "type": "BUY" if p.type == mt5.POSITION_TYPE_BUY else "SELL", "volume": p.volume, "price_open": p.price_open, "profit": p.profit, "sl": p.sl, "tp": p.tp, "magic": p.magic, "comment": p.comment }) return json.dumps({"ok": True, "count": len(result), "positions": result})
知识点:注意代码中的两个关键设计:①每个工具返回值都包含"ok": True/False字段——这是AI判断操作成败的唯一依据,缺少它AI会把错误信息误读为成功结果;②@mcp.tool()装饰器的docstring会被自动提取为工具描述——AI Agent根据这段文字来决定何时调用这个工具,所以docstring必须清晰准确,用自然语言描述工具的功能和参数。
Step 3:定义动钱工具(以close_position为例)
@mcp.tool() def close_position(ticket: int) -> str: """平掉指定持仓。需要环境变量EASYDEAL_TRADING_WRITE=1。 参数ticket为持仓票号,可通过get_positions获取。""" # 权限检查 if os.environ.get("EASYDEAL_TRADING_WRITE") != "1": return json.dumps({ "ok": False, "error": "交易权限未开启,请设置EASYDEAL_TRADING_WRITE=1" }) # 验证持仓存在 pos = mt5.positions_get(ticket=ticket) if not pos: return json.dumps({ "ok": False, "error": f"持仓{ticket}不存在" }) # 构造平仓请求 position = pos[0] close_type = mt5.ORDER_TYPE_SELL if position.type == mt5.POSITION_TYPE_BUY else mt5.ORDER_TYPE_BUY request = { "action": mt5.TRADE_ACTION_DEAL, "symbol": position.symbol, "volume": position.volume, "type": close_type, "position": ticket, "price": mt5.symbol_info_tick(position.symbol).ask if close_type == mt5.ORDER_TYPE_BUY else mt5.symbol_info_tick(position.symbol).bid, "deviation": 20, "magic": position.magic, "comment": "MCP close_position", } result = mt5.order_send(request) return json.dumps({ "ok": result.retcode == mt5.TRADE_RETCODE_DONE, "ticket": result.order, "retcode": result.retcode, "comment": result.comment })
3.3 品种名模糊匹配——处理券商后缀差异
操作指南:不同券商的品种名不同是MCP Server最常见的"隐形坑"。XAUUSD在你的券商可能叫XAUUSDm、XAUUSD.c或XAUUSD_pro。解决方案是先精确匹配,失败后遍历全品种表做模糊匹配:先尝试mt5.symbol_info(symbol),返回None时触发模糊匹配——遍历mt5.symbols_get(),查找以用户输入为前缀的品种名。这个设计来自EasyDeal和mt5-trading-mcp的实战经验。
def resolve_symbol(symbol: str) -> str: """解析品种名,处理券商后缀差异""" # 精确匹配 if mt5.symbol_info(symbol): return symbol # 模糊匹配:查找以输入为前缀的品种 all_symbols = mt5.symbols_get() candidates = [s.name for s in all_symbols if s.name.startswith(symbol)] if len(candidates) == 1: return candidates[0] elif len(candidates) > 1: return f"歧义:匹配到{candidates},请指定完整品种名" else: return f"未找到品种:{symbol}"
3.4 启动与测试
# 启动自定义MCP Server(stdio模式,适合本地AI工具) python mt5_mcp_server.py # 使用现成包的快速启动 python -m mt5_trading_mcp serve # 验证连接(mt5-trading-mcp内置doctor命令) python -m mt5_trading_mcp doctor # 应输出 [INFO] backend: native 和 [PASS] 行 # HTTP模式(远程访问,需创建.env配置) # .env文件内容: # MT5_MCP_TRANSPORT=http # MT5_MCP_HOST=127.0.0.1 # MT5_MCP_PORT=8000
四、AI Agent对接:3种主流工具的接入方式
4.1 Claude Code接入
Claude Code是目前最主流的MCP客户端之一。接入你的MT5 MCP Server非常简单:
配置方法:在项目根目录的.mcp.json中添加配置:
{
"mcpServers": {
"mt5": {
"command": "python",
"args": ["mt5_mcp_server.py"]
}
}
}
// 或使用现成的mcp-metatrader5-server:
{
"mcpServers": {
"mt5": {
"command": "uvx",
"args": ["--from", "mcp-metatrader5-server", "mt5mcp"]
}
}
}
操作指南:配置完成后启动Claude Code,它会在工作目录启动时自动连接MCP Server。可以直接用自然语言交互:"查看我当前所有持仓,分析哪个持仓风险最大"、"分析我最近3个月的交易历史,找出盈利最多的策略"、"EURUSD H1级别目前是什么趋势?最近的支撑/阻力位在哪?"。Claude Code会自动选择合适的MCP工具,获取数据后进行分析和回复。
4.2 Codex CLI接入
Codex CLI的优势在于:原生支持MT5回测、可以读写MQL5代码、直接在终端完成"分析→编码→测试"闭环。
配置方法:通过命令行注册MCP Server:
# 注册MCP Server claude mcp add mt5 -- python mt5_mcp_server.py # 或通过fastmcp安装(推荐,自动处理依赖) uv run fastmcp install claude-code src/mt5_mcp/main.py # 验证注册成功 claude mcp list
Codex CLI实战场景:
• "读取当前EA的源码,分析是否有潜在bug"
• "根据最近7天的持仓数据,建议优化止损参数"
• "修改EA的风险管理模块,将单笔风险从2%降到1%"
• "运行回测对比修改前后的效果"
操作指南:Codex CLI与eafxtech推荐的EA开发工作流天然契合——先让Codex通过MCP读取当前EA运行数据,再分析数据发现问题,然后直接修改MQL5代码,最后用MT5策略测试器跑回测验证。整个"数据→分析→修改→验证"闭环在一个终端内完成,不需要在多个工具间切换。
4.3 MT5内置AI Assistant
如果你不想折腾外部工具,MT5内置的AI Assistant是零配置的起点:
启动方式:登录MQL5.community账号,免费MQL5 Lite计划自动开通。Build 6090后能力进一步增强。
内置能力(Build 6090最新):
• 市场分析:趋势识别、支撑阻力、市场事件
• 持仓分析:风险评估、敞口统计
• 交易历史:策略复盘、盈利分析
• 全品种扫描:发现突破/趋势信号
• 新增:向图表添加指标、获取全量指标参数列表
安全设置:可分别控制AI的交易权限、网络请求权限、命令行权限。对于初学者,建议先只开放分析类权限,不开交易权限。
重点:内置AI Assistant适合快速分析和简单操作,但它受限于MT5终端内的环境。如果你的需求涉及复杂的代码修改、多步骤的自动化流程、或与其他系统(如Fay数字人、自研风控系统)集成,仍然建议外接Claude Code或Codex CLI。内置AI是"轻量工具",外接AI是"重型装备",两者互补而非替代。
五、生产环境部署建议与避坑指南
5.1 VPS部署架构
操作指南:VPS配置建议:①最低配置2核4G(参考Database Mart用户实测数据:7-9个EA实例 + MCP Server,CPU使用率7-50%,内存45-60%,147天无中断运行);②进程管理:MT5终端 + MCP Server + AI Agent进程需同时运行,建议使用Windows任务计划程序或进程管理工具确保自动重启;③网络要求:VPS选择离Broker服务器近的机房(ping < 20ms),MCP通信本身在本地环回(localhost),不增加交易延迟;④安全注意:MCP Server只监听localhost(127.0.0.1),不暴露到公网;如需远程访问,使用SSH隧道。
5.2 6个常见坑与解决方案
风险:坑1——MT5版本过低。必须Build 6060+才有原生MCP支持。如果你的券商还没推送更新,可以从MetaQuotes官网手动下载最新安装包。检查方法:Help → About → 查看Build号。
坑2——Python版本不匹配。MetaTrader5 Python库要求Python 3.10+。Windows 7已不再支持AI Assistant(Build 6090已禁用Win7上的AI功能)。建议直接升级到Windows 10/11。
坑3——Magic Number冲突。这是最容易被忽视的坑。AI和EA使用了相同的Magic Number,导致EA把AI的单当成自己的单去管理,或AI把EA的单当成自己的去平仓。解决方案:为AI单独分配Magic Number段(建议900000000+),并在MCP Server代码中硬编码检查。
坑4——品种名硬编码。不同券商品种名不同,前文已详细讲解。关键是MCP Server中必须有模糊匹配兜底逻辑,不能假设"XAUUSD就是XAUUSD"。
坑5——返回值缺少ok字段。AI无法判断操作成败,可能把错误结果当成功。必须所有工具统一返回{"ok": bool, ...}格式。
重点:坑6——动钱权限过早开启。这是生产环境最重要的安全建议:先在只读模式下运行1-2周,确认AI的分析结果准确、可靠后,再逐步开放平/改权限。开仓权限要更加谨慎——建议至少运行1个月只读模式、2周平/改权限后,才考虑是否开启开仓权限。权限开启是单向的信任积累过程,不要跳步。
六、实战场景演示:AI Agent监管EA的一天
为了让你直观感受MCP + AI Agent的实际价值,我们用一个时间线展示"AI Agent监管EA的一天":
(以下为虚拟场景演示,所有数据和金额均为虚构,不代表任何实际交易收益或承诺。)
08:00 早盘启动:AI Agent自动获取账户状态、检查所有EA运行状态、报告过夜交易结果。你会收到类似这样的消息:"昨夜EURUSD_EA执行了3笔交易,盈利+$127;GBPJPY_EA持仓过夜,当前浮盈+$45。所有EA运行正常,无异常日志。"
10:30 异常检测:EA_A的持仓时间超过预设阈值(正常应2小时内平仓),AI发出告警:"EA_A的EURUSD多单已持仓3小时22分,超过预设的2小时阈值。当前浮盈+$18。是否需要干预?"
14:00 数据行情:财经日历显示15:30有CPI数据,AI建议:"15:30将公布美国CPI数据,历史波动率较高。建议暂停加仓类策略,或收紧已有持仓的止损。"
15:30 数据公布后:AI监控波动率变化,确认EA_B的止损设置是否能承受当前波动:"XAUUSD波动率从日均0.5%升至1.2%,EA_B的50点止损在当前波动下可能偏紧,建议评估是否放宽至80点。"
20:00 日终复盘:AI汇总当日所有交易、分析盈利/亏损原因、建议参数调整:"今日总交易8笔,盈利6笔,亏损2笔,净利润+$234。盈利交易集中在趋势行情中,亏损交易发生在震荡区间。建议评估是否增加震荡行情过滤器。"
进阶原理:注意上述场景中的一个核心设计:所有策略执行仍由EA负责,AI的角色是"监管者+分析者+建议者"。AI不会擅自修改EA的交易逻辑——除非你明确授权。这就是"交易归EA、监管归Agent"的实际体现。这种架构既发挥了EA高速执行的优势,又增加了AI的全局监控和智能分析能力,两者各取所长。
七、结语:EA开发的下一个十年
MCP不是一个工具,而是一个生态标准——就像USB统一了外设接口,MCP统一了AI与应用的接口。据MCP World统计,目前已有数百个MCP Server项目覆盖各个领域,而MT5作为全球最大的零售交易平台之一加入MCP生态,意味着AI Agent+交易的基础设施已经就绪。
对于EA开发者的建议路径:
• 第一步:理解MCP概念(本文已完成 ✓)
• 第二步:用现成的MCP工具包(如mt5-trading-mcp或mcp-metatrader5-server)体验AI Agent读取你的MT5数据
• 第三步:为自己的EA增加MCP接口——让AI能监控你的EA运行状态
• 第四步:构建"EA + AI Agent"的完整交易系统——策略执行归EA,监控分析归Agent
如果你对MCP Server开发有具体需求,或者想为你的EA增加AI Agent监控能力,可以整理你的需求发给我们。eafxtech团队在EA定制开发和AI集成方面有丰富的实战经验,可以提供从MCP Server搭建到AI Agent对接的全链路技术服务。
下一篇,我们将基于本文的MCP架构,深入讲解"如何用AI Agent实现多EA组合的自动化再平衡"——从单个EA的AI监管,升级到多EA组合的AI智能管理。敬请关注。
操作指南:推荐阅读本系列的另外两篇文章,构成"AI+EA三维度"完整知识体系:①《AI辅助EA代码审查》(7/21)——教你用AI工具审查EA代码质量和潜在bug;②《MT5 ONNX原生AI实战》(7/27)——教你在EA内部运行机器学习模型。今天这篇(7/30/8/3)补齐了第三个维度——架构集成层。三篇配合阅读,你将掌握AI+EA的全部技术栈。
风险提示:本文内容仅为MT5 MCP协议开发的技术讨论,不构成任何投资建议或交易策略推荐。本网站(eafxtech.com)仅提供软件开发与技术服务,不涉及任何交易平台运营或经纪业务。文中涉及的代码示例、架构设计和部署建议均为技术参考,实际运行效果可能因券商环境、网络条件和账户配置不同而有差异。AI Agent辅助操作不改变交易的风险本质,所有交易决策和执行均由用户自行负责。引用第三方开源项目(EasyDeal、mt5-trading-mcp、mcp-metatrader5-server等)需遵循其各自的开源协议(GPL-3.0/MIT),使用过程中产生的问题由用户自行承担。
🎬 关注晓辉编程视频号
MT4/MT5 EA开发实战 | 技术方法探讨 | 编程技巧干货

微信搜索:晓辉编程
💬 添加晓辉为好友
一对一交流EA开发 | 定制需求咨询 | 进技术交流群

微信号:XiaoHuiProgramming