Currency Exchange & Crypto Rates

Conversión de forex y criptomonedas en tiempo real con conmutación por error de múltiples fuentes en 5 proveedores. Más de 60 monedas fiduciarias, más de 30 criptomonedas, sin necesidad de claves API.

Documentación

Servidor MCP de Currency Exchange & Crypto Rates

GitHub stars License: ISC Node.js >= 20 CI

Un servidor MCP de cambio de divisas para tipos de cambio forex en tiempo real y precios de criptomonedas mediante el Protocolo de Contexto de Modelo. Convierte entre más de 60 monedas fiduciarias y más de 30 criptomonedas, con conmutación por error de múltiples fuentes, resolución inteligente de divisas, conversión por lotes y consultas de tipos de cambio históricos. No se necesitan claves API para las fuentes de datos ascendentes.

Herramientas

convert_currency

Convierte un importe entre cualquier par de monedas fiduciarias o criptomonedas compatible.

Entrada:

{ "amount": 100, "from": "USD", "to": "INR" }

Salida:

{
  "amount": 100,
  "from": "USD",
  "to": "INR",
  "result": 8312,
  "rate": 83.12,
  "inverseRate": 0.012031,
  "timestamp": "2026-02-14T12:00:00.000Z",
  "source": "exchangerate-api",
  "cached": false
}

El lenguaje natural también funciona:

{ "amount": 1, "from": "bitcoin", "to": "rupees" }

batch_convert

Convierte un importe de una moneda a múltiples destinos en una sola llamada. Más rentable que múltiples conversiones individuales.

Entrada:

{ "amount": 1000, "from": "USD", "to": ["EUR", "GBP", "INR", "JPY", "BTC"] }

Salida:

{
  "amount": 1000,
  "from": "USD",
  "conversions": [
    { "to": "EUR", "result": 920, "rate": 0.92, "inverseRate": 1.086957, "source": "exchangerate-api", "cached": false },
    { "to": "GBP", "result": 790, "rate": 0.79, "inverseRate": 1.265823, "source": "exchangerate-api", "cached": false },
    { "to": "INR", "result": 83120, "rate": 83.12, "inverseRate": 0.012031, "source": "exchangerate-api", "cached": false },
    { "to": "JPY", "result": 149500, "rate": 149.5, "inverseRate": 0.006689, "source": "exchangerate-api", "cached": false },
    { "to": "BTC", "result": 0.02, "rate": 0.00002, "inverseRate": 50000, "source": "coinbase", "cached": false }
  ],
  "timestamp": "2026-02-14T12:00:00.000Z"
}

Admite hasta 50 destinos por llamada. Las divisas duplicadas y las iguales a la fuente se filtran automáticamente.

get_exchange_rates

Obtén los tipos de cambio actuales de una moneda base frente a múltiples destinos.

Entrada:

{ "base": "USD" }

Devuelve los tipos de las 20 principales divisas (USD, EUR, GBP, JPY, INR, AED, CAD, AUD, CHF, CNY, SGD, HKD, KRW, BRL, MXN, ZAR, TRY, THB, SAR, BTC) por defecto, o especifica destinos:

{ "base": "BTC", "targets": ["USD", "EUR", "INR", "GBP"] }

Salida:

{
  "base": "BTC",
  "rates": {
    "USD": 51234.56,
    "EUR": 47345.12,
    "INR": 4258567.12,
    "GBP": 40567.89
  },
  "timestamp": "2026-02-14T12:00:00.000Z",
  "source": "coinbase",
  "cached": false
}

get_historical_rate

Obtén tipos de cambio históricos para una fecha única o un rango de fechas (máximo 365 días).

Fecha única:

{ "base": "USD", "target": "INR", "date": "2025-01-15" }

Salida:

{
  "base": "USD",
  "target": "INR",
  "date": "2025-01-15",
  "rate": 86.45,
  "source": "frankfurter",
  "cached": false
}

Rango de fechas:

{ "base": "USD", "target": "EUR", "startDate": "2025-01-01", "endDate": "2025-01-31" }

Salida:

