tradebox-mcp
tradebox-mcp
Ein Flugschreiber + Schutzschalter für KI-Handelsagenten.
Börsen beginnen damit, KI-Agenten handeln zu lassen – und sie geben zu, dass sie nicht sehen können, was die Agenten denken. tradebox ist ein lokaler Proxy, der zwischen Ihrem LLM (Claude, Cursor oder einem beliebigen MCP-Host) und einem beliebigen Broker-MCP-Server sitzt. Er zeichnet jeden Tool-Aufruf und die Überlegungen des Agenten auf und blockiert jede Order, die Ihre Limits bricht – bevor die Order die Börse erreicht.
Null Agentenänderungen – Richten Sie Ihren MCP-Host auf tradebox aus statt auf den Broker-Server; der Agent sieht exakt dieselben Tools.
Local-first – Ihre API-Schlüssel gelangen direkt in den Broker-Subprozess. tradebox parst, protokolliert oder überträgt sie nie und führt selbst null Netzwerkaufrufe durch.
Ablehnung ≠ Absturz – Eine blockierte Order kommt als Klartext-Tool-Ergebnis zurück, das der Agent lesen und darauf reagieren kann, statt als Protokollfehler, der ihn in eine Wiederholungsschleife schickt.
So funktioniert es
tradebox spricht auf beiden Seiten MCP: Für Ihren Host ist es ein Server, für jeden Broker-Server, den es startet, ein Client.
flowchart LR
subgraph HOST["Your machine"]
A["MCP host<br/>(Claude Desktop / Cursor)"]
subgraph TB["tradebox-mcp"]
G["Guardrail engine<br/>(allow / deny)"]
R["Recorder<br/>(JSONL blackbox)"]
end
C["CCXT MCP server<br/>(child process)"]
L[("~/.tradebox/logs/<br/>YYYY-MM-DD.jsonl")]
end
X["Exchange<br/>(Binance, …)"]
A -- "stdio (JSON-RPC / MCP)" --> G
G -- "allowed calls only" --> C
G -.-> R
R -.-> L
C -- "HTTPS (your API keys<br/>never leave this hop)" --> XJeder tools/call durchläuft dieselbe Pipeline:
sequenceDiagram
participant Agent as Agent (LLM)
participant TB as tradebox
participant Broker as CCXT MCP
participant Ex as Exchange
Note over Agent,Ex: ✅ order within limits
Agent->>TB: createOrder BTC/USDT, $150
TB->>TB: classify → trade.place<br/>guardrails → ALLOW
TB->>Broker: forward
Broker->>Ex: place order
Ex-->>Broker: filled
Broker-->>TB: result
TB->>TB: log call + result (JSONL)
TB-->>Agent: result
Note over Agent,Ex: ⛔ order over the limit
Agent->>TB: createOrder DOGE/USDT, $520
TB->>TB: classify → trade.place<br/>guardrails → DENY (allowed_symbols)
TB->>TB: log the denial
TB-->>Agent: "Order denied: DOGE/USDT is not<br/>in allowed_symbols (BTC/USDT, ETH/USDT)."
Note over Agent: agent reads the reason<br/>and adjusts — no crash loopDie Order erreicht den Broker-Prozess nie, wenn eine Regel sie ablehnt – die Ablehnung erfolgt eine Prozessebene vor der Stelle, an der Ihre API-Schlüssel überhaupt einbezogen werden.
Related MCP server: PitBridge
Schnellstart
1 – Erstellen Sie Ihre Konfiguration (die Schlüssel bleiben auf Ihrer Maschine; wenden Sie chmod 600 darauf an):
mkdir -p ~/.tradebox
cp config.example.yaml ~/.tradebox/config.yaml
chmod 600 ~/.tradebox/config.yaml# ~/.tradebox/config.yaml (minimal)
downstreams:
ccxt:
command: npx
args: ["-y", "@lazydino/ccxt-mcp", "--config", "~/.tradebox/ccxt-accounts.json"]
# ccxt-accounts.json holds your exchange keys (see config.example.yaml).
# Use a read + trade key. NEVER enable withdrawals on it.
guardrails:
allowed_symbols: ["BTC/USDT", "ETH/USDT"]
max_order_notional: 200 # $ per single order
max_orders_per_hour: 6
max_daily_loss: 100 # trips the circuit breaker (UTC day)
dry_run: true # ON by default — flip to false to go live2 – Richten Sie Ihren MCP-Host an tradebox aus statt an den Broker-Server (claude_desktop_config.json oder .cursor/mcp.json):
{
"mcpServers": {
"trading": {
"command": "npx",
"args": ["-y", "tradebox-mcp", "run", "--config", "~/.tradebox/config.yaml"]
}
}
}3 – (Optional, aber empfohlen) Fügen Sie eine Zeile zum System-Prompt Ihres Agents hinzu, damit die Blackbox Überlegungen und nicht nur Aktionen aufzeichnet:
Vor jeder Handelsentscheidung rufen Sie das Tool
log_reasoningmit einer kurzen Erklärung auf, was Sie gleich tun werden und warum.
Damit ist es erledigt. Der Agent sieht ccxt__createOrder, ccxt__fetchTicker, … wie gewohnt. Auf der Agenten Seite ändert sich nichts.
Schutzmechanismen
Regel | Config-Schlüssel | Wirkung |
Symbol-Whitelist |
| Lehnt jede Order ab, die nicht auf Ihrer Liste steht. |
Ordergrößen-Limit |
| Lehnt eine einzelne Bestellung über dem Limit ab (Market-Orders werden mit einem maximal 60 s alten Ticker-Kurs bewertet – andernfalls Ablehnung mit „zuerst die Agenturen order abzurufen“). |
Rate-Limit |
| Endlosschleifen-Unterbrechung – der häufigste reale Fehlermodus fehlerhafter Agenten (gleitendes 1-Stunden-Fenster). |
Tagesverlust-Schutz |
| Der zentrale Schutzschalter – siehe Diagramm unten. |
Handelszeiten |
| Lässt Aufträge nur innerhalb eines UTC-Zeitfensters zu. |
Transfers | (integriert) | Standardmäßig abgelehnt. Ein Handelsträger-Agent hat mit dem Abheben von Geldern nichts zu schaffen. Das Freigeben erfordert ein explizites |
Unbekannte Tools |
| Ein Tool, das keine Karten (Mapping) erkennt und mutierend aussieht, wird abgelehnt, nicht als read-only angenommen. |
Panik-Button |
| Lehnt sofort alle Handels-Tools ab, sogar während der Agent mitten parapher rich läuft. |
Der Lebenszyklus des Schutzschalters
stateDiagram-v2
[*] --> Trading
Trading --> Locked : realized daily PnL ≤ −max_daily_loss
Trading --> Locked : operator runs "tradebox stop"
Locked --> Trading : operator runs "tradebox resume"
Locked --> Locked : every trade.* call → denied<br/>(reads still pass through)
note right of Locked
The lock survives restarts —
state is a projection of the log,
so a crash never resets the breaker.
end noteDry-run: Prüfen Sie Ihren Agenten, bevor Sie ihm Geld geben
dry_run: true (die Standardeinstellung) blockiert jeden Trade am Proxy, protokolliert ihn, als wäre er real, und gibt eine simulierte Ausführung zurück. tradebox führt ein Fake-Orderbuch, damit die Simulation konsistent bleibt: Das Stornieren oder Abrufen einer simulierten Order-ID liefert eine konsistente Antwort, und jedes simulierte Ergebnis ist mit "simulated": true markiert. Lassen Sie Ihren Agenten eine Woche lang im Dry-run, lesen Sie den Bericht, dann legen Sie den Schalter um.
Die Blackbox
Jeder Aufruf – erlaubt oder verwehrt – wird an ~/.tradebox/logs/YYYY-MM-DD.jsonl angehängt, ein JSON-Ereignis pro Zeile:
{"ts":"2026-08-25T12:00:00.123Z","event":"tool_call","server":"ccxt","tool":"createOrder","category":"trade.place","args":{"symbol":"BTC/USDT","side":"buy","type":"limit","amount":0.02,"price":58900},"decision":"allow","latency_ms":840,"result":{"order_id":"123","filled":0.02,"avg_price":58895}}
{"ts":"2026-08-25T12:05:01.000Z","event":"tool_call","server":"ccxt","tool":"createOrder","category":"trade.place","args":{"symbol":"DOGE/USDT","side":"buy","amount":50000},"decision":"deny","rule":"allowed_symbols","latency_ms":2}
{"ts":"2026-08-25T12:05:04.500Z","event":"reasoning","text":"DOGE blocked. Holding BTC, waiting for the 58K retest."}
{"ts":"2026-08-25T13:00:00.000Z","event":"guardrail_trip","rule":"max_daily_loss","value":-102.5,"limit":-100,"action":"trading_locked"}Geheimnisse gelangen nie in das Log: downstream liegen die env-Blöcke, die vom Recorder nie eingesehen werden, und jedes Feld, dessen Name wie key|secret|token|password klingt, wird unkenntlich gemacht.
Drift-Bericht – ist Ihr Agent noch der Agent, den Sie getestet haben?
$ tradebox report --window 7d
AGENT BEHAVIOR REPORT 2026-08-18 → 2026-08-25
──────────────────────────────────────────────────────────
baseline (7d) last 24h Δ
orders/day 4.2 11 ×2.6 ⚠
avg order notional $145 $410 ×2.8 ⚠
symbols traded BTC 82% · ETH 18% +SOL 37% ⚠ new symbol
avg hold time 3.1 h 22 min ÷8.5 ⚠
denied calls 0 7 max_order_notional ×5
realized PnL +$83 −$61
──────────────────────────────────────────────────────────
⚠ BEHAVIORAL DRIFT: the agent is behaving differently than
it did 7 days ago. Model update? Prompt change? Check
before it costs you.Läuft offline, liest nur lokale JSONL, keine Netzwerkverbindung.
CLI
tradebox run --config <path> start the proxy (spawned by your MCP host)
tradebox report [--window 7d] behavior + drift report from local logs
tradebox stop PANIC — deny all trading immediately
tradebox resume clear the panic / daily-loss lockEhrliche Einschränkungen (v0.1)
Wir würden sie hier lieber aufführen, als Sie sie mit echtem Geld herausfinden zu lassen:
Nur stdio-Downstreams (CCXT MCP und vergleichbare). HTTP-Transport für Binance Agent OS / Robinhood MCP ist das oberste Roadmap-Ziel.
Der Tagesverlust-Schutzschalter sieht Ausführungen nur über den Proxy. Ausführungen werden aus Orderergebnissen und den eigenen
fetch_my_trades/fetch_closed_orders-Aufrufen des Agents geparst. Ein Agent, der seine Ausführungen nie abruft, macht den Schutzschalter blind.Die Positionsverfolgung ist eine Schätzung auf Basis der Orders, die durch den Proxy laufen. : Bisher noch kein Abgleich mit Handelsplätzen hinsichtlich der Salden.
Dry-run-Ausführungen sind sofort simuliert. Echte Guthaben-/Positionsabfragen werden unverändert durchgereicht und zeigen keine simulierten Trades (jedes simulierte Ergebnis trägt
"simulated": true).Alle Tagesgrenzen entsprechen UTC. Zu einem Zeitpunkt aktive nur immer ein Proxy-Instanz.
Eine Regel beisteuern
Eine Datei, eine Schnittstelle – PRs willkommen:
export interface GuardrailRule {
name: string;
// return null to pass; return a string to deny (the reason is sent to the LLM)
check(call: ClassifiedToolCall, state: SessionState, cfg: Config): string | null;
}Legen Sie sie in src/guardrails/rules/ ab, registrieren Sie sie in engine.ts, und fügen Sie einen Test hin. Siehe docs/DESIGN.md für die Architekturentscheidungen und ihre Begründungen.
Roadmap
HTTP-Transport-Proxxy → Binance Agent OS, Robinhood MCP
Positionslimits, abgeglichen mit Börsenständen (Balance-Abgleich)
Gehostetes Dashboard + Echtzeit-Alarme – der lokale Proxy und der Bericht bleiben für immer kostenlos und MIT-lizenziert
Lizenz
MIT
Related MCP Connectors
Trading MCP server for AI agents, with live market data, account reads and controlled execution.
Guardrails for trading agents. Built-in risk management, 100+ tools for strategy R&D, 12+ venues.
AgentGuard — 20-tool AI safety MCP: policy preflight, risk scoring, audit logging, rate limits.
Free, read-only directory of 114 AI trading tools: broker MCP servers, market data APIs, bots and backtesters. Sourced facts on who can place orders and what safeguards exist; search, compare and check order gating for every broker MCP.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceSits in front of any MCP server to enforce allow/ask/block policies on tool calls, paths, shell commands, and network domains, with local approval prompts and an audit log.MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to interact with a NinjaTrader 8 futures account through MCP, with deterministic guardrails and hard risk limits enforced locally that the agent cannot bypass.1Apache 2.0
- AlicenseAqualityBmaintenanceEnables AI agents to place and manage Hyperliquid trades through MCP with position, leverage, daily-loss, market, and stop-loss limits enforced outside the model, plus paper trading and an auditable decision log.9176 npmMIT
- AlicenseNot gradedqualityCmaintenanceA transparent MCP stdio proxy that sits between an agent client and a real MCP server, intercepting tools/call requests to enforce runtime guardrails derived from the same YAML rules used for CI regression testing. It blocks forbidden, out-of-whitelist, looping, or non-idempotent tool invocations with JSON-RPC errors and writes every decision to an audit log.1MIT