Skip to main content
Glama
zorionarrillaga

oas-execute-mcp

oas-execute-mcp

Ein MCP-Server, der eine Sicherheitsschicht zwischen einem Sprachmodell und einer Broker-Order einfügt.

Ein Modell ruft order_submit auf. Bevor etwas den Broker erreicht, durchläuft die Anfrage sechs unabhängige Prüfungen, von denen jede sie ablehnen kann — sieben über die Schreibpfade, da die Stop-Loss-Regel eher Modifikationen als Eröffnungen regelt. Jeder Versuch — erlaubt oder abgelehnt — wird mit Grund an ein Audit-Log angehängt. Der Broker selbst sitzt hinter einem austauschbaren Backend, sodass dieselbe Tool-Oberfläche gegen einen On-Disk-Simulator oder ein Live-MetaTrader-5-Terminal läuft, ohne dass das Modell weiß, welches.

Entwickelt für einen Agenten, der auf seinem eigenen Kanal Orders gegen ein $100k-Prop-Firm-Evaluationskonto ohne menschliche Genehmigung pro Trade aufgab, wo eine falsch dimensionierte Order kein fehlgeschlagener Test war.


Why it exists

Der interessante Teil, einem Agenten ein Werkzeug zu geben, das Geld ausgibt, ist nicht der Happy Path. Es ist:

  • was das Werkzeug zurückgibt, wenn es halb erfolgreich ist — die Order wurde ausgeführt, aber der Stop wurde nicht angehängt;

  • wo ein Timeout landet — der Broker hat nie geantwortet, und man weiß nicht, ob er ausgeführt hat;

  • wie ein Fehler daran gehindert wird, als Erfolg gemeldet zu werden durch die darüberliegende Schicht.

Die Designregel hier ist also, dass die eigene Darstellung des Modells von dem, was passiert ist, nie vertraut wird. Der Positionsstatus wird bei jedem Aufruf erneut vom Broker gelesen. Die Ablehnungen sind explizit, wenige und sitzen direkt auf dem Ausführungspfad, nicht daneben in einem Prompt.

Related MCP server: mt5-mcp

The safety layer

Sieben Prüfungen, jede in der Lage, unabhängig abzulehnen, alle mit einem maschinenlesbaren Grund protokolliert. Sechs von ihnen stehen zwischen order_submit und dem Broker; check_sl_widen_block regelt Modifikationen, sieht also nie eine Eröffnung:

Check

Refuses when

check_killswitch

Eine Kill-Switch-Datei existiert auf der Festplatte. Löst sofort aus, kein Neustart erforderlich.

check_rate_limit

Orders treffen schneller ein als die konfigurierte Obergrenze.

check_gate_pass_freshness

Der vorgelagerte Entscheidungsdatensatz ist veraltet — keine Order darf auf einer alten Genehmigung reiten.

check_position_sanity

Größe, Seite oder Symbol stimmen nicht mit dem überein, was der Broker meldet.

check_sl_widen_block

Eine Stop-Loss-Modifikation würde den Stop weg vom Preis bewegen.

check_session_override_kill

Manuelle Übersteuerungen dieser Sitzung überschreiten die erlaubte Anzahl.

check_live_equity_kill

Das Eigenkapital des Kontos hat die konfigurierte Untergrenze überschritten.

Der Audit-Anhang läuft nach den Toren auf jedem Pfad, erlaubt oder abgelehnt — er ist die Aufzeichnung, keine Prüfung: Eine Ablehnung, die keine Spur hinterlässt, wird als Fehler des Systems behandelt.

safety.py gruppiert diese in run_entry_safety_gates, run_modify_safety_gates und run_close_safety_gates, sodass ein Schließen nie durch eine Regel blockiert wird, die nur eine Eröffnung regeln sollte — der Fehlermodus, bei dem ein Sicherheitssystem einen in einer Position fängt, die es schützen sollte.

Tool surface

Sieben Tools: order_submit · order_modify · order_close · close_all · position_list · account_info · health_check.

Architecture

    model tool call
          │
          ▼
   server.py  ── MCP stdio server, tool schemas + dispatch
          │
          ▼
   safety.py  ── 7 gates, audit log, kill switch     ◄── refuses here, before the broker
          │
          ▼
   backends/  ── swappable
      ├── stub.py      on-disk simulation, no broker, deterministic
      └── mt5_demo.py  file bridge → MetaTrader 5 (Wine/macOS) via an MQL5 EA
                       localhost HTTP listener, shared-secret token on the firing route

Der MQL5-Expertenberater (oas_execute_mcp/mql5/OAS_Bridge.mq5) pollt einen Localhost-Endpunkt und führt auf der Terminalseite aus. backends/base.py ist die Schnittstelle; das Hinzufügen eines Brokers bedeutet, ihn zu implementieren, und nichts oberhalb des Backends ändert sich.

Install

pip install -e ".[dev]"

