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 |
| Eine Kill-Switch-Datei existiert auf der Festplatte. Löst sofort aus, kein Neustart erforderlich. |
| Orders treffen schneller ein als die konfigurierte Obergrenze. |
| Der vorgelagerte Entscheidungsdatensatz ist veraltet — keine Order darf auf einer alten Genehmigung reiten. |
| Größe, Seite oder Symbol stimmen nicht mit dem überein, was der Broker meldet. |
| Eine Stop-Loss-Modifikation würde den Stop weg vom Preis bewegen. |
| Manuelle Übersteuerungen dieser Sitzung überschreiten die erlaubte Anzahl. |
| 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 routeDer 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 |
|
|
|
|
| Zustand, Audit-Log, Kontodatensatz |
| MT5-under-Wine-Standard | MT5 |
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 thisNeun 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_demowird in der Produktion gegen ein MetaTrader-5-Terminal unter Wine auf macOS eingesetzt.check_rate_limitist 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_FILESgesetzt 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.
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
- MIT
- AlicenseAqualityAmaintenanceAn 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.154MIT
- Alicense-qualityCmaintenanceA 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
- FlicenseBqualityCmaintenanceAn 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
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
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/zorionarrillaga/oas-execute-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server