Skip to main content
KAERIS

KAERIS i18n — MCP Server

AI-native localization over the Model Context Protocol. Give Claude Desktop, Cursor, Claude Code (or any MCP client) the ability to translate your app's strings into 46 languages — placeholder-safe, format-aware, incremental, with built-in Translation QA.

Tools

Tool What it does Calls the API?
kaeris_scan_repo Discover a repo's i18n setup: locale files found, base language, target languages, framework guess (i18next/next-intl/vue-i18n/Flutter/Android/iOS/gettext/generic) No
kaeris_status Completeness/health per target locale — missing keys, extra keys, placeholder mismatches, plus the quality detectors that gate a merge in CI: number drift, lost inline tags, broken entities/escapes, ICU/CLDR plural gaps (same verdict as kaeris check --json) No
kaeris_list_missing_keys The exact missing/broken keys (with source text) for one target locale, so an agent knows exactly what to fix No
kaeris_list_languages List all supported target languages No
kaeris_translate Translate inline strings → per-language results, with QA (placeholder-loss & UI-overflow flags; verify=True back-translates to check meaning) Yes
kaeris_translate_file Translate a file on disk (JSON/YAML/.strings/.po/ARB/XML/CSV/XLIFF/.properties/.resx/.ftl), optional incremental — reproducible via kaeris.lock Yes
kaeris_add_language Bootstrap a brand-new target locale by translating the whole source file into it Yes

The first four tools are local-only (no network call, no cost) — an agent can use them freely to audit and understand a repo's i18n before deciding what (if anything) to translate.

Reproducible by design

kaeris_translate_file with incremental=True keeps a kaeris.lock next to your source file — the same lock the CLI writes, so an agent and a human sharing a repo stay in sync. It records a hash of every source string plus the settings that produced it: tone, glossary, app context, and the model. That means:

  • Edit one string — only that string is re-translated; everything else stays byte-for-byte.
  • Change tone, glossary or context — the whole locale is re-translated, never a mix of old and new.
  • Change plan — every tier runs the same model (Gemini 2.5 Flash-Lite), so upgrading does not force a re-translation. The lock records the model regardless: the day we change it, the locale is rebuilt in full instead of quietly ending up the work of two models.

Commit kaeris.lock alongside your source file so the agent, your teammates and CI all agree on what is already done.

Install

pip install kaeris-mcp

Or run it with Docker

docker build -t kaeris-mcp .
docker run -i --rm -v "$PWD:/work" -w /work kaeris-mcp

The server speaks JSON-RPC over stdin/stdout, so there is no port to expose — -i is what keeps the conversation open. Mount your project at /work and the repo-aware tools (scan_repo, status, list_missing_keys) read it directly; pass -e KAERIS_API_KEY=… for the paid tiers.

Configure your client

Claude Desktop — add to 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 — Settings → MCP → Add, or .cursor/mcp.json:

{ "mcpServers": { "kaeris-i18n": { "command": "kaeris-mcp" } } }

Claude Code — one command:

claude mcp add kaeris-i18n kaeris-mcp

Restart the client; the KAERIS tools appear automatically.

Auth & tiers (all optional)

Env var Purpose
KAERIS_API_KEY Pro/Scale key — higher limits (else the free 10k-char tier is used)
KAERIS_OPENROUTER_KEY OpenRouter key for Lifetime/BYOK — no monthly volume cap
KAERIS_API_URL Override the API base URL

No key is required to try it — the free anonymous tier works out of the box.

Example prompts

  • "Translate the strings in locales/en.json into German, Ukrainian and Japanese."
  • "Add French and Spanish translations for these buttons: Save, Cancel, Delete."
  • "Only translate the new keys I added to en.json — don't redo the whole file."
  • "Check this repo's i18n and tell me what's missing or broken." (scans, then reports status — no API call)
  • "We don't have Ukrainian yet — add it." (bootstraps a new locale via translation)

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kaeris_mcp-0.2.8.tar.gz (26.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kaeris_mcp-0.2.8-py3-none-any.whl (16.4 kB view details)

Uploaded Python 3

File details

Details for the file kaeris_mcp-0.2.8.tar.gz.

File metadata

  • Download URL: kaeris_mcp-0.2.8.tar.gz
  • Upload date:
  • Size: 26.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.13

File hashes

Hashes for kaeris_mcp-0.2.8.tar.gz
Algorithm Hash digest
SHA256 b0dfe6c08064a3652ef955deed459b2679cbeab6e772fc88f0d389f879cf41a7
MD5 e5c3038112437fc68a3c95c0b1f94e2f
BLAKE2b-256 c332ec2381b7d7227d7980a394da7a7cef5b741617bc2a0e350d8ba417432b18

See more details on using hashes here.

File details

Details for the file kaeris_mcp-0.2.8-py3-none-any.whl.

File metadata

  • Download URL: kaeris_mcp-0.2.8-py3-none-any.whl
  • Upload date:
  • Size: 16.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.13

File hashes

Hashes for kaeris_mcp-0.2.8-py3-none-any.whl
Algorithm Hash digest
SHA256 35ca88138b57ebad587dbf26f785c20acf28a17e3a7e4e094d205f0d027a99e4
MD5 7a54ae268dd74172a1188fb3e9dd78fb
BLAKE2b-256 a2978be8b3eed08390d29872098efc1ad07d67c9d096ea8cb975919f44a4d43e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page