项目简介

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 框架开发,安装和部署过程简洁高效。

安装步骤

  1. 环境准备: 确保已安装 Python 3.8 或更高版本,并已安装 MetaTrader 5 客户端。
  2. 安装依赖: 在项目根目录下,运行以下命令安装项目依赖:
    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' 数组可以为空 '[]'。

基本使用方法

  1. 启动服务器: 根据 "服务器配置" 中的说明,配置 MCP 客户端,并使用配置信息中的 'command' 和 'args' 启动 MetaTrader 5 MCP Server。
  2. 连接 MT5 客户端: 确保 MetaTrader 5 客户端已安装并运行。首次使用可能需要使用 'initialize()' 工具初始化 MT5 终端连接。
  3. 登录交易账户: 使用 'login(account, password, server)' 工具登录您的 MetaTrader 5 交易账户。
  4. 使用工具和资源: 通过 MCP 客户端调用服务器提供的各种工具(例如 'get_symbols()', 'copy_rates_from_pos()', 'order_send()' 等)和资源(例如 'mt5://timeframes', 'mt5://trading_guide' 等),实现市场数据查询、交易操作和信息获取。
  5. 利用 Prompt 模板: 使用预定义的 Prompt 模板(例如 'connect_to_mt5()', 'analyze_market_data()', 'place_trade()' 等)引导 AI 助手与用户进行自然语言交互,完成复杂的交易任务。
  6. 关闭连接: 在完成操作后,可以使用 '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()

信息

分类

商业系统