Команды программ (Studio.Mcp)
Studio.Mcp — MCP-сервер, через который агент отдаёт команды запущенным программам StockSharp: выставляет и снимает заявки в Terminal, управляет источниками данных Hydra, запускает тестирование стратегий в Designer и Shell. Сервер не нажимает кнопки и не читает окна — команду выполняет сама программа.
Сервер ничего не запускает и ничего не хранит. Команда доходит до программы только тогда, когда программа открыта; если программа не запущена, сервер так и отвечает.
Какие программы отвечают
| Программа | Какие команды принимает |
|---|---|
| Terminal | список заявок, выставление и снятие заявки |
| Hydra | виды источников, список источников, добавление, включение, запуск, остановка и удаление источника |
| Designer | список стратегий, запуск и остановка тестирования на истории |
| Shell | список стратегий области Эмуляция, запуск и остановка их прогона |
Команды принимают только Avalonia-версии этих программ, причём в обычной сборке: отдельная сборка не нужна. Программа открывает канал для команд вместе с главным окном и закрывает, когда окно закрывается. WPF-версии Terminal, Hydra и Designer этих команд не принимают.
Канал — локальный именованный канал, доступный только процессам текущего пользователя ОС. По сети команды не передаются.
Установка
Сервер собирается из исходного кода StockSharp:
dotnet build Studio/Studio.Mcp/Studio.Mcp.csproj -c Release
Готовый файл — Studio/Studio.Mcp/bin/Release/net10.0/StockSharp.Studio.Mcp.exe. Своих настроек у сервера нет: ни аргументы, ни переменные окружения ему не нужны. Протокол он пишет в стандартный вывод, журнал — в стандартный поток ошибок; запущенный вручную, без клиента, он просто ждёт ввода.
Подключение агента
Claude Code — файл .mcp.json проекта:
{
"mcpServers": {
"stocksharp": {
"command": "Studio/Studio.Mcp/bin/Release/net10.0/StockSharp.Studio.Mcp.exe"
}
}
}
В других MCP-клиентах, в том числе в Claude Desktop, сервер подключается так же: команда — путь к StockSharp.Studio.Mcp.exe, без аргументов и переменных окружения.
Что может агент
Идентификаторы источников, стратегий и заявок берутся из ответов инструментов-списков: сначала список, потом действие.
Общие
| Инструмент | Что делает |
|---|---|
list_products |
какие программы запущены и какие команды принимает каждая из них |
describe_product |
команды одной программы; product — Terminal, Hydra, Designer или Shell |
close_product |
просит программу закрыться |
Hydra
| Инструмент | Что делает |
|---|---|
hydra_list_source_types |
виды источников, которые Hydra может создать, с их идентификаторами |
hydra_list_sources |
источники Hydra: включён ли каждый и качает ли он сейчас |
hydra_add_source (typeId) |
добавляет источник выбранного вида и возвращает его; новый источник выключен |
hydra_enable_source (sourceId, isEnabled) |
включает источник в скачивание или исключает из него |
hydra_start_source (sourceId) |
запускает скачивание источником; выключенный источник не запускается |
hydra_stop_source (sourceId) |
останавливает скачивание |
hydra_remove_source (sourceId) |
удаляет источник вместе с его настройками; работающий источник сначала нужно остановить |
Чтобы скачать данные новым источником, нужны три вызова: hydra_add_source, hydra_enable_source, hydra_start_source. Настройки источника — инструменты, типы данных, параметры подключения — эти команды не меняют: их задают в окне Hydra (см. Источники данных).
Designer
| Инструмент | Что делает |
|---|---|
designer_list_strategies |
стратегии Designer: вид (Backtest, Optimization, Live, Remote, Other) и текущее состояние |
designer_start_backtest (strategyId, startTime, stopTime) |
запускает стратегию вида Backtest или Optimization на истории; период задаётся в UTC в формате ISO 8601 и заменяет период в настройках стратегии, без него берётся период из настроек |
designer_stop_backtest (strategyId) |
останавливает работающую стратегию |
Terminal
| Инструмент | Что делает |
|---|---|
terminal_list_orders |
заявки Terminal с номером транзакции каждой |
terminal_register_order (securityId, portfolioName, side, volume, price, orderType) |
выставляет заявку и возвращает номер её транзакции |
terminal_cancel_order (orderTransactionId) |
снимает заявку по номеру транзакции |
Инструмент задаётся в том виде, в каком его знает Terminal, например SBER@TQBR; портфель — по имени, известному Terminal; side — Buy или Sell. Лимитной заявке нужна цена; у заявок других типов переданная цена не используется. Заявку называет номер транзакции, который вернули terminal_register_order или terminal_list_orders, а не номер, который позже присвоит биржа.
Shell
Инструменты Shell сервер строит из описания команд, которое присылает сама программа. Поэтому они есть, только если Shell был запущен в момент запуска сервера или последнего вызова list_products или describe_product.
| Инструмент | Что делает |
|---|---|
shell_list_strategies |
стратегии области «Эмуляция» и их состояние |
shell_start_backtest (StrategyId, StartTime, StopTime) |
запускает прогон стратегии на истории |
shell_stop_backtest (StrategyId) |
останавливает прогон |
Shell всегда тестирует стратегию на периоде из её настроек: если передать StartTime или StopTime, команда будет отклонена, поэтому передавайте в них null.
Ограничения и безопасность
Caution
terminal_register_order выставляет настоящую заявку туда, куда подключён Terminal. Сервер ничего не переспрашивает: подтверждение — дело MCP-клиента, в котором человек видит вызов до того, как он выполнен.
- Стратегии, торгующие по-настоящему, не запускаются. Designer запускает только стратегии вида
BacktestиOptimization; для остальных команда отклоняется. Shell открывает для команд только стратегии области «Эмуляция». - Удаление необратимо.
hydra_remove_sourceудаляет источник вместе с настройками. - Закрытие.
close_productзакрывает программу. - Программа должна быть запущена. Иначе команда возвращает ошибку
<программа> is not running.Ожидание ответа от незапущенной программы — около 5 секунд, поэтомуlist_productsпри закрытых программах отвечает не сразу. Отказ запущенной программы приходит агенту текстом:<программа> refused the command: <причина>. - Без пароля. Канал открыт для любой программы, запущенной под той же учётной записью пользователя: отдельной проверки, кто отправил команду, нет.
- Копии программ не различаются. Если запущено несколько копий Terminal или Designer или рядом с обычной Hydra работает Hydra на тестовом профиле, команда попадёт в одну из них, и в какую — заранее не известно.
- Результатов тестирования нет. Сервер возвращает только состояние стратегии, но не статистику и не сделки. Прочитать их с панелей программы может DesktopDriver.
Пример сеанса
Пользователь просит: «Запусти в Designer тестирование стратегии за январь и проверь, что оно идёт».
list_products— Designer запущен; про остальные программы —… is not running.designer_list_strategies— среди стратегий есть нужная, видаBacktest, в состоянииStopped.designer_start_backtest,strategyIdиз шага 2,startTime=2026-01-01T00:00:00Z,stopTime=2026-02-01T00:00:00Z— ответStrategy <идентификатор> was started.designer_list_strategies— состояние стратегии изменилось.designer_stop_backtestс тем жеstrategyId, если тестирование нужно прервать.