Binance MCP Server
Provides tools to interact with the Binance Spot REST API, including price queries, candlestick data, order book, account balances, trading (place/cancel orders), and withdrawal (disabled by default). Designed for AI agents to manage Binance spot trading operations.
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., "@Binance MCP Server what's the current price of BTCUSDT?"
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.
Binance MCP Server
Servidor MCP (Model Context Protocol) para consultar Binance Spot desde un agente de IA: precios, saldos y órdenes. Solo lectura por defecto y testnet por defecto.
English: MCP server for Binance Spot. Read-only and testnet by default; trading must be enabled explicitly with
BINANCE_ALLOW_TRADING=true. Withdrawals were removed in 0.2.0.
Seguridad por defecto
Configuración | Default | Efecto |
|
| Usa |
|
| Bloquea toda operación que modifique la cuenta (crear y cancelar órdenes). |
Retiros | — | No existen en esta versión. |
Red y permiso son independientes. Pasar a mainnet (
BINANCE_TESTNET=false) no habilita operar. Para operar hay que poner ademásBINANCE_ALLOW_TRADING=true.El bloqueo está centralizado: además de cada herramienta, el único punto que habla con Binance rechaza cualquier método distinto de
GETsi el permiso está desactivado.Valores inválidos (
BINANCE_TESTNET=quizas) devuelvenCONFIG_ERROR: nunca se cae en mainnet por accidente.Las consultas públicas no usan ni envían credenciales. Las respuestas, logs y errores nunca incluyen la API key, el secret ni la firma.
Recomendado: API key sin permiso de retiro, con IP whitelist, y solo lectura si no vas a operar.
Related MCP server: binance-mcp-server
Herramientas
Herramienta | Tipo | Descripción |
| pública | Precio actual de un símbolo ( |
| pública | Estadísticas de 24 h |
| pública | Velas; |
| pública | Libro de órdenes; |
| diagnóstico | Red, permiso de operar, credenciales presentes (sí/no), conectividad, diferencia de hora, autenticación de solo lectura |
| privada | Saldos distintos de cero y permisos de la cuenta |
| privada | Órdenes abiertas (opcionalmente por símbolo) |
| privada | Últimos trades de un símbolo (historial parcial) |
| privada | Una orden por símbolo y exactamente uno de |
| operación |
|
| operación | Cancela por |
| operación | Cancela todas las de un símbolo. Bloqueada salvo permiso |
Formato de respuesta
Todas las herramientas devuelven el mismo sobre:
{ "ok": true, "network": "mainnet", "trading_enabled": false, "data": { "symbol": "BTCUSDT", "price": "82026.83000000" } }
{ "ok": false, "network": "testnet", "trading_enabled": false,
"warning": "Red de pruebas (testnet): precios, saldos y ordenes NO corresponden al mercado real.",
"error": { "code": "MISSING_CREDENTIALS", "message": "..." } }Códigos de error: CONFIG_ERROR, VALIDATION_ERROR, VALIDATION_UNRESOLVED,
TRADING_DISABLED, MISSING_CREDENTIALS, NETWORK_ERROR (con sent: false si no se
llegó a conectar), TIMEOUT, RATE_LIMITED / IP_BANNED (con retry_after_seconds),
INVALID_RESPONSE, BINANCE_SERVER_ERROR, BINANCE_ERROR (con binance_code),
OUTCOME_UNKNOWN, INTERNAL_ERROR.
Órdenes: validación y resultados inciertos
Antes de enviar una orden se consultan las reglas del símbolo (/api/v3/exchangeInfo):
estado TRADING, tipos admitidos, PRICE_FILTER, LOT_SIZE, MARKET_LOT_SIZE,
NOTIONAL (applyMinToMarket / applyMaxToMarket) y MIN_NOTIONAL (applyToMarket).
Nunca se redondea: un precio o cantidad fuera de
tickSize/stepSizese rechaza.Pasá
quantityypricecomo texto ("0.001"). Se aceptan números por compatibilidad (se convierten vía su representación más corta, nuncaDecimal(float)), pero un número JSON pudo haber sido redondeado ya por el cliente.time_in_forcesolo aplica aLIMIT(defaultGTC); enMARKETse omite.0desactiva una regla solo enPRICE_FILTER(así lo documenta Binance). SiLOT_SIZE/MARKET_LOT_SIZEtraenstepSizeomaxQtyen0, oNOTIONAL.maxNotionalen0, la orden se bloquea conVALIDATION_UNRESOLVEDporque ese caso no está documentado.Para
MARKETel notional se compara contra el precio que documenta Binance:referencePricesi existe; si no,avgPricecomprobando que su ventana (mins) sea la del filtro (avgPriceMins); siavgPriceMinses 0, el último precio. Si no se puede comprobar, la respuesta traevalidation.status = "incomplete"y el filtro ennot_checked. Otros filtros (p. ej.PERCENT_PRICE_BY_SIDE) también se listan ahí.Una validación local aprobada no garantiza que Binance acepte la orden.
Cada orden lleva un
client_order_idgenerado antes de enviarla. Si hay timeout, error 5xx,-1007o respuesta ilegible después de enviar, la respuesta esOUTCOME_UNKNOWN(outcome: "unknown"): no se afirma que falló ni que se ejecutó, y no se reintenta. Consultala conget_order(symbol, client_order_id=...). En cancelaciones se devuelven elsymboly elorder_idoriginales.
Instalación
Requiere uv.
git clone https://github.com/Lubodi-Code/binance-mcp.git
cd binance-mcp
uv syncConfiguración en el cliente MCP
server.py no lee .env: las variables van en el bloque env del cliente. Ejemplo
para Claude Desktop (claude_desktop_config.json) o Claude Code (.mcp.json):
{
"mcpServers": {
"binance": {
"command": "uv",
"args": ["--directory", "/ruta/absoluta/a/binance-mcp", "run", "server.py"],
"env": {
"BINANCE_TESTNET": "true",
"BINANCE_ALLOW_TRADING": "false",
"BINANCE_API_KEY": "tu_api_key_de_testnet",
"BINANCE_API_SECRET": "tu_secret_de_testnet"
}
}
}
}Solo precios: omití
BINANCE_API_KEY/BINANCE_API_SECRET.Claves de testnet: https://testnet.binance.vision.
No pegues tus claves en el chat del agente: van solo en este archivo de configuración.
Testnet vs. producción
Testnet ( | Producción ( | |
Host público |
|
|
Host privado |
|
|
Precios | De prueba, no reales. Cada respuesta lo advierte en | Mercado real |
Claves | Propias del testnet | Propias de la cuenta real |
Saldos | Fondos ficticios del testnet | Fondos reales |
Para consultar precios reales sin arriesgar nada: BINANCE_TESTNET=false,
BINANCE_ALLOW_TRADING=false y sin claves.
Ejemplos de consulta
«¿A cuánto está BTCUSDT y cómo se movió en las últimas 24 h?» →
get_price,get_24h_stats«Diagnosticá la conexión con Binance» →
diagnose_connection«¿Qué saldos tengo?» →
get_account«¿Tengo órdenes abiertas en ETHUSDT?» →
get_open_orders(symbol="ETHUSDT")«¿Qué pasó con la orden mcp-…?» →
get_order(symbol=..., client_order_id="mcp-...")
Si diagnose_connection reporta clock_status distinto de ok, sincronizá el reloj del
sistema: Binance rechaza firmas con más de 1 s de adelanto o fuera de recvWindow (-1021).
Skill incluida: binance-account-review
skills/binance-account-review/SKILL.md guía al agente para revisar precios, saldos y
órdenes abiertas y entregar un informe breve en español (fecha, red, resultados, datos
faltantes). Es de solo lectura: no envía órdenes, no recomienda ni pide secretos.
Instalarla en Claude Code (requiere este MCP conectado):
cp -r skills/binance-account-review ~/.claude/skills/O por proyecto: copiala a .claude/skills/ del repo donde la uses. Reiniciá la sesión y
pedí, por ejemplo, «revisá mi cuenta de Binance».
Desarrollo y verificación
uv run --group dev pytest -qPruebas unitarias con transporte HTTP simulado: cubren bloqueo de operaciones, validaciones, precisión, errores, resultados inciertos y ausencia de secretos. No acreditan integración real.
uv run python scripts/verify/run_verify.pyVerificación de integración real: levanta el servidor por stdio con el cliente MCP oficial
y llama solo herramientas de lectura con BINANCE_ALLOW_TRADING=false:
Consultas públicas contra Binance real, sin credenciales (el proceso hijo no hereda ninguna variable
BINANCE_*).Consultas privadas contra testnet, solo si existen
BINANCE_TESTNET_API_KEYyBINANCE_TESTNET_API_SECRETen el entorno o en.env(que el script carga explícitamente). Nunca usaBINANCE_API_KEYdel entorno, para no mandar claves de producción a testnet. Si faltan, el escenario queda «NO VERIFICADO».
La evidencia queda en scripts/verify/out/<fecha>/ (ignorada por Git: puede tener datos de
cuenta). summary.json es un resumen sin montos, apto para compartir.
Cambios de compatibilidad (0.2.0)
Eliminada la herramienta
withdrawy la variableENABLE_WITHDRAWALS(si sigue definida, se ignora ydiagnose_connectionlo avisa enlegacy_env_ignored).Nuevo default de solo lectura:
place_order,cancel_orderycancel_all_ordersdevuelvenTRADING_DISABLEDsalvoBINANCE_ALLOW_TRADING=true.Formato de respuesta: todas las herramientas devuelven
{ok, network, trading_enabled, data | error}en vez del JSON crudo de Binance (ahora endata).place_order:time_in_forceya no tiene defaultGTCen la firma (se aplica solo aLIMIT);MARKETconpriceotime_in_forcese rechaza; las cantidades se validan contra las reglas del símbolo y no se redondean.BINANCE_TESTNETsolo aceptatrue/false/1/0/yes/no; antes cualquier otro valor activaba mainnet.Mainnet público usa
data-api.binance.visiony no envía la API key.get_accountomite saldos en cero (omitZeroBalances=true).get_my_tradesdevuelve{trades, note}.Nuevas herramientas:
get_order,diagnose_connection.
Aviso
Proyecto educativo. Operar con criptomonedas conlleva riesgo financiero; el autor no se hace responsable de pérdidas. Empezá siempre en testnet y con permisos mínimos.
Stack
Python 3.10+ · MCP SDK (FastMCP) · httpx · uv
Licencia
MIT — ver LICENSE.
Available Tools
11 toolscancel_all_ordersB
Cancela TODAS las ordenes abiertas de un simbolo.
Inputs: symbol (required).
cancel_orderA
Cancela una orden por su orderId en el simbolo dado.
Inputs: symbol (required), order_id (required).
get_24h_statsA
Estadisticas de 24h de un simbolo (volumen, cambio %, high/low). Ej: 'ETHUSDT'.
Inputs: symbol (required).
get_accountA
Balances y permisos de tu cuenta spot. Requiere firma.
Inputs: no named parameters.
get_klinesB
Velas (candlesticks) de un simbolo. interval: 1m,5m,15m,1h,4h,1d,1w, etc. limit: max 1000.
Inputs: symbol (required), limit, interval.
get_my_tradesB
Historial de trades tuyos para un simbolo. Requiere firma.
Inputs: symbol (required), limit.
get_open_ordersC
Ordenes abiertas. Si pasas symbol, filtra por ese par.
Inputs: symbol.
get_order_bookB
Libro de ordenes (bids/asks) de un simbolo. limit: 5,10,20,50,100,500,1000.
Inputs: symbol (required), limit.
get_priceA
Precio actual de un simbolo. Ej: symbol='BTCUSDT'.
Inputs: symbol (required).
place_orderA
Crea una orden de compra/venta. symbol: ej 'BTCUSDT' side: 'BUY' o 'SELL' order_type: 'MARKET' o 'LIMIT' quantity: cantidad del activo base price: requerido solo para LIMIT time_in_force: GTC / IOC / FOK (solo LIMIT)
Inputs: side (required), symbol (required), price, quantity, +2 more.
withdrawA
Retira fondos a una direccion externa. DESACTIVADO por defecto. Para usarlo: ENABLE_WITHDRAWALS=true y la API key debe tener permiso de retiro. Entende el riesgo antes de activarlo.
Inputs: coin (required), amount (required), address (required), network.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 11 tools
Each tool targets a distinct resource and action (market data, account, orders, withdrawals). The slight conceptual overlap between get_price and get_24h_stats is easily resolved by their descriptions, and cancel_order vs cancel_all_orders is clearly differentiated by scope.
All tools use a consistent verb_noun snake_case pattern (withdraw, get_price, place_order, cancel_order). Even get_24h_stats fits the convention. No mixed naming styles or ambiguous verbs.
With 11 tools, the server is well-scoped for a Binance trading API: market data queries, account information, order management, and withdrawals are all covered without unnecessary bloat. This is within the ideal range for a focused exchange integration.
The core spot trading lifecycle is well covered: price/klines/order book for market data, account balance/open orders/trades for status, and order placement/cancellation for trading actions. A notable missing piece is a specific get_order_status endpoint, but agents can use open orders or trade history as a workaround. Withdrawal history and deposit info are also absent but not essential for the main use case.
Maintenance
Related MCP Connectors
Read-only access to your own crypto portfolio across 11+ exchanges and 20+ chains: holdings, full history, FIFO cost basis and P&L, fees and income. Ask Claude or ChatGPT about your portfolio; the connector can never trade, move funds or act as a login.
Trade Robinhood through natural language in Claude Code.
Connect Claude to your Platform7n workspaces: chat, links, work and decks. One-click OAuth.
Connect Claude to your Platform7n workspaces: chat, links, work and decks. One-click OAuth.
Related MCP Servers
- AlicenseCqualityBmaintenanceProvides over 156 tools to interact with the Binance.com global exchange API for spot trading, wallet management, and staking operations. It enables users to execute orders, retrieve market data, and manage crypto assets through natural language interfaces like Claude and ChatGPT.195142 npm40MIT
- AlicenseAqualityDmaintenanceProvides comprehensive Binance trading capabilities through Claude Desktop, including account management, spot and futures trading, market data, and advanced analysis tools.35158 npm10MIT
- FlicenseNot gradedqualityDmaintenanceEnables Claude to monitor and execute Binance trading strategies through a bounded MCP tool interface, with risk controls and audit logging.-
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to interact directly with the Binance cryptocurrency exchange for trading, portfolio management, market analysis, and strategy automation via natural language.142 npmMIT