MetaTrader 5 MCP Bridge

io.github.vincentwongsoPublished by GitHub account vincentwongsov1.4.2Updated Oct 24, 2026

Let an AI agent read and trade a MetaTrader 5 account over MCP, behind a human-approval gate.

VerifiedSTDIODesktop onlyFinanceDeveloper Tools

Overview

AI-generated overview

A local MCP bridge that lets an AI assistant read a MetaTrader 5 account and place, modify, cancel or close trades, with an optional human-approval gate.

What you can do
Read account details, quotes, open positions, pending orders, trade history and OHLC bars, plus broker-side margin estimates and native chart screenshots on Windows only. Place, modify, cancel and close orders, each routed through preflight checks, an optional consent step, idempotency and an audit log. Subscribe to live account, positions and per-symbol quote snapshots that push change notifications.
When to use it
For traders who want an AI agent to monitor a MetaTrader 5 account and execute trades on their behalf, ideally on a demo account first. Useful when you want a human approval step and a replayable audit trail on agent-initiated orders.
Requirements
Runs locally as a Python 3.10+ process (PyPI package, run with uvx or python -m), on Windows natively or Linux via an all-in-one Docker image. Needs a running MetaTrader 5 terminal logged into a broker with AlgoTrading enabled. Optional environment variables MT5_LOGIN, MT5_PASSWORD and MT5_SERVER override the terminal login; the password is env-only. Chart screenshots need a GUI terminal and a separately installed MQL5 Expert Advisor.
Before you install
It places real orders with irreversible fills on the connected account; test on a demo account first. The human-consent gate is off by default, so mutating calls auto-execute unless auto_approve_notional is set above zero, and preflight limits and symbol allow/deny lists are also off by default. It handles the account password via MT5_PASSWORD. The project states it is not the security boundary; broker limits are the hard control. Every mutating call is written to an audit log.

Installation

In SourceWeft

  1. Open MetaTrader 5 MCP Bridge in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

MetaTrader 5 MCP Bridge

Let an AI agent manage your MetaTrader 5 account over Model Context Protocol - with configurable human approval gate.

[PyPI version] [PyPI downloads] [Python] [License: MIT] [Tests] [GitHub stars] [MCP] [Ruff]

[mt5-mcp demo: an AI agent places and closes a live trade over MCP]
A Hermes agent placing then closing a real 0.01-lot trade on a demo account, end-to-end over MCP on Linux.

