项目简介
MetaTrader 5 MCP Server 是一个基于 Model Context Protocol (MCP) 的应用后端,专为 MetaTrader 5 交易平台设计。它旨在作为 AI 助手与 MT5 平台之间的桥梁,通过标准化的 MCP 协议,使 AI 助手能够安全、便捷地访问市场数据、执行交易操作和管理交易账户。该服务器集成了丰富的工具和资源,并提供 AI 友好的 Prompt 模板,助力开发者构建智能化的金融交易应用。
主要功能点
- 市场数据访问: 提供丰富的市场数据查询工具,包括获取实时报价、历史价格数据(K线数据和Tick数据)、交易品种信息等,满足 AI 助手对市场数据的多样化需求。
- 交易操作: 支持全面的交易操作功能,包括下单、管理持仓、查询订单历史和成交记录等,使 AI 助手能够执行复杂的交易策略。
- 账户管理: 允许 AI 助手安全地访问和管理交易账户信息,如账户余额、净值、杠杆等,方便进行风险评估和账户监控。
- AI 友好: 内置 Prompt 模板,针对常见的交易场景预设了对话流程,降低 AI 助手的使用门槛,提升交互体验。
- 易于部署: 基于 FastMCP 框架开发,安装和部署过程简洁高效。
安装步骤
- 环境准备: 确保已安装 Python 3.8 或更高版本,并已安装 MetaTrader 5 客户端。
- 安装依赖: 在项目根目录下,运行以下命令安装项目依赖:
pip install -r requirements.txt
服务器配置
MCP 客户端需要配置以下 JSON 信息以连接到 MetaTrader 5 MCP Server:
{ "serverName": "mt5-server", "command": "fastmcp", "args": ["dev", "main.py"], "transport": "stdio", "capabilities": ["tools", "resources", "prompts"] }
参数注释:
- 'serverName': MCP 服务器的名称,可以自定义,例如 "mt5-server"。
- 'command': 启动 MCP 服务器的命令,这里使用 'fastmcp' 命令行工具。
- 'args': 传递给 'fastmcp' 命令的参数,'["dev", "main.py"]' 表示以开发模式运行 'main.py' 文件。开发模式支持热重载,方便调试和测试。注意: 如果要部署到生产环境,应将 'dev' 替换为 'install' 并移除 'main.py' 参数,具体请参考 FastMCP 的部署文档。
- 'transport': MCP 客户端与服务器之间的通信方式,这里使用 'stdio' 标准输入输出流。
- 'capabilities': 声明服务器提供的功能,包括 'tools' (工具)、'resources' (资源) 和 'prompts' (Prompt 模板)。
注意: 实际部署时,'command' 和 'args' 需要根据 FastMCP 的安装方式和 'main.py' 文件的实际路径进行调整。 如果使用 'fastmcp install main.py' 安装后,'args' 数组可以为空 '[]'。
基本使用方法
- 启动服务器: 根据 "服务器配置" 中的说明,配置 MCP 客户端,并使用配置信息中的 'command' 和 'args' 启动 MetaTrader 5 MCP Server。
- 连接 MT5 客户端: 确保 MetaTrader 5 客户端已安装并运行。首次使用可能需要使用 'initialize()' 工具初始化 MT5 终端连接。
- 登录交易账户: 使用 'login(account, password, server)' 工具登录您的 MetaTrader 5 交易账户。
- 使用工具和资源: 通过 MCP 客户端调用服务器提供的各种工具(例如 'get_symbols()', 'copy_rates_from_pos()', 'order_send()' 等)和资源(例如 'mt5://timeframes', 'mt5://trading_guide' 等),实现市场数据查询、交易操作和信息获取。
- 利用 Prompt 模板: 使用预定义的 Prompt 模板(例如 'connect_to_mt5()', 'analyze_market_data()', 'place_trade()' 等)引导 AI 助手与用户进行自然语言交互,完成复杂的交易任务。
- 关闭连接: 在完成操作后,可以使用 'shutdown()' 工具安全关闭与 MetaTrader 5 终端的连接。
示例工作流程 (参考 README.md):
-
连接并获取市场数据:
# 初始化 MT5 initialize() # 登录交易账户 login(account=123456, password="your_password", server="your_server") # 获取可用交易品种 symbols = get_symbols() # 获取 EURUSD 近期价格数据 rates = copy_rates_from_pos(symbol="EURUSD", timeframe=15, start_pos=0, count=100) # 关闭连接 shutdown() -
下单交易:
# 初始化并登录 initialize() login(account=123456, password="your_password", server="your_server") # 创建订单请求 request = OrderRequest( action=mt5.TRADE_ACTION_DEAL, symbol="EURUSD", volume=0.1, type=mt5.ORDER_TYPE_BUY, price=1.1, deviation=20, magic=123456, comment="Buy order", type_time=mt5.ORDER_TIME_GTC, type_filling=mt5.ORDER_FILLING_IOC ) # 发送订单 result = order_send(request) # 关闭连接 shutdown()
信息
分类
商业系统