Richten Sie Ihren MCP-Client darauf aus:

{
  "mcpServers": {
    "oas-execute": {
      "command": "/path/to/.venv/bin/python",
      "args": ["-m", "oas_execute_mcp.server"],
      "cwd": "/path/to/parent-of-this-package"
    }
  }
}

Backend-Auswahl und Pfade sind Umgebungsvariablen:

Variable

Default

Purpose

OAS_EXECUTE_BACKEND

stub

stub or mt5_demo

OAS_DATA_DIR

./oas_execute_mcp/data

Zustand, Audit-Log, Kontodatensatz

OAS_MT5_COMMON_FILES

MT5-under-Wine-Standard

MT5 Common/Files für die Brücke

Es wird standardmäßig mit stub ausgeliefert. Sie müssen sich entscheiden, es auf einen Broker auszurichten.

In diesem Repository befinden sich keine Anmeldedaten, und es sollten auch keine. Das MT5-Backend folgt dem Terminal, das bereits angemeldet ist; der Kontodatensatz, den es liest, ist dokumentarisch (Login und Servername), enthält kein Passwort und gehört außerhalb der Versionskontrolle.

Tests

PYTHONPATH=. python3 tests/test_smoke.py     # full submit → modify → close cycle + failure modes
for t in tests/test_*.py; do PYTHONPATH=. python3 "$t"; done   # the whole suite
python3 -m pytest tests/ -q                  # same suite, if you would rather type this

Neun Testdateien, alle bestehen bei einem sauberen Checkout. Jede ist ein eigenständiger Prüfer: Sie führt ihre Assertions im Modulbereich aus und beendet sich bei Fehlschlag mit einem Nicht-Null-Exit-Code, sodass die Suite nichts als einen Interpreter benötigt. tests/suite_test.py treibt dieselben Skripte als Subprozesse an, sodass pytest ebenfalls ein funktionierender Einstiegspunkt ist — es ist eine Brücke, keine zweite Suite, und es gibt keine Version der Tests, die nur ein Runner sieht. Sie decken den Submit/Modify/Close-Zyklus gegen den Stub ab, Stop-Loss-Verankerung und Neuableitung nach einer belasteten Ausführung, den Bridge-Client-Mode-Handshake, Quote- und Position-Routen und das Tor, das verhindert, dass eine fehlerhafte Nutzlast als leere Positionsliste konsumiert wird — ein echter Vorfall, bei dem ein Timeout {"positions": []} zurückgab und ein nachgelagerter Leser es glaubte.

Zwei Tests überspringen, anstatt zu bestehen, wenn ihr Subjekt fehlt. Sie üben einen Konsumenten dieses Servers aus, benötigen also das Host-Projekt (OAS_HOST_REPO, OAS_RECONCILE_CMD). Eine Prüfung, die stillschweigend grün wird, wenn das, was sie prüft, fehlt, ist schlimmer als keine Prüfung.

Status and limits

  • Das stub-Backend ist vollständig und deterministisch. mt5_demo wird in der Produktion gegen ein MetaTrader-5-Terminal unter Wine auf macOS eingesetzt.

  • check_rate_limit ist implementiert, wird aber von der Testbank nicht ausgeübt — die Bank simuliert Broker-Timeouts und Kill-Switch-Auslösung, nicht Rate-Limit-Antworten. Angegeben, weil die Unterscheidung zwischen "implementiert" und "getestet" das gesamte Thema dieses Repositorys ist.

  • Die MT5-Brücke ist macOS/Wine-geformt. Eine native Windows-Installation benötigt OAS_MT5_COMMON_FILES gesetzt und wurde von mir nicht getestet.

  • Single-Terminal-Design: Der Listener ist ein Singleton auf einem Port, und ein zweiter Serverprozess erkennt den ersten und leitet an ihn weiter, anstatt um den Bind zu konkurrieren.

License

MIT — siehe LICENSE.

A
license - permissive license
-
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

  • A
    license
    A
    quality
    A
    maintenance
    An MCP server that lets an AI agent read your MetaTrader 5 account and place trades over the Model Context Protocol, with a configurable human approval gate.
    15
    4
    MIT
  • A
    license
    -
    quality
    C
    maintenance
    A local-first MCP server that bridges AI coding agents with MetaTrader 5 for inspection, market data, MQL5 development, compiling, Strategy Tester review, workspace sync, logs, audit trails, demo trading, and carefully gated live trading.
    MIT
  • F
    license
    B
    quality
    C
    maintenance
    An MCP trading server over a paper broker with a deterministic risk layer that enforces limits before orders reach the handler, ensuring safe AI agent trading.
    7

View all related MCP servers

Related MCP Connectors

  • MCP server exposing the Backtest360 engine API as tools for AI agents.

  • MCP server for Gainium — manage trading bots, deals, and balances via AI assistants

  • MCP server for AI dialogue using various LLM models via AceDataCloud

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/zorionarrillaga/oas-execute-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server