L10n.dev - AI Localization Agent
io.github.l10n-devPublished by GitHub account l10n-devv1.2.0Updated Oct 24, 2026
MCP Server that turns your AI agent into a localization expert with token-efficient i18n translation
Overview
Local MCP server that connects an AI assistant to the l10n.dev localization service to translate i18n files while preserving format and placeholders.
- What you can do
- Translate i18n source files into one or more target languages and detect project structure, source and target languages, and target file paths from folder or file naming conventions, with an optional language code regex for custom names. Manage linguistic instructions per language pair: list, create, update and delete tone, style or brand voice rules. Manage glossaries and their term entries: list, inspect, create, update, delete, and add or remove entries. Check the account character balance and store, or check the status of, an API key locally. Two prompts guide project setup and setting up automated translation through GitHub Actions or npm scripts.
- When to use it
- Useful when an assistant needs to translate app localization files such as JSON, ARB, YAML, PO, XLIFF or Markdown into many languages with consistent terminology and preserved placeholders, without pasting large files into the chat. Also suited to setting up recurring or CI-driven translation workflows.
- Requirements
- Runs locally via npx (Node.js) over stdio. Needs an l10n.dev account and API key, supplied through the L10N_API_KEY environment variable or stored locally with the set-api-key tool. Network access to the l10n.dev service is required.
Installation
In SourceWeft
- Open L10n.dev - AI Localization Agent in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
ai-l10n-mcp
MCP server that gives AI agents access to l10n.dev — a professional localization service purpose-built for software i18n files.
When an AI agent needs to translate your app, the naive approach is to paste file contents into the chat. That breaks down fast: localization files are large, formats are strict, placeholders must survive verbatim, glossaries drift across sessions, and the agent has no memory between runs. This MCP replaces that fragile workflow with a dedicated localization engine that the agent calls as a tool — getting professional-grade output without wasting context window on raw file contents.
Think of it as giving your AI agent a professional localization co-pilot: the agent handles intent and orchestration; l10n.dev handles the actual translation with accuracy, consistency, and format guarantees.
Why use this instead of asking your AI agent directly?
Features
- 165 Languages — translate to the full range of world languages in one call
- Format guaranteed — JSON, JSONC, Flutter ARB, YAML, PO (gettext), XLIFF, MD and all text-based i18n formats; placeholders, keys, and structure preserved and validated after translation
- Auto-detect target languages from project structure
- Persistent glossary — generate a glossary from your content, save it, and have it applied automatically across every subsequent file and chunk for consistent terminology
- Linguistic instructions — save style/tone rules per language pair (e.g. "Use formal tone")
- Incremental translation — hash-based change detection skips strings already translated, saving quota and protecting existing translations
- Proactive quality control — checks instructions and glossary for each language pair before translating, not after
Connect Claude Desktop, Cursor, Windsurf, GitHub Copilot, OpenAI Codex, or any MCP-compatible agent directly to l10n.dev's translation engine.
Installation & Configuration
Getting an API key
Create a free account and get your API key at https://l10n.dev/ws/api-keys
Tip: Instead of setting
L10N_API_KEYin each config, you can ask the AI to store your key withl10n_set_api_key. The key is saved to~/.ai-l10n/config.jsonand used automatically.
Claude Desktop
In Claude Desktop, open Settings > Developer > Edit Config. Claude Desktop will open the correct MCP config file for your install. On macOS this is typically ~/Library/Application Support/Claude/claude_desktop_config.json. On Windows, the backing path can vary by installation, so prefer Edit Config instead of navigating manually. Add:
Cursor
Open Customize in Cursor to add and manage MCP servers. For a file-based setup, create one of these configs:
~/.cursor/mcp.jsonfor a user-wide setup.cursor/mcp.jsonin your project for a workspace-specific setup
Add:
Windsurf
In Windsurf, open the MCPs panel in Cascade, or go to Devin Settings > Cascade > MCP Servers. If you need to add it manually, edit ~/.codeium/windsurf/mcp_config.json and add:
GitHub Copilot (VS Code)
Open the Command Palette and select MCP: Open User Configuration. Alternatively, create a .vscode/mcp.json file in your workspace or user settings. Add:
OpenAI Codex (CLI and IDE)
Add to ~/.codex/config.toml for a user-wide setup, or .codex/config.toml in a trusted project:
You can also add it from the terminal:
Claude Code (CLI and VS Code extension)
Add the server from the terminal:
For a shared project setup, Claude Code can also store MCP servers in a .mcp.json file at your project root.
Available Tools
Translation
Both tools detect language codes in language-code folders (locales/en/common.json,
reported as folder-based) and in file names (file-based) — whether the name is the code
itself (locales/en.json) or holds it alongside other parts (app_en.arb,
locales/emails.en.json, locales/en-US.common.json, messages_en_US.properties). For
naming conventions that are not recognized, pass languageCodeRegex, a regex containing a
(?<language>...) group, e.g. ^emails\.(?<language>[\w-]+)\.json$. The text around the
group is reused for target files, so emails.en.json produces emails.ru-RU.json.
Linguistic Instructions
Glossary
Account
Available Prompts
l10n_project_setup
Guides through checking and configuring linguistic instructions and glossaries for optimal translation quality. Invoke it at the start of a new project or when reviewing l10n.dev settings.
Arguments:
sourceLanguage— source language code (default:en)targetLanguages— comma-separated target language codes (e.g.es,fr,de)
l10n_setup_automation
Scans the project for i18n source files (using l10n_detect_project_structure), checks linguistic instructions, glossary, and balance, then interactively sets up fully automated translation via GitHub Actions or npm scripts.
For GitHub Actions, guides through four trigger options:
- A) On every push to
main— translate and commit back directly - B) On pull requests — translate and open a PR for review
- C) On a schedule — translate nightly or on a cron
- D) Manual trigger only —
workflow_dispatch
Writes ai-l10n.config.json and .github/workflows/translate.yml (or updates package.json scripts), then tells you where to add the API key and what happens on the next trigger.
Arguments:
sourceLanguage— source language code (default:en)targetLanguages— comma-separated target language codes (e.g.es,fr,de)
Example Workflow
User: "Translate my app to Spanish and French"
Claude (with this MCP server) will:
- Call
l10n_list_instructions— finds no instruction fores/frlanguage pairs - Ask: "No instruction found for Spanish/French — would you like to set a tone/style rule before translating? (e.g. formal, casual, keep brand terms untranslated)"
- User says: "Tone should be informal, it's for a food app in Latin America"
- Call
l10n_create_instructionwith the style rule - Call
l10n_list_glossaries— finds no active glossary fores/fr - Ask: "No glossary found for Spanish/French — enable glossary generation for this run? It saves key terms for consistent future translations."
- User says: "Yes"
- Detect that
es.jsonandfr.jsonalready exist — ask: "Target files already exist — enable incremental mode to skip unchanged strings and save quota?" - User says: "Yes"
- Call
l10n_translate_filewithsourceFile,targetLanguages: ["es", "fr"],instruction,generateGlossary: true,translateOnlyNewStrings: true - Report results
Incremental Translation
For JSON-based formats, enable translateOnlyNewStrings: true to skip strings that are already translated. A hash of each source string (not content itself) is stored on the l10n.dev server for change detection — only added or changed strings are translating, saving your character quota.
Note: First translation it translates only added strings, because hash table is empty to detect changed strings.
Automation: CLI and GitHub Actions
For CI/CD automation and command-line usage, see:
- ai-l10n CLI — translate files from the terminal or CI pipelines
- GitHub Action — auto-translate on push, PR, or manual trigger
Pricing
- Free tier — 10,000 characters free every month, no credit card required.
- Pay-as-you-go — Affordable character-based pricing with no subscription required.
- Current packages — Visit l10n.dev/#pricing for up-to-date pricing.
Privacy & Security
- No data retention — Source text and translations are not stored on l10n.dev servers beyond the time needed to process the request.
- Encrypted communication — All API calls use HTTPS.
- Privacy first — Built by developers for developers, with privacy, reliability, and quality as core priorities.
Support
License
MIT
Source: mcp/README.md at commit ad14f7e
Tools
0Version history
1- v1.2.0LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts