Currency Exchange & Crypto Rates

Conversão em tempo real de forex e criptomoedas com failover multi-fonte em 5 provedores. Mais de 60 moedas fiduciárias, mais de 30 criptomoedas, sem necessidade de chaves de API.

Documentação

Servidor MCP de Câmbio de Moedas e Criptomoedas

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

Um servidor MCP de câmbio de moedas para taxas forex em tempo real e preços de criptomoedas via Model Context Protocol. Converta entre mais de 60 moedas fiduciárias e mais de 30 criptomoedas — com failover de múltiplas fontes, resolução inteligente de moedas, conversão em lote e consultas de taxas históricas. Não são necessárias chaves de API para as fontes de dados upstream.

Ferramentas

convert_currency

Converta um valor entre qualquer par de moedas fiduciárias ou criptomoedas suportado.

Entrada:

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

Saída:

{
  "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
}

Linguagem natural também funciona:

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

batch_convert

Converta um valor de uma moeda para múltiplos destinos em uma única chamada. Mais econômico do que múltiplas conversões individuais.

Entrada:

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

Saída:

{
  "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"
}

Suporta até 50 destinos por chamada. Moedas duplicadas e iguais à origem são filtradas automaticamente.

get_exchange_rates

Obtenha taxas de câmbio atuais para uma moeda base em relação a múltiplos destinos.

Entrada:

{ "base": "USD" }

Retorna taxas para as 20 principais moedas (USD, EUR, GBP, JPY, INR, AED, CAD, AUD, CHF, CNY, SGD, HKD, KRW, BRL, MXN, ZAR, TRY, THB, SAR, BTC) por padrão, ou especifique os destinos:

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

Saída:

{
  "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

Obtenha taxas de câmbio históricas para uma única data ou um intervalo de datas (máximo 365 dias).

Data única:

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

Saída:

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

Intervalo de datas:

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

Saída:

{
  "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
}

Moedas Suportadas

Fiduciárias (mais de 60 moedas)

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

Criptomoedas (30 moedas)

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

Resolução Inteligente de Moedas

Aceita códigos ISO 4217, símbolos de criptomoedas e linguagem natural:

EntradaResolve Para
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

Fontes de Dados

DadosPrimáriaFallback
Taxas fiduciárias (atuais)ExchangeRate-API (160 moedas, diárias)fawazahmed0/exchange-api (CDN, mais de 150 moedas)
Taxas de criptomoedas (atuais)Coinbase Public API (mais de 200 moedas, tempo real)CoinGecko (mais de 10 mil moedas, sem chave)
Taxas históricasFrankfurter.app (dados do BCE, 33 moedas, desde 1999)Endpoints de data do fawazahmed0

Todas as APIs upstream são sem autenticação (nenhuma chave de API necessária).

Recursos

  • Fallback de múltiplas fontes — failover automático entre provedores
  • Conversões fiduciária-para-fiduciária, cripto-para-fiduciária, fiduciária-para-cripto e cripto-para-cripto
  • Cripto-para-cripto via taxa cruzada em USD (ex.: BTC para ETH)
  • Conversão em lote — converta para até 50 moedas em uma única chamada
  • Resolução inteligente de moedas — linguagem natural, códigos ISO e símbolos de criptomoedas
  • Taxas históricas com séries temporais e estatísticas de variação (máxima, mínima, média, % de variação)
  • Cache LRU com TTLs em camadas — 30 min para fiduciárias, 2 min para cripto, 24 horas para históricas
  • Limitação de taxa por domínio (1,5s entre requisições para a mesma API upstream)
  • Validação de esquema Zod em todas as entradas das ferramentas
  • Validação de datas — rejeita datas futuras, formatos inválidos, intervalos acima de 365 dias

Preços

EventoDescriçãoPreço (USD)
currency-convertConversão de par único$0,003
batch-convertConverter para até 50 moedas de uma vez$0,008
exchange-ratesConsulta de taxas de câmbio$0,003
historical-rateConsulta de taxa histórica$0,008

Limitações

  • Taxas históricas de criptomoedas: Não suportadas — Frankfurter e fawazahmed0 cobrem apenas moedas fiduciárias
  • Cobertura do Frankfurter: Apenas ~33 moedas do BCE — moedas do Golfo (AED, SAR, KWD, QAR) usam fallback do fawazahmed0 para dados históricos
  • Atualização das taxas fiduciárias: ExchangeRate-API atualiza diariamente, não em tempo real
  • Atualização das taxas de criptomoedas: Armazenadas em cache por 2 minutos para respeitar os limites das APIs upstream
  • Séries temporais: Disponível apenas para moedas suportadas pelo Frankfurter (BCE)
  • Limites das APIs upstream: CoinGecko sem chave tem ~10 req/min; Coinbase ~10 req/seg
  • Limite de resposta de 1MB por requisição
  • Limitado a 1 requisição a cada 1,5 segundos por domínio upstream

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}'

Executando Localmente

npm install
npm run start:dev

O servidor inicia em http://localhost:3000/mcp.

Conecte ao Seu Cliente de IA

Adicione isto à configuração do seu 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"
      }
    }
  }
}

Substitua YOUR_APIFY_API_TOKEN pelo seu token de API do Apify.

Implantação

apify login
apify push

Configure o modo standby na plataforma Apify após o envio.

FAQ

Preciso de chaves de API para os provedores de taxas de câmbio upstream? Não. Todas as 5 fontes de dados (ExchangeRate-API, fawazahmed0, Frankfurter, Coinbase, CoinGecko) são públicas e gratuitas. Você só precisa de um token de API do Apify para o seu Actor implantado.

Como funciona o failover de múltiplas fontes? Cada requisição tenta o provedor primário primeiro. Se falhar ou expirar, o servidor tenta automaticamente com o provedor fallback. Fiduciárias: ExchangeRate-API → fawazahmed0. Cripto: Coinbase → CoinGecko. Históricas: Frankfurter → fawazahmed0.

Posso converter entre duas criptomoedas (ex.: BTC para ETH)? Sim. Conversões cripto-para-cripto usam uma taxa cruzada em USD automaticamente.

Qual é a atualização das taxas? Taxas fiduciárias atualizam diariamente. Taxas de criptomoedas são armazenadas em cache por 2 minutos. Taxas históricas são armazenadas em cache por 24 horas.

Taxas históricas de criptomoedas são suportadas? Não. As fontes de dados históricos (Frankfurter/BCE e fawazahmed0) cobrem apenas moedas fiduciárias.

Como executo localmente? npm install && npm run start:dev — o endpoint MCP estará disponível em http://localhost:3000/mcp.