MCP server for KAERIS i18n — AI-native localization for Claude Desktop, Cursor & agents
Five tools with clear, domain-specific names (kaeris_scan_repo, kaeris_status, kaeris_list_missing_keys, kaeris_list_languages, kaeris_add_language). All have substantive descriptions (100 - 200 chars, well above the 10-char minimum). Input schemas are present with type declarations and parameter descriptions. However, output schemas are not documented in the visible code, LLMs cannot predict what fields to expect from responses. Four tools are read-only; one (kaeris_add_language) writes files and calls an external API but lacks explicit error recovery guidance. Parameter descriptions are adequate but could be more prescriptive about formats and constraints (e.g., language code format 'de', 'fr', 'ja', 'pt-BR' is mentioned in one tool but not formalized as an enum or pattern).
Translate all strings in a base/source locale file into a target language and write the result to a new locale file. Calls the KAERIS translation API (requires KAERIS_API_KEY, KAERIS_OPENROUTER_KEY, or free anonymous tier up to 10k chars).
List all languages found in a locale file (for formats that support multiple languages in one file, like Xcode String Catalogs).
Compare two locale files and list the keys present in the base/source file but missing in the target file. Useful for finding incomplete translations.
Scan a directory tree for locale files (JSON, YAML, ARB, .strings, PO, XML, CSV, XLIFF, Properties, RESX, FTL, Xcode String Catalogs, Markdown). Returns the files found, detected framework/convention, base language, and target languages. Skips node_modules, .git, build output, and hidden directories; caps depth at 8 levels and total files at 20k to handle huge repos safely.
Show the translation status of a locale file: how many strings are translated, untranslated, or fuzzy. Supports JSON, YAML, ARB, .strings, PO, XML, CSV, XLIFF, Properties, RESX, FTL, Xcode String Catalogs, and Markdown.
Output schemas not documented. LLMs cannot predict response structure (fields, types, pagination). Responses must be documented so agents can chain tools and extract required data.
Language code parameter (target_lang in kaeris_add_language) lacks formal constraint. Description mentions examples ('de', 'fr', 'ja', 'pt-BR') but no enum or regex pattern. LLMs may hallucinate invalid codes.
kaeris_add_language calls external API and writes files but lacks explicit error recovery guidance. No mention of retryable vs. fatal errors, timeout handling, or partial failure modes.
File path parameters (path, base_path, target_path) accept relative or absolute paths but lack explicit format guidance. No mention of path traversal validation or working directory context.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2026-07-28+ | v2 |
No pagination or result-limiting parameters on kaeris_scan_repo despite capping at 20k files internally. LLMs cannot control result size or iterate over large repos.