Skip to main content
Glama

Servidor MCP de Binance

Un servidor de Protocolo de Contexto de Modelo (MCP) que expone los datos de intercambio de criptomonedas de Binance a agentes de Modelo de Lenguaje Grande (LLM). Este servidor permite a los LLM acceder a datos históricos y en tiempo real del mercado de Binance a través de una interfaz estandarizada.

Características

  • Datos de precios en vivo : obtenga precios actuales para cualquier par comercial en Binance

  • Acceso al libro de órdenes : recupere instantáneas del libro de órdenes que muestran el interés de compra/venta en diferentes niveles de precios

  • Datos históricos de precios : obtenga datos de velas OHLCV (apertura, máximo, mínimo, cierre, volumen) para cualquier período de tiempo

  • Transmisiones WebSocket en tiempo real : suscríbase a actualizaciones de transacciones, tickers y libros de órdenes en tiempo real a través de WebSockets

  • Datos completos del mercado : acceso a operaciones, estadísticas de 24 horas, operaciones agregadas, datos de ventana móvil y más

  • Información de intercambio : acceda a reglas comerciales, información de símbolos y estructuras de tarifas

  • Operación de solo lectura : todos los datos se obtienen a través de la API REST pública de Binance (no se requieren claves API)

  • Compatible con el estándar MCP : funciona con cualquier cliente LLM compatible con MCP

Related MCP server: BSC MCP Server

Requisitos

  • Python 3.8+

  • Paquete mcp con herramientas CLI ( mcp[cli] )

  • biblioteca requests para API REST

  • Biblioteca websockets para transmisiones WebSocket

  • uvicorn para servir (opcional)

Instalación

  1. Clonar este repositorio:

git clone https://github.com/yourusername/binance_mcp_server.git cd binance_mcp_server
  1. Instalar dependencias:

pip install -r requirements.txt

Uso

Ejecutar el servidor directamente

Para ejecutar el servidor en modo independiente:

python run_server.py

Esto iniciará el servidor MCP, que escuchará conexiones a través de STDIO.

Modo de desarrollo con MCP Inspector

Para el desarrollo y las pruebas, utilice el Inspector MCP:

mcp dev run_server.py

Esto abre la interfaz de MCP Inspector donde puedes probar las herramientas del servidor de forma interactiva.

Instalación en Claude Desktop

Para utilizar este servidor con Claude Desktop:

  1. Instale las herramientas CLI de MCP si aún no lo ha hecho:

pip install "mcp[cli]"
  1. Instalar el servidor en Claude Desktop:

mcp install run_server.py
  1. Ahora puedes acceder a los datos de Binance directamente desde tus conversaciones de Claude Desktop.

Cliente de ejemplo

Se proporciona un ejemplo de script de cliente para demostrar el uso programático:

python example_client.py

Este script se conecta al servidor y recupera varios tipos de datos de mercado.

Herramientas disponibles

Conectividad e información básica

  • ping_binance() : prueba la conectividad con el servidor API de Binance

    • Ejemplo: ping_binance()

  • get_server_time() : obtiene la hora actual del servidor de Binance

    • Ejemplo: get_server_time()

