Skip to main content
Glama
dearvn

tradebox-mcp

by dearvn

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)" --> X

Jeder 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 loop

Die 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 live

2 – 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_reasoning mit 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

allowed_symbols

Lehnt jede Order ab, die nicht auf Ihrer Liste steht.

Ordergrößen-Limit

max_order_notional

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

max_orders_per_hour

Endlosschleifen-Unterbrechung – der häufigste reale Fehlermodus fehlerhafter Agenten (gleitendes 1-Stunden-Fenster).

Tagesverlust-Schutz

max_daily_loss

Der zentrale Schutzschalter – siehe Diagramm unten.

Handelszeiten

trading_hours

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 allow_transfers: true.

Unbekannte Tools

unknown_tools

Ein Tool, das keine Karten (Mapping) erkennt und mutierend aussieht, wird abgelehnt, nicht als read-only angenommen.

Panik-Button

tradebox stop

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 note

Dry-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 lock

Ehrliche Einschränkungen (v0.1)

Wir würden sie hier lieber aufführen, als Sie sie mit echtem Geld herausfinden zu lassen:

  1. Nur stdio-Downstreams (CCXT MCP und vergleichbare). HTTP-Transport für Binance Agent OS / Robinhood MCP ist das oberste Roadmap-Ziel.

  2. 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.

  3. 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.

  4. 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).

  5. 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

  1. HTTP-Transport-Proxxy → Binance Agent OS, Robinhood MCP

  2. Positionslimits, abgeglichen mit Börsenständen (Balance-Abgleich)

  3. Gehostetes Dashboard + Echtzeit-Alarme – der lokale Proxy und der Bericht bleiben für immer kostenlos und MIT-lizenziert

Lizenz

MIT

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    A 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.
  • A
    license
    Not graded
    quality
    A
    maintenance
    Open-source MCP proxy that enforces security policies, content scanning, and audit logging between AI agents and tool servers
    25
    AGPL 3.0
  • A
    license
    Not graded
    quality
    A
    maintenance
    Security 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.
    2
    1
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables AI agents to operate a local financial terminal, including market data, backtesting, paper portfolio management, and news digest, through safe, gated tools over MCP.
    6
    MIT

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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