Обсуждение статьи "Как подключить ИИ-агентов к MetaTrader 5 через MCP"

 

Опубликована статья Как подключить ИИ-агентов к MetaTrader 5 через MCP:

В статье показано, как подключить ИИ-агентов напрямую к MetaTrader 5, создав полноценный сервер MCP (Model Context Protocol) на Python. Подробно описаны архитектура, клиентская обёртка MetaTrader 5, обработчики рыночных данных и ордеров, а также регистрация инструментов через stdio, тестирование с помощью MCP Inspector и подключение к таким клиентам, как Claude Desktop или OpenClaw. В результате получается стандартизированный мост для запросов на естественном языке, получения данных в реальном времени и безопасного исполнения ордеров в MetaTrader 5.

Прежде чем приступить к написанию кода, нам необходимо понять, что такое MCP и почему он важен. MCP расшифровывается как Model Context Protocol (протокол контекста модели) и был создан компанией Anthropic (разработчиком Claude) как открытый стандарт для подключения моделей ИИ к внешним инструментам и источникам данных. Представьте это как универсальный адаптер: вместо того чтобы каждое ИИ-приложение создавало собственную специализированную интеграцию для каждого сервиса, MCP предоставляет единый стандартизированный протокол, с помощью которого любой ИИ-клиент может взаимодействовать с любым сервером инструментов.

Аналогия для сообщества MQL5 вполне понятна. Пакет Python для MetaTrader 5 от MetaQuotes представляет собой мост между Python и вашим терминалом MetaTrader 5 — он предоставляет скриптам на Python стандартизированный способ вызова функций MetaTrader 5. MCP делает то же самое, но на уровень выше: он предоставляет ИИ-агентам стандартизированный способ обнаруживать и вызывать инструменты, которые предоставляют Python-скрипты (или любые другие программы). Без MCP каждому ИИ-приложению (OpenClaw, Claude Desktop, Cursor, VS Code Copilot) потребовался бы собственный формат плагинов. С MCP вы создаёте один сервер, и любой совместимый клиент может сразу же начать им пользоваться.

Как работает MCP

Сервер MCP — это программа, предоставляющая инструменты — функции, которые может вызывать ИИ-агент. Каждый инструмент имеет название, описание (чтобы ИИ знал, когда его использовать), набор типизированных параметров и возвращаемое значение. При подключении сервера MCP к ИИ-клиенту клиент автоматически обнаруживает все доступные инструменты и их схемы. Затем модель ИИ на основе запроса пользователя определяет, какие инструменты нужно вызвать, формирует правильные параметры, вызывает инструмент и интерпретирует результат.

Например, наш сервер MCP для MetaTrader 5 будет предоставлять инструмент get_rates с параметрами symbol, timeframe и count. Когда пользователь обращается к своему ИИ-ассистенту с запросом «Покажи мне последние 10 часовых свечей по паре EURUSD», ИИ понимает, что для этого требуются рыночные данные, вызывает get_rates с параметрами symbol="EURUSD", timeframe="H1" и count=10, получает данные OHLCV и представляет их в удобочитаемом формате. Пользователю не нужно знать, что был вызван инструмент MCP, — он просто ведёт диалог со своим ИИ-ассистентом.

Транспорт MCP: stdio

MCP поддерживает несколько транспортных механизмов. Для локальных серверов в качестве стандарта используется stdio (стандартный ввод/вывод). Для этого не требуется ни HTTP-сервер, ни настройка портов, ни открытие доступа по сети. Сервер запускается, когда он нужен клиенту, и обменивается данными через каналы. Это самый простой и безопасный транспорт для инструмента, управляющего торговым терминалом на вашем локальном компьютере.

Архитектурная схема, показывающая поток от сообщения пользователя через ИИ-агента, протокол MCP, сервер MCP на Python и Python API MetaTrader5 до терминала MT5


Автор: Muhammad Minhas Qamar

 

Хороший обзор… Четырёхслойная архитектура (константы/сопоставления, оболочка клиента MT5, обработчики доменов, точка входа MCP) — идеальный подход для этой задачи, и мне нравится, что вы явно указали на механизмы защиты соединений и аннотации деструктивных действий, а не оставили вопрос безопасности на второй план.

Стоит добавить для тех, кто планирует расширить это до реального исполнения: по нашему опыту, самой сложной частью была не сама инфраструктура MCP, а обеспечение достаточной надёжности инструментов обратного считывания (позиции/баланс/прибыль и убыток), чтобы представление агента о состоянии счёта не расходилось с фактическим состоянием терминала (особенно при повторных подключениях). Защита от таймаутов помогает, но не решает проблему устаревания данных полностью. Мы столкнулись с аналогичной проблемой при создании нашего уровня выполнения MCP для MT4/MT5 и в итоге решили рассматривать «синхронизацию состояния» как отдельную подсистему, а не привязывать её к обработчикам управления сделками.

Интересно, планируете ли вы продолжение работы в области интеграции с клиентскими приложениями (Claude Desktop / OpenClaw) — именно там пользовательский опыт обычно становится особенно интересным.

 
Jane Quek состоянием терминала (особенно при повторных подключениях). Защита от таймаутов помогает, но не решает проблему устаревания данных полностью. Мы столкнулись с аналогичной проблемой при создании нашего уровня выполнения MCP для MT4/MT5 и в итоге решили рассматривать «синхронизацию состояния» как отдельную подсистему, а не просто привязывать её к обработчикам управления сделками.

Интересно, планируете ли вы продолжение работы в области интеграции с клиентскими приложениями (Claude Desktop / OpenClaw) — именно там пользовательский опыт обычно становится особенно интересным.

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

Что касается клиентов, в статье уже есть раздел, посвящённый Claude Desktop и OpenClaw с Telegram.