Skip to main content
Glama
nullpointer-hq

exchange-data-mcp

exchange-data-mcp

MCP-сервер рыночных данных для криптобирж в режиме только для чтения — только публичные эндпоинты, без API-ключей и без аккаунтов. Binance, KuCoin и Coinbase приводятся к единому виду и сериализуются для контекста LLM.

Работает как MCP-сервер для агентных клиентов или как обычная библиотека Python без каких-либо зависимостей.

Зачем это нужно

Агентам, работающим с рынками, нужны стаканы, сделки и свечи, а существующие варианты отдают модели сырые JSON-ответы бирж. Сырые ответы часто несут дополнительный бесполезный мусор, который модель не читает, а этот вариант — нет; вдобавок он унифицирует информацию между биржами. Этот пакет один раз нормализует диалекты, а затем сериализует их в более удобном виде.

Related MCP server: PredMCP

Примечательные особенности:

  • Диалекты символов. BTC-USDT на KuCoin и Coinbase и BTCUSDT на Binance сводятся к единой канонической форме (BASE-QUOTE).

  • Единицы измерения времени меняются от биржи к бирже и от эндпоинта к эндпоинту. У Binance это миллисекунды, у KuCoin статистика и стаканы — миллисекунды, история сделок KuCoin — наносекунды, свечи на KuCoin и Coinbase — секунды, тикеры Coinbase — строки ISO. Каждая модель данных на выходе даёт миллисекунды от начала эпохи.

  • Строки свечей Coinbase имеют вид [time, low, high, open, close, volume], сначала новые. Это документированный порядок колонок. Свечи KuCoin вместо этого используют [time, open, close, high, low, ...]. Либо позиционное сопоставление с тестами, либо парсер разворачивает свечи.

  • Лимиты запросов привязаны к IP, а инструменты агента запускаются пачками. Кэш хранит TTL для каждого эндпоинта и схлопывает одновременные промахи в один запрос (single-flight), так что пять инструментов, читающих один и тот же стакан в одну секунду, обходятся в один HTTP-вызов. Сбои не кэшируются: если запрос-лидер завершился ошибкой, ожидавшие его вызывающие немедленно повторяют запрос.

  • Расчёт спреда выполняется на Decimal от начала до конца.

  • Компактные сериализаторы сохраняют точные десятичные строки под короткими ключами. Замеры на записанных фикстурах: 24-часовой тикер уменьшается с 605 байт в сырой обёртке до 207 байт (34%). На и без того компактном снимке стакана размер практически не меняется; выигрыш — одна схема для трёх бирж.

Использование

Как библиотека (без зависимостей):

from exchange_data_mcp import MarketDataService
from exchange_data_mcp.transport import urllib_fetcher

svc = MarketDataService(urllib_fetcher())
svc.ticker("kucoin", "BTC-USDT")
svc.compare("BTC-USDT")   # same pair on every venue, executable spread from top of book

Как MCP-сервер:

pip install -e ".[mcp]"
python -m exchange_data_mcp.server

Доступные инструменты: get_ticker, get_orderbook, get_recent_trades, get_candles, compare_price.

Ошибки разбиты на категории: повторяемые (RateLimited с полем retry_after, ExchangeUnavailable), требующие исправления входных данных (SymbolNotFound, UnsupportedRequest) или «биржа что-то изменила» (BadResponse).

Тесты

37 тестов, полностью офлайн, на записанных фикстурах:

python3 -m unittest discover -s tests -t .

Статус

Для портфолио. REST с TTL-кэшем. Для живой потоковой части той же разработки с задержкой 10 мс см. kucoin-fast-stream.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Provides live cryptocurrency market data from over 100 exchanges, enabling AI agents to fetch prices, order books, funding rates, and more for trading analysis and arbitrage opportunities.
    13
    2
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Safe, read-only market data for AI trading agents, offering 44 tools to query prediction markets, perpetuals, and cross-venue signals without the ability to execute trades.
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to query cryptocurrency network and market data through tools for time-series metrics, OHLCV candles, bid/ask quotes, index levels, and asset or market metadata.
    MIT