关于 MetaTrader 5 MCP Server
MetaTrader 5 MCP Server 是面向 MetaTrader 5 交易平台的 MCP 服务,供 AI 助手访问行情数据、执行交易操作并分析交易历史。适合需要通过 AI 辅助外汇或交易分析的用户。
主要功能
- 01连接 MetaTrader 5 终端与交易账户
- 02获取品种、K线和逐笔报价数据
- 03下单、查询持仓与挂单
- 04查询历史订单与成交记录
适用场景
- 01让 AI 助手查询品种行情与历史K线
- 02通过自然语言检查并提交交易订单
- 03分析一段时间内的交易历史
MCP 相关
该项目是 MCP 服务,将 MetaTrader 5 的连接、行情、交易和历史查询功能以工具与资源的形式提供给 MCP 客户端。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
MetaTrader 5 MCP 服务
一个适用于 MetaTrader 5 的模型上下文协议(MCP)服务,可让 AI 助手与 MetaTrader 5 平台交互,进行交易和市场数据分析。文档
功能
- 连接到 MetaTrader 5 终端
- 访问市场数据(交易品种、报价、行情跳动)
- 下单并管理交易
- 分析交易历史记录
- 通过模型上下文协议与 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 或更高版本
- MetaTrader 5 终端,已安装在 Windows 上
- MetaTrader 5 账户(模拟或真实账户)
用法
快速开始
默认情况下,服务以 stdio 模式运行,供 Claude Desktop 等 MCP 客户端使用:
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 安装(推荐)
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 或其他大模型配置文件中:
{
"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):从特定位置获取 K 线柱copy_rates_from_date(symbol, timeframe, date_from, count):从特定日期获取 K 线柱copy_rates_range(symbol, timeframe, date_from, date_to):获取指定日期范围内的 K 线柱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
致谢
- 感谢 MetaQuotes 提供 MetaTrader 5 平台
- 感谢 FastMCP 实现 MCP 服务
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。
