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: SentinelGate
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
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityNot gradedmaintenanceA transparent proxy and execution firewall that intercepts and audits AI agent tool calls against configurable security policies before forwarding them to downstream MCP servers. It provides safe execution environments with features like data redaction, anti-loop protection, and unified alert dispatching.

SentinelGateofficial
AlicenseNot gradedqualityAmaintenanceOpen-source MCP proxy that enforces security policies, content scanning, and audit logging between AI agents and tool servers25AGPL 3.0- AlicenseNot gradedqualityAmaintenanceSecurity gateway for MCP tool calls. Sits between your LLM client and MCP servers, enforcing per-tool policies (allow/block/approve/read-only), logging every call, and pausing dangerous operations for human approval in terminal or Slack.21MIT
- AlicenseAqualityAmaintenanceEnables AI agents to operate a local financial terminal, including market data, backtesting, paper portfolio management, and news digest, through safe, gated tools over MCP.6MIT
Related MCP Connectors
Security firewall for AI agents — scans MCP calls for injection, secrets, and risks.
MCP server for OpenMM — exposes market data, account, trading, and strategy tools to AI agents
MCP server exposing the Backtest360 engine API as tools for AI agents.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/dearvn/tradebox-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server