MetaTrader 5 mit Claude verbinden – die MCP-Bridge
Das hier ist Teil unseres umfassenden Guides Trading-Bot mit Claude bauen und dreht sich um die konkrete Brücke zwischen Claude und MT5. Wenn du Forex, Indizes oder Metalle tradest, kommst du an MetaTrader 5 nicht vorbei – fast jeder europäische Retail-Broker und alle relevanten Prop-Firms (FTMO, MyForexFunds, FundingPips) laufen darauf. Und MT5 hat seit MetaQuotes 2019 eine offizielle Python-Library, die dir genau das gibt was du brauchst: programmatischen Zugriff auf Account, Daten und Orders.
Was du am Ende dieses Artikels hast: ein klares mentales Modell, wie die drei Schichten (MT5-Terminal, Python-Bridge, Claude über MCP) zusammenspielen, einen lauffähigen Setup-Pfad in unter 30 Minuten, konkreten order_send-Code mit allen Stolperfallen, einen FTMO-tauglichen Risk-Wrapper und die fünf Dinge, an denen die meisten Setups kaputtgehen bevor der erste Live-Trade läuft. Code-Snippets sind echt und funktionieren wie sie da stehen.
Was die MCP-Bridge eigentlich ist
Drei Komponenten, drei klare Rollen.
MetaTrader 5 ist das Terminal auf deinem PC oder VPS. Es hält die Broker-Verbindung, die Charts, die offenen Positionen und die Order-Pipeline. Es läuft als Windows-Anwendung (auf Linux über Wine), und MetaQuotes hat dafür eine offizielle Python-Library veröffentlicht (MetaTrader5, installierbar via pip). Diese Library spricht über einen lokalen Inter-Process-Channel mit dem Terminal – dein Python-Prozess sieht alles, was das Terminal sieht.
Die Python-Bridge ist dein eigener Code, der drei Dinge tut: Marktdaten aus MT5 ziehen, Claude für die Entscheidung fragen und Orders ans Terminal zurückgeben. Hier sitzt deine Trading-Logik, dein Risk-Wrapper und dein State-Tracking.
Claude über MCP ist die Reasoning-Schicht. MCP (Model Context Protocol) ist der seit 2024 etablierte Standard, mit dem Sprachmodelle mit externen Tools reden. Für MT5 gibt es bereits drei produktionsreife MCP-Server – wir gehen gleich auf die Auswahl ein. Du kannst Claude entweder via Claude Desktop (interaktiv, perfekt für Markt-Briefings) oder via Anthropic-API aus deinem Python-Code (automatisch, perfekt für Live-Bot) ansprechen.
Architektur-Skizze:
┌─────────────────────┐
│ Claude API/Desktop │ ◄── Reasoning, Skip-Logik, JSON-Antwort
└──────────┬──────────┘
│ MCP (Tool-Calls)
┌──────────▼──────────┐
│ Python-Bridge │ ◄── deine Logik, Risk-Wrapper
│ - get_market_ctx │
│ - ask_claude │
│ - place_order │
└──────────┬──────────┘
│ MetaTrader5-lib
┌──────────▼──────────┐
│ MT5-Terminal │ ◄── Broker-Verbindung, Orders, Charts
└──────────┬──────────┘
│ TCP/Broker-API
┌──────────▼──────────┐
│ Broker (IC Markets,│
│ Pepperstone, FTMO) │
└─────────────────────┘
Die wichtige konzeptuelle Klarstellung: MT5 ersetzt keinen Broker, sondern ist nur die Plattform, mit der du den Broker ansprichst. Dein Account, dein Spread, deine Slippage, deine Margin – alles kommt vom Broker. MT5 ist der Adapter.
MCP-Server-Auswahl: drei sinnvolle Optionen
Im Mai 2026 gibt es drei aktiv gepflegte MCP-Server für MetaTrader 5. Wir haben alle drei in der Praxis getestet, hier die ehrliche Bewertung.
ariadng/metatrader-mcp-server ist die populärste Wahl (PyPI: metatrader-mcp-server). Saubere Tool-Anzahl (~25 Tools für Account, Positionen, Orders, Historie), gute Doku, sauber gepflegtes Repo. Claude kann hier direkt aus der Desktop-App "Zeig mir mein Equity", "Schließe alle XAUUSD-Positionen", "Wie war meine R-Performance letzten Monat" interpretieren. Default-Empfehlung für die meisten Setups.
Qoyyuum/mcp-metatrader5-server ist die Variante mit dem expliziten Trading-Terminal-Assistant-Skill drin – wenn du den vollen 32-Tool-Umfang willst (inklusive History-Analyse und tieferer Markt-Resources), nimm den. Etwas mehr Boilerplate beim Setup, dafür mehr Reichweite.
Cloudmeru/MetaTrader-5-MCP-Server ist die schlankste Option, fokussiert auf reine Order-Execution. Wenn du Claude nur als Reasoning-Layer brauchst und alles drumherum selbst schreiben willst, der richtige Server.
Für 90% aller Setups ist ariadng/metatrader-mcp-server die richtige Wahl. Was du wissen musst: MCP hat von Haus aus keine Authentifizierung. Wenn du den Server irgendwo öffentlich erreichbar machst, brauchst du einen Reverse-Proxy mit Auth, eine Firewall-IP-Whitelist oder einen SSH-Tunnel. Auf einem privaten VPS hinter Firewall ist das unproblematisch, aber bitte nicht den MCP-Port via 0.0.0.0 ins Internet öffnen.
Setup in 30 Minuten
Schritt für Schritt, alles auf Windows (oder Linux mit Wine):
# 1. MetaTrader5 Python-Library
pip install MetaTrader5 pandas anthropic
# 2. MCP-Server (für Claude-Desktop-Integration)
pip install metatrader-mcp-server
Voraussetzung: MT5-Terminal ist installiert, eingeloggt bei deinem Broker (oder Demo-Account) und unter "Optionen → Expert Advisors" ist AutoTrading erlaubt angeklickt. Ohne das schickt order_send keine Order ab, sondern nur eine Fehler-Response mit retcode=10027 ("AutoTrading disabled by client") – Klassiker, den jeder einmal in seinem Leben übersieht.
Test-Skript, mit dem du in 60 Sekunden prüfst, ob alles steht:
import MetaTrader5 as mt5
from datetime import datetime, timedelta
if not mt5.initialize():
print("Init fehlgeschlagen:", mt5.last_error())
quit()
info = mt5.account_info()
print(f"Account: {info.login} | Equity: {info.equity:.2f} {info.currency}")
# Letzte 20 H1-Kerzen für Gold ziehen
rates = mt5.copy_rates_from("XAUUSD", mt5.TIMEFRAME_H1,
datetime.now(), 20)
for r in rates[-5:]:
t = datetime.fromtimestamp(r['time']).strftime("%Y-%m-%d %H:%M")
print(f"{t} O:{r['open']:.2f} H:{r['high']:.2f} "
f"L:{r['low']:.2f} C:{r['close']:.2f}")
mt5.shutdown()
Wenn das Skript Account-Daten und Kerzen ausspuckt, ist die Bridge fertig. Wenn initialize() False zurückgibt, ist meistens entweder das Terminal nicht offen oder du sitzt unter einer anderen User-Session als der MT5-Prozess. mt5.initialize(path="C:/Pfad/zu/terminal64.exe") löst das in 99% der Fälle.
Für die Claude-Desktop-Integration trägst du den MCP-Server in ~/Library/Application Support/Claude/claude_desktop_config.json (Mac) bzw. %APPDATA%\Claude\claude_desktop_config.json (Windows) ein:
{
"mcpServers": {
"metatrader": {
"command": "metatrader-mcp-server",
"args": ["--login", "12345678",
"--password", "DEIN_PASSWORD",
"--server", "ICMarkets-Demo"]
}
}
}
Nach Claude-Desktop-Neustart kannst du im Chat "Zeig mir mein Account-Balance" eintippen – und Claude führt den Tool-Call aus.
Order senden – der Code, den jeder Tutorial-Autor falsch erklärt
Der größte Stolperstein bei MT5-Python ist die order_send-Request-Struktur. Sie sieht harmlos aus, hat aber sieben Eigenheiten, die dir den Tag kosten können wenn du sie nicht kennst.
Voll funktionierender Buy-Order-Code mit Stop-Loss und Take-Profit:
import MetaTrader5 as mt5
def buy_with_sl_tp(symbol, lot_size, sl_pips, tp_pips, magic=100001):
if not mt5.symbol_select(symbol, True):
return {"ok": False, "err": f"Symbol {symbol} nicht aktiviert"}
tick = mt5.symbol_info_tick(symbol)
info = mt5.symbol_info(symbol)
if tick is None or info is None:
return {"ok": False, "err": "Tick/Info nicht verfügbar"}
price = tick.ask
# Pip-Wert sauber berechnen (Forex 5-digit vs Gold)
point = info.point
digits = info.digits
pip_size = point * (10 if digits in (3, 5) else 1)
sl = round(price - sl_pips * pip_size, digits)
tp = round(price + tp_pips * pip_size, digits)
request = {
"action": mt5.TRADE_ACTION_DEAL,
"symbol": symbol,
"volume": lot_size,
"type": mt5.ORDER_TYPE_BUY,
"price": price,
"sl": sl,
"tp": tp,
"deviation": 20, # max Slippage in Points
"magic": magic, # eindeutige Bot-ID
"comment": "claude-bot",
"type_time": mt5.ORDER_TIME_GTC,
"type_filling": info.filling_mode,
}
result = mt5.order_send(request)
if result.retcode != mt5.TRADE_RETCODE_DONE:
return {"ok": False, "err": f"retcode={result.retcode}",
"comment": result.comment}
return {"ok": True, "ticket": result.order, "price": result.price}
Was hier schmerzhaft erkämpft ist:
Erstens, symbol_select vor Allem. Wenn das Symbol nicht im Market-Watch aktiv ist, kriegst du None zurück und keinen sinnvollen Fehler. Klassiker bei DEMO-Accounts mit nur EURUSD aktiv.
Zweitens, Pip-Größe ist nicht gleich Point-Größe. Bei 5-stelligen Forex-Quotes (EURUSD = 1.08573) ist point = 0.00001, aber ein Pip ist 0.0001 – Faktor 10. Bei Gold (XAUUSD = 2340.45) ist point = 0.01 und ein "Pip" verhält sich wie ein einzelner Cent. Wer das ignoriert, setzt Stops mit 10× zu engen Abstand und wird sofort ausgestoppt.
Drittens, type_filling muss zum Broker passen. Manche Broker akzeptieren nur ORDER_FILLING_IOC, andere ORDER_FILLING_FOK. info.filling_mode gibt dir das richtige automatisch zurück – nicht hardcoden.
Viertens, magic number. Eindeutige Bot-ID pro Strategie. Wenn du später Filter brauchst ("schließe alle meine Bot-Trades, aber lass die manuellen offen"), unverzichtbar.
Die übrigen drei Stolperfallen (Margin-Check, Spread bei News, Server-Time-Drift) hängen pro Broker zusammen – die haben wir im AI Trading Guide mit symbol-spezifischen Beispielen durchgekaut, inklusive der fünf häufigsten order_send-Retcodes und was sie wirklich bedeuten.
Lead-Magnet-Hinweis
Hol dir das kostenlose AI-Trading-Starter-Bundle: 5 fertige Claude-Trading-Prompts plus eine Cheat-Sheet mit allen MT5-
retcode-Werten, ihrer Bedeutung und der jeweiligen Lösung.
Claude zur Entscheidung einbinden
Der konkrete Loop für einen halbautomatischen Bot mit MT5 + Claude:
import json, anthropic, MetaTrader5 as mt5
from datetime import datetime
client = anthropic.Anthropic() # liest ANTHROPIC_API_KEY aus env
SYSTEM_PROMPT = """
Du bist ein Risk-Coach für einen XAUUSD-Trader.
Antworte ausschließlich als JSON nach diesem Schema:
{"action": "BUY"|"SELL"|"SKIP",
"confidence": 0.0-1.0,
"reason": "kurzer Satz",
"sl_pips": int, "tp_pips": int}
Skip-Regeln:
- Wenn ATR_14 < median(ATR_14, 100): SKIP (zu wenig Vola)
- Wenn nächste 60 min FOMC/NFP-Event: SKIP
- Wenn confidence < 0.6: SKIP
- Bei Setup: SL 1.5×ATR, TP 3.0×ATR (1:2 RR)
"""
def get_context(symbol="XAUUSD"):
rates = mt5.copy_rates_from_pos(symbol, mt5.TIMEFRAME_H1, 0, 60)
info = mt5.account_info()
return {
"symbol": symbol,
"candles_h1": [{"t": int(r["time"]),
"o": r["open"], "h": r["high"],
"l": r["low"], "c": r["close"]} for r in rates],
"equity": info.equity,
"balance": info.balance,
"open_positions": len(mt5.positions_get() or []),
"now_utc": datetime.utcnow().isoformat()
}
def ask_claude(context):
resp = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=400,
system=SYSTEM_PROMPT,
messages=[{"role": "user",
"content": json.dumps(context)}]
)
return json.loads(resp.content[0].text)
plan = ask_claude(get_context())
if plan["action"] in ("BUY", "SELL") and plan["confidence"] >= 0.6:
# → risk-wrapper → order_send (siehe oben)
print("Trade-Plan:", plan)
else:
print("Skip:", plan["reason"])
Was an dem Setup wichtig ist und meistens schlecht gemacht wird: der System-Prompt enthält explizite Skip-Regeln. Ohne die wird Claude bei jedem Lauf eine Meinung haben, auch wenn die Voraussetzungen nicht stimmen. Mit harten Skip-Triggern (ATR, Event-Kalender, Konfidenz) reduziert sich die Trade-Frequenz auf realistische Werte und die Win-Rate steigt deutlich – wir reden über 15–25 Trades pro Monat statt 80+.
Den vollständigen System-Prompt, getestet auf XAUUSD und EURUSD inklusive Event-Kalender-Anbindung und JSON-Schema-Validierung, plus die korrekt verdrahtete risk-wrapper-Schicht haben wir im AI Trading Guide ausgearbeitet.
FTMO-Compliance: was dein Bot zwingend tun muss
FTMO erlaubt EAs und Python-Bots ausdrücklich, aber die Challenge-Regeln gelten unverändert: 5% Daily-Drawdown, 10% Total-Drawdown, beides hart. Ein Verstoß und der Account ist weg. Was dein Code zwingend leisten muss:
Tagesverlust-Tracking persistent. Wenn dein Python-Prozess um 14:00 crasht und um 14:05 neu startet, muss er wissen, dass er heute schon 3.2% verloren hat. Naive Lösung: jede Minute den Daily-Loss in eine JSON-Datei schreiben. Bessere Lösung: bei jedem Strategie-Tick aus mt5.history_deals_get(today_start, datetime.now()) neu berechnen – nutzt Live-Daten vom Broker, keine eigene Buchhaltung.
Equity-Drift-Check vor jedem order_send. Bevor du eine neue Position aufmachst, prüfst du: liegt mein aktueller Equity unter start_equity * 0.95 (Daily-Limit) oder start_equity * 0.90 (Total-Limit)? Wenn ja, kein neuer Trade. Sehr wichtig: Equity, nicht Balance. FTMO misst Drawdown auf Equity-Basis – wenn du eine offene Position mit -3% Floating-PnL hast, gilt das.
Position-Sizing nach Risk-per-Trade, nicht nach Lot. "Ich trade immer 0.1 Lot" funktioniert nur bei konstantem Stop-Abstand. Sauber: lot_size = (equity * risk_pct) / (sl_pips * pip_value_per_lot). Pro Symbol unterschiedlich, der pip-value steht in mt5.symbol_info_tick(symbol).bid × Kontrakt-Größe.
Cool-Down nach Verlust-Serie. Drei Verlust-Trades in Folge → mindestens 4 Stunden Pause. Vier in Folge → Stopp für den Tag. Das ist nicht psychologisches Theater, das ist mathematisch sinnvoll: nach einer Verlust-Serie ist die Wahrscheinlichkeit, dass die Marktphase deiner Strategie nicht passt, signifikant erhöht.
Für die komplette FTMO-konforme Implementation, inklusive XAUUSD-Scalping-Beispiel mit echten Backtest-Zahlen, siehe XAUUSD Scalping mit AI: Setup und Backtest – dort gehen wir den vollständigen Tag-für-Tag-Plan für eine FTMO-Challenge durch.
Den kompletten MT5-Stack haben wir aufgeschrieben
81 Seiten, kompletter Code, sechs Backtests, FTMO-konformer Risk-Wrapper, Live-Trading-Setup. Alles was du brauchst, um den ersten ernsthaften Bot live zu stellen.
Häufige Fragen (FAQ)
Läuft die MetaTrader5-Python-Library auch auf Mac oder Linux? Offiziell nur Windows. Auf Linux funktioniert sie über Wine + Windows-Python (es gibt brauchbare Tutorials dafür), auf macOS empfehle ich Parallels Desktop oder einen Windows-VPS – das ist praktisch sowieso besser, weil dein Bot 24/7 laufen soll. Native Mac-Unterstützung wird laut MetaQuotes-Forum seit 2022 immer wieder versprochen, ist aber bis Mai 2026 nicht da.
Brauche ich einen Live-Account oder reicht Demo? Für Entwicklung und Test komplett Demo. Jeder seriöse Broker (IC Markets, Pepperstone, ICmarkets, Vantage, Roboforex) gibt dir einen MT5-Demo-Account in unter 5 Minuten. Wichtig: Demo-Spreads sind oft besser als Live-Spreads – wenn deine Strategie auf engen Spreads basiert, validiere immer auf einem Live-Mini-Account, bevor du das echte Geld einsetzt.
Was kostet der Anthropic-API-Zugriff für einen MT5-Bot realistisch? Bei einem moderaten Setup (1 Strategie, ein Symbol, alle 5 Minuten ein Check) etwa 200–400 Claude-Calls pro Tag. Mit Sonnet 4.6 (mittel-billig) sind das rund 0.20–0.40 USD pro Tag, also 6–12 USD pro Monat. Bei Multi-Symbol-Bots (5+ Pairs) entsprechend mehr. Strategien, die nur an klar definierten Sessions aktiv sind (London-Open, NY-Open) sparen massiv.
Kann ich Claude direkt im MT5-Terminal benutzen, ohne Python? Nein, dafür gibt es aktuell keine native Integration. Der Umweg über Python ist Pflicht. Was geht: Claude im Browser oder Desktop benutzen, dort dein Markt-Briefing schreiben lassen, und im MT5 dann manuell traden. Für vollautomatische Setups brauchst du die Python-Bridge.
Welche MT5-Broker funktionieren am besten für Python-Bots? IC Markets (Raw Spread), Pepperstone (Razor), Tickmill (Pro) und FTMO selbst sind in Europa die häufigste Wahl unter Python-Bot-Tradern – niedrige Spreads, hohe Order-Acceptance-Rate, vernünftige Server-Latenz nach Frankfurt/Amsterdam (5–30 ms). Vermeide Broker mit "Market Maker"-Modell für Bot-Trading; die rejecten gerne, wenn dein System konsistent profitabel wird.
Ist die ariadng-MCP-Library FTMO-konform? Die Library selbst ist neutral – sie ist nur eine Bridge. FTMO-Konformität entsteht durch deinen Risk-Wrapper und deine Skip-Logik. Wenn du den oben skizzierten Equity-Check und Daily-Loss-Tracker einbaust, ist nichts an MCP per se FTMO-problematisch. FTMO verbietet explizit nur HFT, Latency-Arbitrage, Tick-Scalping unter 30 Sekunden und reverse-engineered Demo-Spread-Exploitation.
TL;DR
Drei Schichten: MT5-Terminal (Broker-Verbindung), Python-Bridge (deine Logik), Claude über MCP (Reasoning). Setup in 30 Minuten mit pip install MetaTrader5 metatrader-mcp-server anthropic plus Terminal mit AutoTrading-Flag. order_send hat sieben Stolperfallen – Pip-Größe, filling_mode, magic, symbol_select, Margin-Check, Spread bei News, Server-Time. FTMO-Compliance erfordert persistentes Daily-Loss-Tracking, Equity-Drift-Check vor jeder Order, Position-Sizing nach Risk-per-Trade und Cool-Down nach Verlust-Serien. Der MCP-Server hat keine Auth – nicht öffentlich ins Internet stellen. Ab hier ist es kein Plattform-Problem mehr, sondern ein Edge-Problem.