{
  "base": "USD",
  "target": "EUR",
  "period": { "startDate": "2025-01-01", "endDate": "2025-01-31" },
  "rates": [
    { "date": "2025-01-02", "rate": 0.9234 },
    { "date": "2025-01-03", "rate": 0.9241 }
  ],
  "change": {
    "high": 0.9312,
    "low": 0.9189,
    "average": 0.9248,
    "changePct": 0.94
  },
  "source": "frankfurter",
  "cached": false
}

Divisas Compatibles

Fiduciarias (más de 60 divisas)

PrincipalesGolfo/Oriente MedioAsia-PacíficoAméricasEuropaÁfrica
USDAEDINRBRLEURZAR
EURSARJPYMXNGBPNGN
GBPKWDCNYARSCHFKES
JPYQARSGDCLPSEKEGP
AUDBHDHKDCOPNOKGHS
CADOMRKRWPENDKKMAD
CHFJODTWDUYUPLNTND
CNYILSTHBCZK
INREGPMYRHUF
IQDPHPRON
IRRIDRBGN
LBPVNDISK
BDTRUB
PKRUAH
LKRHRK

Criptomonedas (30 monedas)

SímboloNombreSímboloNombre
BTCBitcoinXRPRipple
ETHEthereumLTCLitecoin
SOLSolanaBCHBitcoin Cash
DOGEDogecoinATOMCosmos
ADACardanoNEARNEAR Protocol
DOTPolkadotAPTAptos
AVAXAvalancheARBArbitrum
MATICPolygonOPOptimism
LINKChainlinkSHIBShiba Inu
UNIUniswapUSDTTether
BNBBNBUSDCUSD Coin
XLMStellarALGOAlgorand
FILFilecoinAAVEAave
CROCronosPEPEPepe
SUISuiTRXTron

Resolución Inteligente de Divisas

Acepta códigos ISO 4217, símbolos de criptomonedas y lenguaje natural:

EntradaSe Resuelve A
USD, dollars, bucksUSD
EUR, euro, eurosEUR
GBP, pounds, sterlingGBP
INR, rupees, rupeeINR
JPY, yenJPY
CNY, yuan, renminbi, rmbCNY
AED, dirham, dirhamsAED
SAR, riyal, riyalsSAR
BTC, bitcoinBTC
ETH, ethereum, etherETH
SOL, solanaSOL
DOGE, dogecoinDOGE

Fuentes de Datos

DatosPrincipalRespaldo
Tipos fiduciarios (actuales)ExchangeRate-API (160 divisas, diario)fawazahmed0/exchange-api (CDN, más de 150 divisas)
Tipos de criptomonedas (actuales)Coinbase Public API (más de 200 monedas, tiempo real)CoinGecko (más de 10K monedas, sin clave)
Tipos históricosFrankfurter.app (datos BCE, 33 divisas, desde 1999)Endpoints de fecha de fawazahmed0

Todas las API ascendentes son de autenticación cero (no se requieren claves API).

Características

  • Respaldo de múltiples fuentes: conmutación por error automática entre proveedores
  • Conversiones fiduciaria-a-fiduciaria, cripto-a-fiduciaria, fiduciaria-a-cripto y cripto-a-cripto
  • Cripto-a-cripto mediante tipo cruzado USD (p. ej., BTC a ETH)
  • Conversión por lotes: convierte a hasta 50 divisas en una sola llamada
  • Resolución inteligente de divisas: lenguaje natural, códigos ISO y símbolos de criptomonedas
  • Tipos históricos con series temporales y estadísticas de cambio (máximo, mínimo, promedio, % de cambio)
  • Caché LRU con TTL escalonados: 30 min fiduciarias, 2 min cripto, 24 horas históricas
  • Limitación de velocidad por dominio (1,5 s entre solicitudes a la misma API ascendente)
  • Validación de esquema Zod en todas las entradas de herramientas
  • Validación de fechas: rechaza fechas futuras, formatos no válidos, rangos superiores a 365 días

Precios

