Binance MCP Server

by tienan92it
Verified

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Integrations

  • Provides real-time and historical cryptocurrency market data from Binance, including current prices, order book snapshots, OHLCV candlestick data, and exchange information like trading rules and fee structures.

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

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

Un servidor de protocolo de contexto de modelo que expone los datos de intercambio de criptomonedas de Binance a los LLM, lo que permite a los agentes acceder a precios en tiempo real, libros de pedidos y datos históricos del mercado sin necesidad de claves API.

  1. Features
    1. Requirements
      1. Installation
        1. Usage
          1. Running the Server Directly
          2. Development Mode with MCP Inspector
          3. Installing in Claude Desktop
          4. Example Client
        2. Available Tools
          1. Connectivity and Basic Info
          2. Market Data
          3. Market Info
          4. WebSocket Streams
        3. Project Structure
          1. Examples
            1. Basic Connectivity
            2. Getting Current Market Data
            3. Working with WebSocket Streams
          2. Implementation Status
            1. Extending the Server
              1. Adding New Tools
              2. Supporting Private API Endpoints
            2. Troubleshooting
              1. License
                1. Acknowledgments
                  ID: oxihgnrmls