Datos de mercado

  • get_price(símbolo) : obtiene el precio actual de un par comercial

    • Ejemplo: get_price(symbol="BTCUSDT")

  • get_order_book(símbolo, profundidad=10) : Obtener el libro de pedidos actual

    • Ejemplo: get_order_book(symbol="ETHUSDT", depth=5)

  • get_historical_prices(símbolo, intervalo="1d", límite=100) : Obtener datos históricos de OHLCV

    • Ejemplo: get_historical_prices(symbol="BTCUSDT", interval="1h", limit=24)

    • Intervalos válidos: "1m", "3m", "5m", "15m", "30m", "1h", "2h", "4h", "6h", "8h", "12h", "1d", "3d", "1w", "1M"

  • get_ui_klines(símbolo, intervalo="1d", límite=100) : Obtener datos de velas optimizados para la interfaz de usuario

    • Ejemplo: get_ui_klines(symbol="BTCUSDT", interval="1h", limit=24)

  • get_recent_trades(símbolo, límite=20) : obtiene las operaciones más recientes de un símbolo

    • Ejemplo: get_recent_trades(symbol="BTCUSDT", limit=50)

  • get_historical_trades(símbolo, límite=20, desde_id=Ninguno) : Obtener operaciones más antiguas para un símbolo

    • Ejemplo: get_historical_trades(symbol="BTCUSDT", limit=100, from_id=12345)

  • get_aggregate_trades(símbolo, límite=20) : Obtener operaciones comprimidas/agregadas

    • Ejemplo: get_aggregate_trades(symbol="ETHUSDT", limit=30)

  • get_24hr_ticker(símbolo) : Obtener estadísticas de cambio de precios de 24 horas

    • Ejemplo: get_24hr_ticker(symbol="BNBUSDT")

  • get_all_24hr_tickers() : Obtener estadísticas de 24 horas para todos los símbolos

    • Ejemplo: get_all_24hr_tickers()

  • get_trading_day_ticker(símbolo, tipo="FULL") : Obtener estadísticas de cambio de precio del día de negociación

    • Ejemplo: get_trading_day_ticker(symbol="BTCUSDT", type="FULL")

  • get_all_trading_day_tickers(type="FULL") : Obtener estadísticas del día de negociación para todos los símbolos

    • Ejemplo: get_all_trading_day_tickers(type="MINI")

  • get_rolling_window_ticker(símbolo, tamaño_de_ventana="1d", tipo="COMPLETO") : Obtener estadísticas de precios de ventanas móviles

    • Ejemplo: get_rolling_window_ticker(symbol="BTCUSDT", window_size="4h")

  • get_all_rolling_window_tickers(window_size="1d", type="FULL") : Obtener estadísticas de ventanas móviles para todos los símbolos

    • Ejemplo: get_all_rolling_window_tickers(window_size="4h", type="MINI")

  • get_average_price(símbolo) : Obtener el precio promedio actual (promedio ponderado de 5 minutos)

    • Ejemplo: get_average_price(symbol="BTCUSDT")

  • get_book_ticker(símbolo) : Obtenga los mejores precios de oferta/demanda y cantidades

    • Ejemplo: get_book_ticker(symbol="ETHBTC")

  • get_all_book_tickers() : Obtener la mejor oferta/demanda para todos los símbolos

    • Ejemplo: get_all_book_tickers()

Información del mercado

  • get_exchange_info() : Obtenga información completa sobre el intercambio, incluidas las reglas comerciales y la lista de símbolos

  • get_trading_fees() : Obtiene las tarifas comerciales predeterminadas (nota: para fines de demostración, devuelve las tarifas públicas predeterminadas)

Flujos de WebSocket

  • subscribe_to_trade_stream(símbolo) : Suscríbase a eventos comerciales en tiempo real

    • Ejemplo: subscribe_to_trade_stream(symbol="BTCUSDT")

  • subscribe_to_kline_stream(símbolo, intervalo="1m") : Suscribirse a actualizaciones de velas japonesas/kline

    • Ejemplo: subscribe_to_kline_stream(symbol="BTCUSDT", interval="5m")

  • subscribe_to_ticker_stream(símbolo) : Suscríbase a actualizaciones de ticker las 24 horas

    • Ejemplo: subscribe_to_ticker_stream(symbol="ETHUSDT")

  • subscribe_to_book_ticker_stream(símbolo) : Suscríbase a las mejores actualizaciones de oferta/demanda

    • Ejemplo: subscribe_to_book_ticker_stream(symbol="BNBUSDT")

  • subscribe_to_depth_stream(símbolo, niveles=10) : Suscribirse a las actualizaciones del libro de pedidos

    • Ejemplo: subscribe_to_depth_stream(symbol="BTCUSDT", levels=5)

  • list_active_subscriptions() : enumera todas las suscripciones de WebSocket activas

    • Ejemplo: list_active_subscriptions()

  • get_latest_stream_data(stream_name) : obtiene los datos más recientes de una transmisión

    • Ejemplo: get_latest_stream_data(stream_name="btcusdt@trade")

  • unsubscribe_from_stream(stream_name) : Cancelar la suscripción a una transmisión

    • Ejemplo: unsubscribe_from_stream(stream_name="btcusdt@kline_1m")

  • cleanup_all_streams() : cierra todas las conexiones WebSocket y limpia los recursos

    • Ejemplo: cleanup_all_streams()

