这是一个用于 MetaTrader 5 的模型上下文协议(MCP)服务器,允许AI助手与MetaTrader 5平台进行交互,以实现交易和市场数据分析。文档
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
服务器默认以标准I/O模式运行,适用于如Claude Desktop等MCP客户端:
uv run mt5mcp
为了使用HTTP传输进行测试,请创建一个.env文件:
MT5_MCP_TRANSPORT=http
MT5_MCP_HOST=127.0.0.1
MT5_MCP_PORT=8000
然后运行:
uv run mt5mcp
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"
]
}
}
}
git clone https://github.com/Qoyyuum/mcp-metatrader5-server
cd mcp-metatrader5-server
克隆仓库后,运行以下命令:
对于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
在您的claude_desktop_config.json或其他LLM配置文件中添加以下内容:
{
"mcpServers": {
"mcp-metatrader5-server": {
"command": "uvx",
"args": [
"--from",
"mcp-metatrader5-server",
"mt5mcp"
]
}
}
}
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): 从特定位置获取条形图copy_rates_from_date(symbol, timeframe, date_from, count): 从特定日期获取条形图copy_rates_range(symbol, timeframe, date_from, date_to): 在日期范围内获取条形图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): 获取历史成交# 初始化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=mt5.symbol_info_tick("EURUSD").ask,
deviation=20,
magic=123456,
comment="买入订单",
type_time=mt5.ORDER_TIME_GTC,
type_filling=mt5.ORDER_FILLING_IOC
)
# 发送订单
result = order_send(request)
# 关闭连接
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 # 入口点,包含main()
│ ├── main.py # 包含所有工具的FastMCP服务器
│ └── test_client.py # 开发用的测试客户端
├── docs/
│ ├── getting_started.md
│ ├── market_data_guide.md
│ ├── trading_guide.md
│ └── publishing.md
├── .env # 环境配置(从.env.example创建)
├── README.md
├── pyproject.toml # 项目元数据(使用hatchling)
└── uv.lock # 依赖锁定文件
使用uv(推荐):
uv build
这将在dist/目录下创建wheel和源分布。
使用uv:
# 首先构建
uv build
# 发布到PyPI
uv publish
# 或者首先发布到TestPyPI
uv publish --publish-url https://test.pypi.org/legacy/
MIT