Arb DEX
Precios de cripto en vivo entre DEX leídos del estado de los pools en cadena: precio por venue, profundidad de liquidez y spread bruto entre venues en BSC, Polygon, Arbitrum, Base, Avalanche y Optimism. Funciona sin clave, sin cuenta.
Documentación
arb-dex-mcp
Precios cripto en vivo entre DEX para tu agente de IA — precio de pool por venue, liquidez del pool y el spread bruto entre venues en 6 cadenas EVM, leídos directamente del estado on-chain del pool.
Cadenas: BSC · Polygon · Arbitrum · Base · Avalanche · Optimism. Venues: PancakeSwap (v2 + v3), Uniswap v3, SushiSwap, QuickSwap, Biswap, ApeSwap, BaseSwap, Trader Joe, Pangolin — cada pool estilo v2 y cada nivel de comisión de v3 por separado, porque un pool del 1% con $12k y un pool del 0.01% con $19M no son la misma cotización.
Nada se modela, estima o rellena retroactivamente. Cada payload indica su propio número de bloque y lleva su propia nota de alcance, de modo que un agente que cita una cifra también tiene adjuntas las advertencias.
Funciona sin clave de API contra una instantánea pública gratuita por hora. Docs · npm
Inicio rápido
Nada que clonar o compilar. Tu cliente MCP descarga el paquete. Requiere Node 18+.
Claude Desktop
claude_desktop_config.json — macOS ~/Library/Application Support/Claude/,
Windows %APPDATA%\Claude\:
{
"mcpServers": {
"arb-dex": {
"command": "npx",
"args": ["-y", "arb-dex-mcp"],
"env": {
"RAPIDAPI_KEY": "your-rapidapi-key-here"
}
}
}
}
Reinicia Claude Desktop; las seis herramientas aparecen bajo el ícono de conectores.
Elimina por completo el bloque env para ejecutar sin clave — el servidor igual se inicia y las
herramientas de instantánea gratuita igual responden.
Claude Code
claude mcp add arb-dex --env RAPIDAPI_KEY=your-rapidapi-key-here -- npx -y arb-dex-mcp
Sin clave:
claude mcp add arb-dex -- npx -y arb-dex-mcp
Luego /mcp para confirmar que se conectó.
Cursor
~/.cursor/mcp.json (global) o .cursor/mcp.json (por proyecto):
{
"mcpServers": {
"arb-dex": {
"command": "npx",
"args": ["-y", "arb-dex-mcp"],
"env": {
"RAPIDAPI_KEY": "your-rapidapi-key-here"
}
}
}
}
Cursor → Settings → MCP muestra el servidor y sus herramientas una vez que el archivo se guarda.
Cualquier otro cliente MCP
Los mismos tres datos: comando npx, argumentos ["-y", "arb-dex-mcp"], transporte stdio,
env opcional RAPIDAPI_KEY.
Pruébalo
Prompts reales y la forma real que devuelven. Los payloads a continuación se midieron en vivo el 2026-08-15; están recortados por ancho, pero nada está inventado.
1. "¿A cuánto se está negociando WBNB/USDT en cada venue de BSC ahora mismo?"
get_prices lee cada pool que contiene el par — pares v2 y cada nivel de comisión de v3 por separado —
en un bloque indicado:
{
"pair": "WBNB/USDT",
"network": "bsc",
"chainId": 56,
"blockNumber": 116151268,
"pricesByVenue": [
{ "venue": "pancake", "surface": "v2", "feeBps": 25, "price": 611.7347, "tvlUsd": 56834814.36 },
{ "venue": "biswap", "surface": "v2", "feeBps": 10, "price": 610.8278, "tvlUsd": 415733.94 },
{ "venue": "apeswap", "surface": "v2", "feeBps": 20, "price": 611.1244, "tvlUsd": 3659.06 },
{ "venue": "pancakeV3:1", "surface": "v3", "feeBps": 1, "price": 610.5684, "tvlUsd": 18596810.32 },
{ "venue": "pancakeV3:5", "surface": "v3", "feeBps": 5, "price": 610.6531, "tvlUsd": 4941099.44 },
{ "venue": "pancakeV3:25", "surface": "v3", "feeBps": 25, "price": 610.6304, "tvlUsd": 52534.35 },
{ "venue": "pancakeV3:100", "surface": "v3", "feeBps": 100, "price": 609.1025, "tvlUsd": 12206.21 }
],
"bestBuy": { "venue": "pancakeV3:100", "price": 609.1025 },
"bestSell": { "venue": "pancake", "price": 611.7347 },
"midSpreadBps": 43.22,
"crossDex": {
"grossSpreadBps": 0,
"grossUsd": 0,
"optimalInput": { "amount": 0, "token": "WBNB", "usd": 0 },
"buyVenue": "-",
"sellVenue": "-"
},
"liquidity": { "venues": 7, "totalTvlUsd": 80856857.67 },
"source": "rpc"
}
Lee los dos números de spread uno contra el otro. El spread medio bruto es 43 bps — y el
spread bruto capturable es 0. La cotización de 609.10 vive en un pool de $12k; el tamaño que
realmente la ejecutaría mueve el precio más allá de la brecha antes de llegar. Una herramienta que reportara solo
los 43 bps le estaría dando a un agente un número que no puede operar. Esta reporta ambos, y
optimalInput es donde aterriza la honestidad.
2. "Muéstrame los spreads entre DEX en Base — ¿alguno es realmente capturable?"
get_spreads recorre toda una cadena y ordena por USD bruto al tamaño óptimo, no por
puntos básicos de titular:
{
"network": "base",
"chainId": 8453,
"scannedPairs": 11,
"opportunities": [],
"found": 0,
"filters": { "minSpreadBps": 10, "minVenueTvlUsd": 1000, "minGrossUsd": 0.01, "limit": 5 },
"ranking": "gross USD at the optimal trade size, NOT raw spread — a large spread with a tiny optimal size is not an opportunity",
"scope": "GROSS cross-venue spread from live pool state, BEFORE gas, MEV and any slippage beyond the optimal size. Not a profit estimate and not trade advice. Venues below the liquidity floor are excluded because a spread against a dust pool is an artefact, not an opportunity.",
"elapsedMs": 2847
}
found: 0 es una respuesta real y es la más común. Once pares escaneados, nada superó el
umbral. Los venues con menos de $1,000 de TVL se descartan por completo. Cuando sí vuelven filas, cada una lleva
capturable, warning y shallowestSideTvlUsd para que un número grande de puntos básicos no pueda engañar por
sí solo. Esta herramienta le dirá a tu agente que no hay nada allí — que es el punto mismo de
preguntarlo.
3. "¿Cuánto historial tiene realmente arb-dex y para qué cadenas?"
get_history_summary dimensiona el archivo antes de que lo consultes:
{
"rows": 133,
"rowsWithPairDetail": 103,
"rowsByEra": { "digest-totals-only": 30, "top-list-pairs": 5, "full-sweep": 98 },
"pairsTracked": 107,
"firstAt": "2026-08-10T17:35:09.355Z",
"lastAt": "2026-08-15T20:54:34.417Z",
"spanHours": 123.32,
"chainsSeen": ["arbitrum", "avalanche", "base", "bsc", "optimism", "polygon"],
"pairs": [
{ "chain": "polygon", "pair": "WBTC/USDC", "observations": 103, "qualifiedObservations": 39 },
{ "chain": "bsc", "pair": "BTCB/USDT", "observations": 99, "qualifiedObservations": 15 },
{ "chain": "arbitrum", "pair": "ARB/USDC", "observations": 98, "qualifiedObservations": 0 }
]
}
La cobertura es solo lo que se midió. Una brecha sigue siendo una brecha — rowsByEra dice cuánto detalle lleva cada
era de filas, y ARB/USDC teniendo 98 observaciones pero 0 calificadas es el archivo
diciéndote que ese par nunca ha superado el umbral de spread.
Herramientas
| Herramienta | Qué responde | Acceso |
|---|---|---|
get_chains | Qué cadenas están cubiertas, sus IDs de cadena, tokens y venues DEX | Cualquier clave · sin clave devuelve solo la lista de cadenas, y lo dice |
get_pairs | Qué es cotizable en una cadena: universo de tokens, venues, sintaxis de pares | Cualquier clave · sin clave devuelve el subconjunto medido, etiquetado como tal |
get_prices | El precio de un par en cada venue que tenga un pool para él, más reservas, TVL, nivel de comisión y el spread entre DEX | Cualquier clave |
get_spreads | Las dislocaciones entre venues de toda una cadena, ordenadas por USD bruto al tamaño óptimo | Cualquier clave para live: true · sin clave sirve la instantánea gratuita por hora |
get_history_summary | Qué cubre el archivo de mediciones: filas, pares rastreados, cadenas vistas, alcance, retención | Cualquier clave (incluido el nivel gratuito) |
get_history | La serie por venue de precio/liquidez de un par y el spread bruto entre venues en 24h / 7d / 30d | Plan PRO — ver Planes |
Las dos herramientas de historial leen el archivo de mediciones propio del servicio, así que responden la pregunta
que las herramientas en vivo no pueden: si una dislocación persistió o fue una sola muestra. El muestreo es
aproximadamente por hora, y las brechas nunca se interpolan ni se rellenan. Llama a get_history_summary primero
para ver qué alcance existe antes de pedir una ventana.
Lo que no hará
- Los spreads son brutos — antes de gas, MEV y deslizamiento más allá del tamaño óptimo. No es una estimación de ganancia ni consejo de trading.
- Nunca fabrica una fila. Sin clave,
get_chains,get_pairsyget_spreadsresponden desde la superficie pública gratuita y cada una lleva un campolimitationque nombra exactamente qué agregaría una clave.get_prices,get_history_summaryyget_historydevuelven un error explícito de clave requerida con el enlace de registro en lugar de una respuesta más pobre disfrazada de completa. - No ejecuta operaciones, no retiene fondos ni toca una billetera. Son datos de mercado de solo lectura.
- Este paquete no incluye credenciales de ningún tipo. La clave es tuya y permanece en tu configuración.
Obtén una clave
Las herramientas de pago llaman a la API a través de RapidAPI usando tu propia clave.
- Suscríbete — hay un nivel gratuito: https://rapidapi.com/donnydev/api/multi-chain-dex-prices-liquidity
- Copia tu
X-RapidAPI-Keydesde el panel de RapidAPI. - Ponla en
RAPIDAPI_KEYen la configuración anterior — nunca en código y nunca en un commit.
Planes
Cinco de las seis herramientas funcionan en el nivel gratuito. Solo la serie de historial por par está restringida:
| Plan | Agrega |
|---|---|
| BASIC ($0) | Cotizaciones en vivo en cada cadena, más get_history_summary para que puedas dimensionar el archivo antes de comprarlo |
| PRO ($15/mes) | get_history — la serie medida por venue para un par, ventana de 24h, 1000 llamadas/mes |
| ULTRA ($49/mes) | Sin límite de ventana ni medidor de historial, más profundidad/deslizamiento y alertas de spread |
| MEGA ($149/mes) | Paginación masiva sobre el archivo completo para tu propio almacén |
Llamar a get_history por debajo de PRO devuelve un error explícito tier_required que nombra el plan y
la URL de actualización — no falla silenciosamente ni devuelve una serie vacía.
Configuración
| Variable de entorno | Predeterminado | Propósito |
|---|---|---|
RAPIDAPI_KEY | — | Tu clave de RapidAPI. Requerida para las herramientas de pago. |
ARB_DEX_TIMEOUT_MS | 45000 | Tiempo de espera de solicitud. Un barrido completo de cadena en vivo es una lectura on-chain real y puede tomar ~30s. |
ARB_DEX_FREE_BASE_URL | origen de producción | Anula el host de la superficie gratuita. |
ARB_DEX_RAPIDAPI_HOST | multi-chain-dex-prices-liquidity.p.rapidapi.com | Anula el host de RapidAPI. |
Configúralas en el bloque env de tu cliente MCP (ver las configuraciones anteriores). .env.example se incluye en el
paquete y documenta las mismas variables para ejecuciones locales desde un clon.
Prueba
La suite de pruebas no está en el tarball de npm — ejecútala desde un clon:
git clone https://github.com/donnywin85/arb-dex-mcp.git
cd arb-dex-mcp && npm install
npm run selftest # keyless: exercises the free fallbacks
RAPIDAPI_KEY=... npm run selftest # keyed: exercises the paid routes
La prueba inicia el servidor sobre stdio y llama a cada herramienta contra la API de producción real — nada está simulado. Afirma sobre valores en vivo (número de bloque, precios por venue, conteos de pares escaneados), así que una ejecución que pasa es evidencia de que la ruta de datos funciona de extremo a extremo.
Enlaces
- npm: https://www.npmjs.com/package/arb-dex-mcp
- Docs: https://donnywin85.github.io/arb-dex-mcp/
- Registro oficial de MCP:
io.github.donnywin85/arb-dex-mcp - Índice MCP de TensorBlock: https://www.tensorblock.co/mcp/servers/github-donnywin85-arb-dex-mcp-7dd9a70c
- Fuente: https://github.com/donnywin85/arb-dex-mcp
- La API detrás de esto: https://rapidapi.com/donnydev/api/multi-chain-dex-prices-liquidity
Licencia
MIT — ver LICENSE.