UniRate MCP

Conversión de divisas y tipos de cambio para asistentes de IA. Más de 170 monedas, datos históricos desde 1999, nivel gratuito, con licencia MIT.

Documentación

Servidor UniRate MCP

npm License

Un servidor de Protocolo de Contexto de Modelo para la API de UniRate: brinda a Claude, Cursor, Continue y cualquier asistente de IA compatible con MCP acceso de primera clase a conversión de divisas y tipos de cambio.

  • 🔄 Conversión en tiempo real entre más de 170 divisas (fiat + principales criptomonedas)
  • 📈 Tipos históricos desde 1999 (plan Pro)
  • 🆓 Plan gratuito, sin necesidad de tarjeta de crédito: obtén una clave en unirateapi.com
  • 🧩 Cuatro herramientas, entradas totalmente tipadas (esquemas Zod), salidas estructuradas
  • 🌐 Transportes Stdio + HTTP/SSE transmisible: ejecútalo localmente o alójalo como endpoint MCP remoto
  • ⚡ Node 18+ puro, dependencia única en @modelcontextprotocol/sdk

Por qué existe esto

La mayoría de los flujos de trabajo de "divisas para IA" actuales implican envoltorios fetch improvisados en herramientas personalizadas, o servidores HTTP MCP genéricos que entregan JSON crudo al modelo. Este servidor ofrece a los modelos una superficie de herramientas ajustada, tipada y consciente de divisas: preguntan "¿cuánto eran 100 USD en EUR el 15-03-2020?" y reciben una respuesta formateada más un payload estructurado que pueden encadenar en otras llamadas de herramientas.

Inicio rápido

1. Instalación

npm install -g @unirate/mcp

O ejecútalo bajo demanda con npx @unirate/mcp (sin instalación).

2. Obtén una clave de API de UniRate

El plan gratuito cubre convert, latest_rate y list_currencies. Regístrate en unirateapi.com: no se requiere tarjeta de crédito.

3. Conéctalo a tu cliente MCP

Claude Desktop

Edita ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) o %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "unirate": {
      "command": "npx",
      "args": ["-y", "@unirate/mcp"],
      "env": {
        "UNIRATE_API_KEY": "your-api-key-here"
      }
    }
  }
}

Reinicia Claude Desktop. Las cuatro herramientas de UniRate aparecerán en el selector de herramientas.

Cursor / Continue / Cline

Añádelo a tu configuración MCP (.cursor/mcp.json, ~/.continue/config.json, etc.):

{
  "mcpServers": {
    "unirate": {
      "command": "npx",
      "args": ["-y", "@unirate/mcp"],
      "env": { "UNIRATE_API_KEY": "your-api-key-here" }
    }
  }
}

Desde el código fuente

git clone https://github.com/UniRate-API/unirate-mcp.git
cd unirate-mcp
npm install && npm run build
UNIRATE_API_KEY=your-key node dist/index.js

4. Ejecútalo como endpoint remoto (HTTP transmisible / SSE)

Por defecto, el servidor usa stdio, que es lo que Claude Desktop y la mayoría de los clientes MCP esperan. Para alojarlo como endpoint remoto — para uso compartido, despliegues multiusuario o clientes basados en navegador — inícialo en modo HTTP:

UNIRATE_API_KEY=your-key unirate-mcp --http 3001
# or via env:
UNIRATE_API_KEY=your-key UNIRATE_MCP_HTTP_PORT=3001 unirate-mcp

Eso expone:

  • POST /mcp — endpoint HTTP transmisible (compatible con SSE). Sin estado: se construye un servidor nuevo por solicitud, por lo que el mismo proceso puede atender a muchos clientes concurrentes.
  • GET /healthz — sonda de actividad JSON ({ "status": "ok", "server": "unirate-mcp", "version": "..." }).

Apunta cualquier cliente MCP compatible con HTTP transmisible (Claude Desktop con soporte de servidor remoto, Cursor MCP remoto, etc.) a http://your-host:3001/mcp. Colócalo detrás de un proxy inverso + TLS para producción.

Docker

Se publican imágenes multiarquitectura (linux/amd64, linux/arm64) tanto en el Registro de Contenedores de GitHub (ghcr.io/unirate-api/unirate-mcp) como en Docker Hub (unirate/unirate-mcp): usa el que prefieras:

# stdio mode (for local AI clients — pipe stdin/stdout)
docker run --rm -i -e UNIRATE_API_KEY="your-key" \
  ghcr.io/unirate-api/unirate-mcp:latest
