About glot
glot is an app-localization tool for coding agents, using deterministic checks to enforce placeholder, glossary, plural, and UI-width rules. Its CLI handles localization workflows, while its agent interface supplies string context and validated tools for adding entries.
Key features
- 01Detects the i18n stack and initializes config
- 02Converts hardcoded UI text to keys
- 03Translates only new or changed entries
- 04Checks placeholders, plurals, and glossary terms
- 05Measures and limits width using app fonts
- 06Uses a lockfile to protect manual edits
Use cases
- 01Add French and German app translations
- 02Migrate hardcoded UI text to i18n keys
- 03Check catalog placeholder and plural rules
- 04Let an agent add strings with UI context
MCP support
glot mcp provides Claude Code, Cursor, or Codex with string keys, file locations, UI roles, and the glossary, plus tools for adding strings through the same validator.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
npx -y glot-i18nANTHROPIC_API_KEYSecretLLM key used by the translate tool (or OPENAI_API_KEY, per glot.toml). Not needed for context, check or add.Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEglot
Your coding agent localizes your app. Deterministic code guarantees that nothing broken or too long lands in your catalogs.

The real glot translate binary. The LLM is scripted to get three strings wrong on its first pass; every refusal and message is glot's. Reproduce it, or rerun it with a real model doing the retries: docs/launch/record/refusal.sh.
npx glot-i18n init # detect your i18n stack, write glot.toml + rules for your coding agent
npx glot-i18n i18nize # hardcoded UI strings -> keys, components rewritten (next-intl, react-i18next)
npx glot-i18n translate # translate only the delta; invalid output is refused, retried, never written
Or all of it in one idempotent step: npx glot-i18n localize --yes --targets fr,de (init if needed → i18nize → translate → check).
Guarantees
Checked by code on every LLM output, on glot set, in the overlay and in CI (glot check). A refused string goes back to the model with the exact reason (2 retries, then the fallback model); if it still fails, nothing is written.
| Placeholders | {name}, {{name}}, tags: same set as the source, none invented, none translated. ICU, i18next and MessageFormat 2 syntax parsed. |
| CLDR plurals | Every category the target locale needs (pl: one, few, many, other; ar: six of them). |
| Glossary | glossary.toml in your repo: required and forbidden translations, do-not-translate terms. |
| Pixel width | glot measure records each key's box and font from your running app; translations are shaped with that font and refused if wider. glot fit shortens what already overflows. |
| Lockfile | glot.lock hashes source and target: only the delta is translated, and a hand edit is never overwritten without --force. |
| MCP for your agent | glot mcp gives Claude Code, Cursor or Codex your keys, their usages (file:line, UI role), the glossary, and tools that add strings through the same validator. |
Works with the i18n library you already use, adds no runtime, bring your own LLM key (Anthropic, OpenAI, any OpenAI-compatible endpoint). MIT.
More: Docs (concepts, CLI, MCP, integrations & GitHub Action, agent skill, AI-translation provenance, FAQ & costs) · Labs (SEO, database content, emails/images, task parity, plural coverage…) · Self-hosted server (experimental) · Demo app · Architecture
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.