Estructura del proyecto

binance_mcp_server/ ├── binance_api.py # Core REST API interaction module ├── binance_ws_api.py # WebSocket connection management ├── commands/ # MCP command definitions │ ├── __init__.py │ ├── market_data.py # Price/order book/historical data commands │ ├── market_info.py # Exchange info and metadata commands │ └── websocket_streams.py # WebSocket stream commands └── server.py # Main MCP server setup and initialization

Ejemplos

Conectividad básica

# Check if Binance API is reachable is_connected = ping_binance() # Get the current server time (milliseconds since epoch) server_time = get_server_time()

Obtención de datos actuales del mercado

# Get the current price of Bitcoin btc_price = get_price(symbol="BTCUSDT") # Get detailed 24-hour statistics btc_stats = get_24hr_ticker(symbol="BTCUSDT") print(f"BTC price change: {btc_stats['priceChangePercent']}%") print(f"BTC 24h volume: {btc_stats['volume']} BTC") # Get rolling window statistics (4-hour window) btc_4h_stats = get_rolling_window_ticker(symbol="BTCUSDT", window_size="4h") print(f"BTC 4h price change: {btc_4h_stats['priceChangePercent']}%")

Trabajar con flujos de WebSocket

# Subscribe to real-time trade updates trade_sub = subscribe_to_trade_stream(symbol="BTCUSDT") # After some time, get the latest trade data latest_trade = get_latest_stream_data(stream_name="btcusdt@trade") print(f"Latest trade price: {latest_trade['data']['p']}") # Subscribe to candlestick updates for chart data kline_sub = subscribe_to_kline_stream(symbol="ETHUSDT", interval="5m") # Clean up when done unsubscribe_from_stream(stream_name="btcusdt@trade") unsubscribe_from_stream(stream_name="ethusdt@kline_5m")

Estado de implementación

Para obtener una descripción detallada de los puntos finales de API implementados y planificados, consulte el documento Estado de implementación de API .

Ampliación del servidor

Agregar nuevas herramientas

Para agregar nuevas herramientas, cree funciones apropiadas en el módulo API de Binance y luego regístrelas como herramientas MCP en uno de los módulos de comando.

Compatibilidad con puntos finales de API privados

Para admitir llamadas API autenticadas:

  1. Modificar binance_api.py para incluir la autenticación

  2. Crear módulos de comando adicionales para operaciones comerciales

  3. Registra los nuevos comandos en server.py

Solución de problemas

  • Problemas de conexión : asegúrese de que el servidor esté en ejecución antes de intentar conectarse con un cliente

  • Limitación de velocidad : Binance puede limitar la velocidad de las llamadas API excesivas; considere implementar almacenamiento en caché para implementaciones de alto tráfico

  • Estabilidad de WebSocket : las conexiones WebSocket pueden desconectarse después de 24 horas (límite de Binance); el servidor intentará reconectarse automáticamente

  • Formato de datos : Diferentes símbolos o intervalos pueden devolver datos en formatos ligeramente diferentes

Licencia

Este proyecto está licenciado bajo la licencia MIT: consulte el archivo de LICENCIA para obtener más detalles.

Expresiones de gratitud

  • Binance por proporcionar una API pública integral

  • El proyecto MCP para estandarizar las interacciones de las herramientas LLM

-
security - not tested
A
license - permissive license
-
quality - not tested

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/tienan92it/binance-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server