Skip to main content
Glama
zorionarrillaga

oas-execute-mcp

oas-execute-mcp

MCP-сервер, который размещает уровень безопасности между языковой моделью и брокерским ордером.

Модель вызывает order_submit. Прежде чем что-либо достигнет брокера, запрос проходит шесть независимых проверок, любая из которых может его отклонить — семь на путях записи, поскольку правило стоп-лосса регулирует модификации, а не открытия. Каждая попытка — разрешенная или отклоненная — добавляется в журнал аудита с указанием причины. Сам брокер находится за сменяемым бэкендом, поэтому один и тот же набор инструментов работает с симулятором на диске или живым терминалом MetaTrader 5, не сообщая модели, какой из них используется.

Создано для агента, который на своем собственном канале отправлял ордера на проп-фирменный оценочный счет в $100 000 без одобрения каждой сделки человеком, где ордер неправильного размера не был провальным тестом.


Зачем это существует

Интересная часть предоставления агенту инструмента, который тратит деньги, — это не счастливый путь. Это:

  • что возвращает инструмент, когда он частично успешен — ордер исполнился, но стоп не прикрепился;

  • где оказывается тайм-аут — брокер так и не ответил, и вы не знаете, исполнился ли ордер;

  • как предотвращается сообщение о сбое как об успехе слоем выше.

Поэтому правило дизайна здесь заключается в том, что собственному отчету модели о произошедшем никогда не доверяют. Состояние позиции перечитывается от брокера при каждом вызове. Отказы явные, их мало, и они находятся непосредственно на пути выполнения, а не рядом с ним в подсказке.

Related MCP server: mt5-mcp

Уровень безопасности

Семь проверок, каждая из которых может отказать независимо, все регистрируются с машиночитаемой причиной. Шесть из них находятся между order_submit и брокером; check_sl_widen_block управляет модификациями, поэтому он никогда не видит открытие:

Проверка

Отказывает, когда

check_killswitch

На диске существует файл аварийного выключателя. Срабатывает мгновенно, без перезапуска.

check_rate_limit

Ордера поступают быстрее установленного лимита.

check_gate_pass_freshness

Запись решения вышестоящего уровня устарела — ни один ордер не может опираться на старое одобрение.

check_position_sanity

Размер, сторона или символ не соответствуют тому, что сообщает брокер.

check_sl_widen_block

Модификация стоп-лосса переместила бы стоп дальше от цены.

check_session_override_kill

Ручные переопределения за эту сессию превысили разрешенное количество.

check_live_equity_kill

Собственный капитал счета пересек установленный минимум.

Запись в аудит выполняется после прохождения шлюзов на каждом пути — разрешенном или отклоненном — это запись, а не проверка: отказ, не оставляющий следа, рассматривается как сбой системы.

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 route

MQL5 эксперт (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"
    }
  }
}

Выбор бэкенда и пути задаются переменными окружения:

Переменная

По умолчанию

Назначение

OAS_EXECUTE_BACKEND

stub

stub или mt5_demo

OAS_DATA_DIR

./oas_execute_mcp/data

Состояние, журнал аудита, запись счета

OAS_MT5_COMMON_FILES

MT5-under-Wine по умолчанию

MT5 Common/Files для моста

Поставляется с бэкендом 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.

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