EventoDescripciónPrecio (USD)
currency-convertConversión de par único$0,003
batch-convertConvertir a hasta 50 divisas a la vez$0,008
exchange-ratesConsulta de tipos de cambio$0,003
historical-rateConsulta de tipo histórico$0,008

Limitaciones

  • Tipos históricos de criptomonedas: No compatibles: Frankfurter y fawazahmed0 solo cubren fiduciarias
  • Cobertura de Frankfurter: Solo ~33 divisas del BCE: las divisas del Golfo (AED, SAR, KWD, QAR) usan el respaldo de fawazahmed0 para históricos
  • Actualidad de tipos fiduciarios: ExchangeRate-API se actualiza a diario, no en tiempo real
  • Actualidad de tipos cripto: Se almacenan en caché durante 2 minutos para respetar los límites de la API ascendente
  • Series temporales: Solo disponibles para divisas compatibles con Frankfurter (BCE)
  • Límites de velocidad ascendentes: CoinGecko sin clave tiene ~10 solicitudes/min; Coinbase ~10 solicitudes/seg
  • Límite de tamaño de respuesta de 1 MB por solicitud
  • Limitado a 1 solicitud por cada 1,5 segundos por dominio ascendente

Uso

Endpoint MCP: POST /mcp

# Convert 100 USD to INR
curl -X POST https://your-actor.apify.actor/mcp \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_APIFY_API_TOKEN" \
  -d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"convert_currency","arguments":{"amount":100,"from":"USD","to":"INR"}},"id":1}'

# Get BTC exchange rates
curl -X POST https://your-actor.apify.actor/mcp \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_APIFY_API_TOKEN" \
  -d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"get_exchange_rates","arguments":{"base":"BTC","targets":["USD","EUR","INR"]}},"id":2}'

# Historical rate for a specific date
curl -X POST https://your-actor.apify.actor/mcp \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_APIFY_API_TOKEN" \
  -d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"get_historical_rate","arguments":{"base":"USD","target":"INR","date":"2025-01-15"}},"id":3}'

Ejecución Local

npm install
npm run start:dev

El servidor se inicia en http://localhost:3000/mcp.

Conéctate a Tu Cliente de IA

Añade esto a la configuración de tu cliente MCP (Claude Desktop, Cline, Cursor, etc.):

{
  "mcpServers": {
    "currency-exchange": {
      "url": "https://vector384--currency-exchange-mcp.apify.actor/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_APIFY_API_TOKEN"
      }
    }
  }
}

Reemplaza YOUR_APIFY_API_TOKEN con tu token de API de Apify.

Implementación

apify login
apify push

Configura el modo de espera en la plataforma Apify después de enviar.

Preguntas Frecuentes

¿Necesito claves API para los proveedores de tipos de cambio ascendentes? No. Las 5 fuentes de datos (ExchangeRate-API, fawazahmed0, Frankfurter, Coinbase, CoinGecko) son públicas y gratuitas. Solo necesitas un token de API de Apify para tu Actor implementado.

¿Cómo funciona la conmutación por error de múltiples fuentes? Cada solicitud intenta primero con el proveedor principal. Si falla o se agota el tiempo de espera, el servidor reintenta automáticamente con el proveedor de respaldo. Fiduciarias: ExchangeRate-API → fawazahmed0. Cripto: Coinbase → CoinGecko. Históricos: Frankfurter → fawazahmed0.

¿Puedo convertir entre dos criptomonedas (p. ej., BTC a ETH)? Sí. Las conversiones cripto-a-cripto usan un tipo cruzado USD automáticamente.

¿Cuál es la actualidad de los tipos? Los tipos fiduciarios se actualizan a diario. Los tipos cripto se almacenan en caché durante 2 minutos. Los tipos históricos se almacenan en caché durante 24 horas.

¿Se admiten tipos históricos de criptomonedas? No. Las fuentes de datos históricos (Frankfurter/BCE y fawazahmed0) solo cubren divisas fiduciarias.

¿Cómo lo ejecuto localmente? npm install && npm run start:dev: el endpoint MCP estará disponible en http://localhost:3000/mcp.