# ...or from Docker Hub:
#   docker run --rm -i -e UNIRATE_API_KEY="your-key" unirate/unirate-mcp:latest

# HTTP/SSE mode (hosted endpoint on :3001)
docker run --rm -p 3001:3001 -e UNIRATE_API_KEY="your-key" \
  ghcr.io/unirate-api/unirate-mcp:latest --http 3001

Apunta un cliente MCP a http://your-host:3001/mcp para el transporte HTTP transmisible.

Ejecución programática / runtimes perimetrales (Cloudflare Workers, Deno, Bun)

El paquete exporta buildServer(client) para que puedas conectarlo al transporte que prefiera tu runtime. Para Workers / Deno / Bun, usa el transporte webStandardStreamableHttp del SDK con una instancia exportada de buildServer.

import { UnirateClient } from "@unirate/mcp/dist/client.js";
import { buildServer } from "@unirate/mcp";
// → connect to your runtime's preferred transport

Herramientas

convert

Convierte un importe de una divisa a otra al tipo más reciente.

ParámetroTipoObligatorioNotas
fromstringsíCódigo ISO 4217 (p. ej. USD)
tostringsíCódigo ISO 4217 (p. ej. EUR)
amountnumbersíImporte positivo en from

Ejemplo de llamada:

{ "name": "convert", "arguments": { "from": "USD", "to": "EUR", "amount": 100 } }

Respuesta: texto legible por humanos más { from, to, amount, result } estructurado.

latest_rate

Obtén el tipo o los tipos de cambio actuales.

ParámetroTipoObligatorioNotas
fromstringsíDivisa base
tostringnoDestino. Omitir para obtener tipos de todas las divisas

historical_rate (plan Pro)

Obtén el tipo de cambio vigente en una fecha concreta. Cobertura desde 1999-01-04 para los principales pares fiat.

ParámetroTipoObligatorioNotas
datestringsíYYYY-MM-DD (p. ej. 2020-03-15)
fromstringsíDivisa de origen
tostringsíDivisa de destino
amountnumbernoValor por defecto: 1

Las claves del plan gratuito reciben un error claro que apunta a unirateapi.com para la actualización.

list_currencies

Devuelve la matriz de códigos de divisa admitidos (más de 170) sin parámetros. Útil para autocompletar o validar códigos proporcionados por el usuario.

Errores

Todos los fallos de la API de UniRate se asignan a errores de herramienta amigables:

HTTPClase de errorLo que ve el modelo
400InvalidRequestError"Parámetros de solicitud no válidos"
401AuthenticationError"Clave de API ausente o no válida"
403ProPlanRequiredError"…requiere Pro… actualiza en https://unirateapi.com"
404InvalidCurrencyError"Divisa no encontrada o sin datos disponibles"
429RateLimitError"Límite de velocidad superado"
503APIError"Servicio no disponible"

Los errores de red o de tiempo de espera se envuelven en UnirateError. Las llamadas a herramientas siempre devuelven un objeto de respuesta con isError: true en lugar de lanzar errores a nivel de protocolo, para que el modelo pueda recuperarse con elegancia.

Desarrollo

npm install
npm run build       # compile TypeScript to dist/
npm test            # 24 mock tests
UNIRATE_LIVE=1 UNIRATE_API_KEY=... npm run test:live  # +4 live free-tier tests

Ecosistema UniRate

UniRate incluye integraciones oficiales para más de 40 ecosistemas, todas mantenidas bajo la organización UniRate-API.

Clientes principales (9 lenguajes) Python · Node.js / TypeScript · Go · Rust · Java · Ruby · PHP · .NET · Swift

JavaScript / TypeScript React · Next.js · Remix · SvelteKit · Vue · Angular · Nuxt · NestJS · tRPC

Generadores de sitios estáticos Astro · Eleventy · Hugo · Jekyll

CMS y comercio electrónico Wagtail · WordPress · WooCommerce · Drupal · Strapi · Medusa · Symfony · Laravel · Directus

Datos, IA y backend LangChain (Python) · LangChain.js · FastAPI · Flask · Django REST Framework · Apache Airflow · dbt

Plataforma y herramientas Servidor MCP · CLI · Cloudflare Workers · Home Assistant · n8n · Google Sheets · VS Code · Obsidian

Puentes de bibliotecas monetarias gema money (Ruby) · NodaMoney (.NET)

Obtén una clave de API gratuita en unirateapi.com.

Licencia

MIT: consulta LICENCIA.