Skip to main content
Glama

i18n-locale-mcp

A zero-dependency MCP server that gives any AI agent a localization QA toolkit. Deterministic, offline-capable, and safe to run in CI.

Works with Claude Desktop, Cursor, Dify, AutoGPT, and any MCP-compatible client.

Why

Shipping a product in 20 locales is easy; shipping it correctly is not. Agents and devs constantly produce 1,234 in German, 03/25 in French, missing {name} placeholders, or untranslated brand terms. This server catches those deterministically — no API key needed.

Related MCP server: BeLikeNative Grammar Server

Tools

Tool

What it does

Network

list_locales

Locale formatting rules (quotes, separators, dates, RTL, formality) for 20 locales

none

pseudo_localize

Accented + expanded pseudolocale to catch hard-coded strings & truncation

none

i18n_lint

Number/date separators, quote style, CJK punctuation, RTL bidi, placeholder parity, length budget

none

glossary_apply

Enforce terminology + protect brand terms across targets

none

localize

Translate to N locales, then lint — or emit structured translation jobs if no provider is set

optional

localize never fabricates translations: without a provider configured it returns machine-readable translation jobs (source + rules + placeholders) for you to execute.

Install

git clone <repo> && cd i18n-mcp
node index.js --list-tools     # sanity check
node test/smoke.mjs            # 11 deterministic checks

Requires Node.js >= 18. No dependencies.

Use with an MCP client

Add to claude_desktop_config.json (or Cursor / Dify MCP settings):

{
  "mcpServers": {
    "i18n": {
      "command": "node",
      "args": ["/absolute/path/to/i18n-mcp/index.js"]
    }
  }
}

Optional: enable live translation

Set an OpenAI-compatible endpoint and localize will translate before linting:

export I18N_LLM_BASE_URL="https://api.openai.com/v1"
export I18N_LLM_API_KEY="sk-..."
export I18N_LLM_MODEL="gpt-4o-mini"      # optional

Without these, localize returns providerMode: "jobs" and does zero network calls.

Examples

Pseudolocalize (find hard-coded UI strings)

pseudoLocalize("Save changes")   // 【Såvé çhångéš~~~~~~~~~】

Lint a translation

{ "text": "Gesamt: 1,234 EUR", "locale": "de-DE" }

→ NUMBER_GROUP_SEP error: German expects . as thousands separator.

Programmatic API

import { pseudoLocalize, lint, glossaryApply, localize } from "i18n-locale-mcp";

lint("Cherchez 03/25/2026", "fr-FR");                       // DATE_ORDER error
glossaryApply([{ source: "Save", target: "Enregistrer" }],
              [{ key: "btn.save", text: "Save" }]);          // TERM_UNTRANSLATED
await localize("Hello {name}", ["de-DE", "ja-JP"]);          // lint-ready output

CLI

node index.js              # run MCP server on stdio
node index.js --list-tools # list tools
node index.js --version

License

MIT

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    AI-powered translation management built for AI agents. Automate localization with regional sensitivity and zero TMS overhead. Works with Claude Code, Cursor, VS Code via MCP protocol. Supports JSON, YAML, Markdown, PO and more.
    10 npm
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    AI localization from your editor — translate an app's string files into 46 languages with placeholder-safe, reproducible output. Eleven formats (JSON, .arb, .po, .strings, Android XML and more), and every translation is read back and checked before it lands.
    7
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Translation QA for i18n locale files. Deterministic validators — missing keys, placeholder drift, collapsed plurals, glossary breaches — that need no API key, plus a review tool that hands translation pairs and judging criteria back to the calling agent, so meaning-level review runs on the model your client already has. Translation with your own LLM key is optional. JSON, Flutter .arb, Apple .
    8
    Apache 2.0