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: Binance Bitcoin MCP Tool
Requisitos
Python 3.8+
Paquete
mcpcon herramientas CLI (mcp[cli])biblioteca
requestspara API RESTBiblioteca
websocketspara transmisiones WebSocketuvicornpara servir (opcional)
Instalación
Clonar este repositorio:
git clone https://github.com/yourusername/binance_mcp_server.git
cd binance_mcp_serverInstalar dependencias:
pip install -r requirements.txtUso
Ejecutar el servidor directamente
Para ejecutar el servidor en modo independiente:
python run_server.pyEsto 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.pyEsto 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:
Instale las herramientas CLI de MCP si aún no lo ha hecho:
pip install "mcp[cli]"Instalar el servidor en Claude Desktop:
mcp install run_server.pyAhora 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.pyEste 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 initializationEjemplos
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:
Modificar
binance_api.pypara incluir la autenticaciónCrear módulos de comando adicionales para operaciones comerciales
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