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
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ámetro | Tipo | Obligatorio | Notas |
|---|---|---|---|
from | string | sí | Código ISO 4217 (p. ej. USD) |
to | string | sí | Código ISO 4217 (p. ej. EUR) |
amount | number | sí | 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ámetro | Tipo | Obligatorio | Notas |
|---|---|---|---|
from | string | sí | Divisa base |
to | string | no | Destino. 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ámetro | Tipo | Obligatorio | Notas |
|---|---|---|---|
date | string | sí | YYYY-MM-DD (p. ej. 2020-03-15) |
from | string | sí | Divisa de origen |
to | string | sí | Divisa de destino |
amount | number | no | Valor 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:
| HTTP | Clase de error | Lo que ve el modelo |
|---|---|---|
| 400 | InvalidRequestError | "Parámetros de solicitud no válidos" |
| 401 | AuthenticationError | "Clave de API ausente o no válida" |
| 403 | ProPlanRequiredError | "…requiere Pro… actualiza en https://unirateapi.com" |
| 404 | InvalidCurrencyError | "Divisa no encontrada o sin datos disponibles" |
| 429 | RateLimitError | "Límite de velocidad superado" |
| 503 | APIError | "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.