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

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

HerramientaQué hace¿Llama a la API?
kaeris_scan_repoDescubre 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_statusIntegridad/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_keysLas claves exactas faltantes/rotas (con texto fuente) para un locale objetivo, para que un agente sepa exactamente qué corregirNo
kaeris_list_languagesLista todos los idiomas objetivo admitidosNo
kaeris_translateTraduce 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)
kaeris_translate_fileTraduce un archivo en disco (JSON/YAML/.strings/.po/ARB/XML/CSV/XLIFF/.properties/.resx/.ftl), incremental opcional — reproducible vía kaeris.lock
kaeris_add_languageInicializa un locale objetivo completamente nuevo traduciendo todo el archivo fuente a él

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 entornoPropósito
KAERIS_API_KEYClave Pro/Scale — límites más altos (si no, se usa el nivel gratuito de 10k caracteres)
KAERIS_OPENROUTER_KEYClave de OpenRouter para Lifetime/BYOK — sin límite mensual de volumen
KAERIS_API_URLSobrescribe 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.json al 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