oas-execute-mcp
oas-execute-mcp
MCP-сервер, который размещает уровень безопасности между языковой моделью и брокерским ордером.
Модель вызывает order_submit. Прежде чем что-либо достигнет брокера, запрос проходит шесть
независимых проверок, любая из которых может его отклонить — семь на путях записи, поскольку
правило стоп-лосса регулирует модификации, а не открытия. Каждая попытка — разрешенная или отклоненная —
добавляется в журнал аудита с указанием причины. Сам брокер находится за сменяемым бэкендом, поэтому
один и тот же набор инструментов работает с симулятором на диске или живым терминалом MetaTrader 5, не сообщая
модели, какой из них используется.
Создано для агента, который на своем собственном канале отправлял ордера на проп-фирменный оценочный счет в $100 000 без одобрения каждой сделки человеком, где ордер неправильного размера не был провальным тестом.
Зачем это существует
Интересная часть предоставления агенту инструмента, который тратит деньги, — это не счастливый путь. Это:
что возвращает инструмент, когда он частично успешен — ордер исполнился, но стоп не прикрепился;
где оказывается тайм-аут — брокер так и не ответил, и вы не знаете, исполнился ли ордер;
как предотвращается сообщение о сбое как об успехе слоем выше.
Поэтому правило дизайна здесь заключается в том, что собственному отчету модели о произошедшем никогда не доверяют. Состояние позиции перечитывается от брокера при каждом вызове. Отказы явные, их мало, и они находятся непосредственно на пути выполнения, а не рядом с ним в подсказке.
Related MCP server: mt5-mcp
Уровень безопасности
Семь проверок, каждая из которых может отказать независимо, все регистрируются с машиночитаемой причиной.
Шесть из них находятся между order_submit и брокером; check_sl_widen_block управляет
модификациями, поэтому он никогда не видит открытие:
Проверка | Отказывает, когда |
| На диске существует файл аварийного выключателя. Срабатывает мгновенно, без перезапуска. |
| Ордера поступают быстрее установленного лимита. |
| Запись решения вышестоящего уровня устарела — ни один ордер не может опираться на старое одобрение. |
| Размер, сторона или символ не соответствуют тому, что сообщает брокер. |
| Модификация стоп-лосса переместила бы стоп дальше от цены. |
| Ручные переопределения за эту сессию превысили разрешенное количество. |
| Собственный капитал счета пересек установленный минимум. |
Запись в аудит выполняется после прохождения шлюзов на каждом пути — разрешенном или отклоненном — это запись, а не проверка: отказ, не оставляющий следа, рассматривается как сбой системы.
safety.py группирует их в run_entry_safety_gates, run_modify_safety_gates и
run_close_safety_gates, поэтому закрытие никогда не блокируется правилом, которое должно управлять только открытием —
это режим отказа, когда система безопасности запирает вас в позиции, которую она должна была защищать.
Набор инструментов
Семь инструментов: order_submit · order_modify · order_close · close_all · position_list ·
account_info · health_check.
Архитектура
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 routeMQL5 эксперт (oas_execute_mcp/mql5/OAS_Bridge.mq5) опрашивает локальный эндпоинт и
выполняется на стороне терминала. backends/base.py — это интерфейс; добавление брокера означает
его реализацию, и ничего выше бэкенда не меняется.
Установка
pip install -e ".[dev]"Укажите ваш MCP-клиент на него:
{
"mcpServers": {
"oas-execute": {
"command": "/path/to/.venv/bin/python",
"args": ["-m", "oas_execute_mcp.server"],
"cwd": "/path/to/parent-of-this-package"
}
}
}Выбор бэкенда и пути задаются переменными окружения:
Переменная | По умолчанию | Назначение |
|
|
|
|
| Состояние, журнал аудита, запись счета |
| MT5-under-Wine по умолчанию | MT5 |
Поставляется с бэкендом stub по умолчанию. Вы должны сами решить указать его на брокера.
В этом репозитории нет учетных данных, и их там быть не должно. Бэкенд MT5 следует за уже вошедшим в систему терминалом; запись счета, которую он читает, является документальной (логин и имя сервера), не содержит пароля и должна находиться вне системы контроля версий.
Тесты
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Девять тестовых файлов, все проходят на чистом checkout. Каждый из них — это самодостаточная
проверка: он выполняет свои утверждения на уровне модуля и завершается с ненулевым кодом при сбое, поэтому
набору тестов нужен только интерпретатор. tests/suite_test.py запускает те же скрипты
как подпроцессы, так что pytest также является рабочей точкой входа — это мост,
а не второй набор тестов, и нет версии тестов, которую видит только один раннер. Они охватывают цикл submit/modify/close против
заглушки, привязку стоп-лосса и повторное выведение после исполнения с комиссией, рукопожатие моста в режиме клиента,
маршруты котировок и позиций, а также шлюз, который предотвращает потребление полезной нагрузки с ошибкой
как пустого списка позиций — реальный инцидент, когда тайм-аут вернул {"positions": []}
и нижестоящий читатель поверил этому.
Два теста пропускаются, а не проходят, когда их предмет отсутствует. Они проверяют потребителя этого
сервера, поэтому им нужен хост-проект (OAS_HOST_REPO, OAS_RECONCILE_CMD). Проверка, которая
молча зеленеет, когда проверяемая вещь отсутствует, хуже, чем отсутствие проверки.
Статус и ограничения
Бэкенд
stubзавершен и детерминирован.mt5_demoиспользуется в производстве против терминала MetaTrader 5, работающего под Wine на macOS.check_rate_limitреализована, но не используется тестовым стендом — стенд симулирует тайм-ауты брокера и срабатывание аварийного выключателя, а не ответы ограничения скорости. Указано, потому что различие между "реализовано" и "протестировано" — это вся суть этого репозитория.Мост MT5 ориентирован на macOS/Wine. Для нативной установки Windows необходимо установить
OAS_MT5_COMMON_FILESи не было протестировано мной.Однотерминальный по дизайну: слушатель — это синглтон на одном порту, и второй процесс сервера обнаруживает первый и перенаправляет к нему, а не конкурирует за привязку.
Лицензия
MIT — см. 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