MOEX1-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MOEX1-mcpWhat's the current price of Sberbank shares?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MOEX1-mcp
Монорепозиторий из двух сервисов:
MCP-сервер
MOEX1-mcp— котировки и стаканы через ISS+ WebSocket (STOMP) и ISS REST (свечи, сделки, календарь).Telegram-бот на aiogram 3 — по тексту пользователя OpenAI выбирает MCP tool, бот вызывает сервер по HTTP и отвечает на русском.
Модель LLM задаётся переменной OPENAI_MODEL (по умолчанию gpt-5.6-luna). Другая модель не подставляется автоматически: если API её не знает, это пишется в лог, пользователю уходит общее сообщение об ошибке.
Архитектура
Пользователь → Telegram → aiogram bot → OpenAI (function/tool calling)
│
├─ если LLM выбрал MCP tool → HTTP-запрос к MCP-серверу
│ MCP-сервер → WebSocket (STOMP) → MOEX ISS+
│ и/или ISS REST (свечи, сделки, календарь)
│ ← результат ← ответ
│
└─ если подходящего tool нет → сообщение:
"Запрос не может быть обработан в автоматическом режиме,
направьте заявку в поддержку"
│
▼
Финальный ответ пользователю в TelegramMCP-сервер слушает Streamable HTTP (POST /mcp, JSON-RPC, режим JSON-ответа). Бот подключается по MCP_SERVER_URL и передаёт MCP_API_KEY в заголовке X-API-Key.
Related MCP server: EODHD MCP Server
MCP tools
Tool | Параметры | Назначение |
|
| Снепшот бумаги. Destination |
|
| Стакан заявок. Destination |
|
| Поиск инструмента. REQUEST на |
|
| Диагностическая подписка на произвольный канал ISS+ |
|
| Свечи акции TQBR (ISS REST). |
|
| Лента сделок акции TQBR (ISS REST) |
|
| Справочник и marketdata акции TQBR (ISS REST) |
|
| Свечи фьючерса RFUD (ISS REST), тикер как |
|
| Сделки фьючерса RFUD (ISS REST) |
| — | Список контрактов RFUD (обрезается до 80 строк) |
| — | Архив приостановок торгов: фактические и плановые |
Тикер принимается только из букв и цифр (защита от STOMP selector injection). Для фьючерсов регистр сохраняется (SiH6).
Каталог ALGOPACK REST: Super Candles, FUTOI, HI2, Mega Alerts, ISS Calendar (/iss/calendars*.json) и REST-стакан (orderbook.json) с MOEX_ALGOPACK_TOKEN в этой среде отвечают HTML, а не JSON — в MCP их нет.
Установка и настройка .env
Нужен Python 3.11+.
python -m venv .venv
# Windows:
.venv\Scripts\activate
# Linux/macOS:
source .venv/bin/activate
pip install -r requirements.txt
copy .env.example .env # Windows
# cp .env.example .env # Linux/macOSЗаполните .env (файл в .gitignore, в git не попадает):
Переменная | Откуда взять |
| Логин и пароль подписки ALGOPACK (кабинет MOEX / ALGOPACK) для ISS+ WebSocket |
| REST APIKEY ( |
| @BotFather → |
| Кабинет OpenAI / ключ API |
| По умолчанию |
| Придумайте длинный случайный секрет (общий для сервера и бота) |
| Локально |
Запуск
Локально (два процесса)
python -m mcp_server
python -m telegram_botСервер: http://127.0.0.1:8765/health и POST http://127.0.0.1:8765/mcp.
Docker
docker compose up --buildСеть общая: бот ходит на http://mcp_server:8765.
Примеры запросов в Telegram
Сообщение пользователя | Ожидаемое поведение |
«Какая сейчас цена акций Сбербанка?» | LLM вызывает |
«Покажи стакан заявок по тикеру GAZP» | Вызов |
«Найди тикер компании Лукойл» | Вызов |
«Свечи SBER за последние дни» | Вызов |
«Какие фьючерсы Si сейчас торгуются?» |
|
«Какая погода в Москве завтра?» | Фиксированный fallback: запрос нельзя обработать автоматически, направьте заявку в поддержку |
«Покажи мой баланс на бирже» | Тот же fallback (нет подходящего tool) |
| Приветствие и примеры |
Логирование
Каталог:
logs/(создаётся при старте).Файлы с ротацией (5 МБ × 5):
logs/mcp_server.log,logs/telegram_bot.log.Формат: JSON-строки (
ts,level,logger,msg).Логгеры:
moex.websocket,moex.mcp.tools,moex.errors,telegram.bot,telegram.llm,telegram.mcp,telegram.errors.Уровень:
LOG_LEVEL(по умолчаниюINFO).
Безопасность
В логах и ответах пользователю редактируются
OPENAI_API_KEY,TELEGRAM_BOT_TOKEN,MCP_API_KEY,MOEX_PASSCODE/MOEX_ALGOPACK_TOKEN.MCP-сервер отклоняет запросы без верного
X-API-Key/Authorization: Bearer(401, без внутренних деталей)./healthоткрыт для docker healthcheck.Тикер/query/selector валидируются до сборки STOMP-кадра.
Результаты tools передаются модели внутри
<exchange_data>как недоверенные данные, не как инструкции.Rate limit:
BOT_RATE_LIMIT_PER_MINUTE(по умолчанию 10 сообщений/мин на user_id).Пользователь не видит стектрейсы, пути и токены — только короткое сообщение об ошибке.
Тесты
pytest tests -m "not integration"Интеграционные тесты (tests/integration/test_integration_live.py) требуют реальных ключей в .env и после их появления запускаются отдельно. Security-набор (tests/integration/test_security.py) работает на моках и входит в обычный прогон.
Известные ограничения
Зависит от доступности
wss://iss.moex.com/infocx/v3/websocketи действующей подписки ALGOPACK.ISS+ WebSocket принимает passport login/пароль, а не REST APIKEY ALGOPACK. Если шлюз отвечает Access denied, задайте
MOEX_LOGIN(email passport.moex.com) иMOEX_PASSCODE.REST-свечи и сделки TQBR/RFUD на
https://iss.moex.comдоступны и без datashop-подписки (публичный ISS). Платные разделы Super Candles / FUTOI / HI2 / Mega Alerts требуют рабочий datashop JSON, иначе шлюз отдаёт HTML.Штатные WebSocket tools рассчитаны на акции TQBR (
MXSE.TQBR.{ticker}). Фьючерсы по REST покрыты отдельными tools; прочиеdestinationISS+ — черезsubscribe_raw.Глагол STOMP
REQUESTдляSEARCH.tickerвзят из спецификации проекта; если ISS+ ожидает иной кадр, это будет видно поERROR/timeoutв логах.Поле
LANGUAGE="ru"в selector снепшота задано спецификацией; поведение при его отсутствии в доке ISS+ неоднозначно.Бот не торгует и не показывает брокерский баланс.
Модель
gpt-5.6-lunaне заменяется на другую при ошибке API. Для tool calling в Chat Completions ей нуженreasoning_effort=none.
Документация ISS+
Ориентиры: WebSocket ALGOPACK, URL wss://iss.moex.com/infocx/v3/websocket, subprotocol STOMP, CONNECT с domain: passport, login, passcode.
This server cannot be deployed
Maintenance
Related MCP Connectors
Real-time crypto market data: candles, tickers, orderbooks across 13+ exchanges via MCP.
Public Gate market data MCP for spot, futures, margin, options, delivery, earn, and alpha.
Market Data App MCP — wraps the Market Data App API (marketdata.app)
China Exchange Data MCP (SZSE + SSE). Keyless.
Related MCP Servers
- AlicenseCqualityCmaintenanceEnables querying real-time and historical financial market data for stocks, options, forex, and crypto, including quotes, trades, technical indicators, and reference data through a set of MCP tools.713MIT
- AlicenseNot gradedqualityCmaintenanceEnables access to financial market data including EOD, intraday, fundamentals, news, and more via 75 read-only MCP tools.5MIT
- AlicenseBqualityDmaintenanceProvides access to Moscow Exchange data including quotes, trade history, candles, securities info, indices, and currency rates. Enables AI assistants to query financial market data through natural language.207 npmMIT
- AlicenseBqualityBmaintenanceProvides read-only real-time market data, including snapshots, quotes, candlesticks, order book, tickers, and security search, from the Futu OpenAPI to MCP clients like Codex.7MIT