[The same round-trip in MetaTrader 5's History tab]
Not a mock-up - the same round-trip in MetaTrader 5's own History tab; the tickets and balance match the recording.

⚠️ This software places real trades through your MetaTrader 5 terminal with real orders and irreversible fills. Read DISCLAIMER.md and SECURITY.md before connecting it to a live account. Always test using your demo account first.

Runs locally - in the same process tree as your agent, no cloud, no telemetry. Windows (native) or Linux (via Docker); Python 3.10+.

📖 The story behind this: this project is built step by step in Wiring AI agent into MetaTrader 5, Part 1 of the Trade with AI agent series on the Fintrix engineering blog.

What it is

mt5-mcp lets an AI agent read your MetaTrader 5 account and place trades through it, over the Model Context Protocol.

  • 12 read-only tools: account, quotes, positions, orders, history, OHLC bars, broker-authoritative margin estimates, and native chart screenshots (Windows). No consent gate.
  • 4 mutating tools: place_order, modify_order, cancel_order, close_position, each behind a preflight + human-consent + idempotency + audit layer.
  • 3 subscribable resources: live account://, positions://, and quotes://{symbol} snapshots that push change notifications.
  • 2 ready-to-use Claude Code skills ship in .claude/skills/: mt5-market-data and mt5-trading teach an agent how to read the account and run the consent flow safely.

Full catalogue and the consent flow: docs/tools.md.

Why mt5-mcp

  • A safety layer, not just an API wrapper. Every mutating call routes through preflight checks -> an opt-in human-consent gate (arm it to require approval) -> idempotency -> an append-only audit log, so you can put a human in the loop on trades and always keep a replayable record of what the agent did.
  • An honest threat model. It treats an LLM wired to place_order as a live attack surface and says so plainly - the MCP is explicitly not the security boundary (see SECURITY.md).
  • Verifiable proof, not a mock-up. The demo above is a real round-trip; the tickets and balance match MetaTrader 5's own History tab.
  • Local-first. No cloud, no telemetry; runs beside your agent. Windows-native or Linux via an all-in-one Docker image (no rpyc version-matching).

Quickstart (Windows, native)

bash
pip install mt5-trading-mcp
  1. Launch MetaTrader 5 and log into your broker. Enable AlgoTrading (toolbar button green).
  2. Verify the terminal is reachable: python -m mt5_mcp doctor: expect [INFO] backend: native and [PASS] lines.
  3. Run it: python -m mt5_mcp serve.

Wire it to OpenClaw in one command (registers the mcp.servers entry):

bash
openclaw mcp set mt5-mcp '{"command":"python","args":["-m","mt5_mcp","serve"]}'

Quickstart (Linux, Docker)

The MT5 terminal + the MCP run headless in an all-in-one image; your agent talks MCP over HTTP. No host Python, no bridge.

bash
cp deploy/.env.example deploy/.env   # add MT5_LOGIN / MT5_PASSWORD / MT5_SERVERdocker compose -f deploy/docker-compose.yml up -d

Log the terminal in once via the KasmVNC web UI at http://127.0.0.1:3001 (File -> Login to Trade Account; persists across restarts), then point your agent at http://127.0.0.1:8765/mcp. Wire it to OpenClaw in one command:

bash
openclaw mcp set mt5-mcp '{"url":"http://127.0.0.1:8765/mcp","transport":"streamable-http"}'

Full walkthrough: docs/installation.md.

Chart screenshots (Windows only)

get_chart_screenshot(symbol, timeframe, annotations?) returns a PNG of the native MT5 chart, optionally annotated, so an LLM can read it visually (candles, support/resistance, patterns). Because the MetaTrader5 Python API cannot capture charts, this uses a small MQL5 Expert Advisor that runs inside a GUI terminal and calls ChartScreenShot().

See Chart annotations for marking up support/resistance lines, trendlines and notes before capture.

Setup (one time):

  1. Install and attach the AgentScreenshot EA - see mql5/README.md.
  2. Optionally set a template so your indicators/drawings appear in the shot: [screenshot] template = "agent.tpl" in your config, or leave it unset for the default chart.

Config knobs ([screenshot] section): width (default 1600), height (default 900), template (default none), timeout_s (default 10).

Not available on the headless Linux/Docker deployment: it needs a GUI terminal. Off Windows the tool returns SCREENSHOT_NOT_SUPPORTED.

For AI agents

If you've been handed this repository to install and run, follow the runbook in docs/agents.md. It covers platform detection, install, verification, registering the server, and the hard safety rules for trades - read it before calling any mutating tool.

Documentation

GuideWhat's in it
Installation & setupRequirements, Windows + Linux/Docker setup, wiring to an agent.
For AI agentsStep-by-step runbook for an agent installing and running the server.
Configurationconfig.toml schema, storage paths, hot-reload.
Tools & resourcesRead tools, mutating tools + consent flow, subscribable resources.
MCP client setupPer-client config snippets and Claude Code usage.
Transports & deploymentstdio/HTTP transports and Windows VPS patterns.
ContributingHow to contribute and run the tests.
ChangelogRelease history and known limitations.

Safety

mt5-mcp is not the security boundary, the broker's MT5 server enforces the hard limits (margin, max-lot, symbol permissions). Pre-flight checks in the policy engine are UX guardrails to catch agent mistakes early, not security controls.

The human-consent gate is opt-in and off by default: auto_approve_notional defaults to 0, so mutating calls auto-execute (full-open) - intended for trusted or unattended agents. Arm the gate by setting auto_approve_notional > 0: orders/closes whose notional is at or above it then return an ApprovalPreview you must confirm, and modifying a stop to widen or remove it also requires approval. The pre-flight limits (max_*) and symbol allow/deny lists are likewise opt-in (0 / empty = off). Every mutating call is recorded in an append-only audit JSONL log regardless. For vulnerability disclosure, see SECURITY.md.

Architecture

mt5-mcp wraps the MetaTrader 5 Python library behind a FastMCP server. A single MT5Client (src/mt5_mcp/adapter/) owns the terminal connection, broker-timezone inference, and type conversions; everything else sits on top of it. The Pydantic models in src/mt5_mcp/types.py / src/mt5_mcp/config.py are the source of truth for the data and config schemas.

     Agent / MCP client  (Hermes, OpenClaw, Claude Code, Claude Desktop, …)                               │                               │   stdio  ·  loopback HTTP                               ▼ ┌──────────────────────────────────────────────────────────┐ │                      FastMCP server                      │ │                                                          │ │   tools/        resources/        policy/                │ │   read +        subscribable      consent · idempotency  │ │   mutating      account/quotes    · audit (JSONL)        │ │                                                          │ │   streaming/  - change-detection poller + dispatcher     │ │   types.py · config.py - Pydantic schemas: source of     │ │                          truth for data + config         │ │                                                          │ └──────────────────────────────────────────────────────────┘                               │                               ▼ ┌──────────────────────────────────────────────────────────┐ │                                                          │ │   adapter/  MT5Client                                    │ │   one terminal connection · broker-TZ inference ·        │ │   type conversions · transparent reinit                  │ │                                                          │ └──────────────────────────────────────────────────────────┘                               │                               ▼MetaTrader 5 Python library  ->  broker terminal  ->  broker server

The module paths shown (tools/, resources/, policy/, streaming/, adapter/, types.py, config.py) all live under src/mt5_mcp/.

Contributing

Contributions are welcome, see CONTRIBUTING.md for the dev setup, test workflow, and project principles.

License

MIT - see LICENSE.

Source: README.md at commit d433842

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v1.4.2LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts