KAERIS i18n (kaeris-mcp)
Localización con IA desde tu editor: traduce los archivos de cadenas de una aplicación a 46 idiomas con una salida reproducible y segura para marcadores de posición.
Documentación
KAERIS i18n — MCP Server
Localización nativa con IA sobre el Model Context Protocol. Dale a Claude Desktop, Cursor, Claude Code (o cualquier cliente MCP) la capacidad de traducir las cadenas de tu aplicación a 46 idiomas — seguro para marcadores de posición, que respeta el formato, incremental, con QA de traducción integrado.
Herramientas
| Herramienta | Qué hace | ¿Llama a la API? |
|---|---|---|
kaeris_scan_repo | Descubre la configuración i18n de un repositorio: archivos de locale encontrados, idioma base, idiomas objetivo, suposición de framework (i18next/next-intl/vue-i18n/Flutter/Android/iOS/gettext/generic) | No |
kaeris_status | Integridad/salud por locale objetivo — claves faltantes, claves extra, desajustes de marcadores de posición, más los detectores de calidad que controlan un merge en CI: desviación numérica, etiquetas inline perdidas, entidades/escapes rotos, brechas de plurales ICU/CLDR (mismo veredicto que kaeris check --json) | No |
kaeris_list_missing_keys | Las claves exactas faltantes/rotas (con texto fuente) para un locale objetivo, para que un agente sepa exactamente qué corregir | No |
kaeris_list_languages | Lista todos los idiomas objetivo admitidos | No |
kaeris_translate | Traduce cadenas inline → resultados por idioma, con QA (banderas de pérdida de marcadores de posición y desbordamiento de UI; verify=True retrotraduce para verificar el significado) | Sí |
kaeris_translate_file | Traduce un archivo en disco (JSON/YAML/.strings/.po/ARB/XML/CSV/XLIFF/.properties/.resx/.ftl), incremental opcional — reproducible vía kaeris.lock | Sí |
kaeris_add_language | Inicializa un locale objetivo completamente nuevo traduciendo todo el archivo fuente a él | Sí |
Las primeras cuatro herramientas son solo locales (sin llamada de red, sin costo) — un agente puede usarlas libremente para auditar y comprender el i18n de un repositorio antes de decidir qué (si acaso) traducir.
Reproducible por diseño
kaeris_translate_file con incremental=True mantiene un kaeris.lock junto a tu archivo fuente — el mismo bloqueo que escribe la CLI, para que un agente y un humano que comparten un repositorio permanezcan sincronizados. Registra un hash de cada cadena fuente más la configuración que la produjo: tono, glosario, contexto de la aplicación y el modelo. Eso significa:
- Editar una cadena — solo esa cadena se retraduce; todo lo demás permanece byte a byte.
- Cambiar tono, glosario o contexto — todo el locale se retraduce, nunca una mezcla de lo antiguo y lo nuevo.
- Cambiar plan — cada nivel ejecuta el mismo modelo (Gemini 2.5 Flash-Lite), por lo que actualizar no obliga a una retraducción. El bloqueo registra el modelo de todos modos: el día que lo cambiemos, el locale se reconstruye por completo en lugar de terminar silenciosamente siendo el trabajo de dos modelos.
Haz commit de kaeris.lock junto a tu archivo fuente para que el agente, tus compañeros y CI estén de acuerdo sobre lo que ya está hecho.
Instalación
pip install kaeris-mcp
O ejecútalo con Docker
docker build -t kaeris-mcp .
docker run -i --rm -v "$PWD:/work" -w /work kaeris-mcp
El servidor habla JSON-RPC sobre stdin/stdout, por lo que no hay puerto que exponer — -i es lo que mantiene la conversación abierta. Monta tu proyecto en /work y las herramientas conscientes del repositorio (scan_repo, status, list_missing_keys) lo leen directamente; pasa -e KAERIS_API_KEY=… para los niveles de pago.
Configura tu cliente
Claude Desktop — agrega a claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\):
{
"mcpServers": {
"kaeris-i18n": {
"command": "kaeris-mcp",
"env": {
"KAERIS_API_KEY": "kaerisp_optional_for_pro_team"
}
}
}
}
Cursor — Configuración → MCP → Agregar, o .cursor/mcp.json:
{ "mcpServers": { "kaeris-i18n": { "command": "kaeris-mcp" } } }
Claude Code — un comando:
claude mcp add kaeris-i18n kaeris-mcp
Reinicia el cliente; las herramientas de KAERIS aparecen automáticamente.
Autenticación y niveles (todos opcionales)
| Variable de entorno | Propósito |
|---|---|
KAERIS_API_KEY | Clave Pro/Scale — límites más altos (si no, se usa el nivel gratuito de 10k caracteres) |
KAERIS_OPENROUTER_KEY | Clave de OpenRouter para Lifetime/BYOK — sin límite mensual de volumen |
KAERIS_API_URL | Sobrescribe la URL base de la API |
No se requiere clave para probarlo — el nivel anónimo gratuito funciona de inmediato.
Ejemplos de prompts
- "Traduce las cadenas en
locales/en.jsonal alemán, ucraniano y japonés." - "Agrega traducciones al francés y español para estos botones: Guardar, Cancelar, Eliminar."
- "Solo traduce las nuevas claves que agregué a en.json — no rehagas todo el archivo."
- "Revisa el i18n de este repositorio y dime qué falta o está roto." (escanea, luego informa el estado — sin llamada a la API)
- "Todavía no tenemos ucraniano — agrégalo." (inicializa un nuevo locale mediante traducción)
Licencia
MIT