wti-mcp
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
wti-mcp
An MCP server for WebTranslateIt. It lets an
AI assistant look up keys and their translations, find what's left to translate, create and edit strings, save
translations, check progress, use the glossary, and push or pull language files — the things you'd otherwise do
with the wti CLI or the web UI.
It talks to the WebTranslateIt REST API the same way wti 3.x does: a Bearer token and
/api/projects/current (or /api/projects/<id> for organization tokens).
This is an independent project, not made or endorsed by WebTranslateIt.
What you can ask
"Which keys are still untranslated in de-DE? Draft translations for them, matching the glossary."
"Show me
booking_confirm_titlein every language.""Add the key
rebook_card_titlewith the text 'Book again', label itrelease-5.31, and translate it into French and Spanish.""How far along is each locale? Which ones are below 90% translated?"
"Find every key starting with
checkout_that has no developer comment."
Related MCP server: Verblaze MCP Server
Tools
Tool | What it does | Mode |
| Source/target locales and master files with their ids | read |
| Progress per locale: done, to translate, to verify, to proofread, % done and % translated | read |
| List or search strings by key (exact or regex), label, file, status, date; with translations | read |
| One string by key or id, with its translation in every locale | read |
| Download a language file for a locale (one-file | read |
| Search the term base, optionally with translations in a locale | read |
| Create a key with its source text, translations, comment and labels | write |
| Rename a key, change its comment, labels (add/remove) or status | write |
| Save a string's translation in one or more locales | write |
| Upload a local language file (one-file | write |
| Add a target locale | write |
| Edit the glossary | write |
| Delete things | delete |
Write tools aren't registered in read-only mode. Delete tools are only registered with WTI_ALLOW_DELETE=true.
Setup
Requires Node.js 22 or newer.
git clone https://github.com/FireZenk/wti-mcp.git
cd wti-mcp
npm install # also builds dist/The server is then node /path/to/wti-mcp/dist/index.js.
Configuration
Variable | Meaning |
| API token ( |
| Same, under the name the |
| Path to a |
| Numeric project id. Needed for organization tokens only. |
|
|
|
|
| Defaults to |
Environment variables win over the .wti file.
Claude Code
Reusing the .wti of a project:
claude mcp add wti -e WTI_CONFIG_FILE=/path/to/your/app/.wti -- node /path/to/wti-mcp/dist/index.jsOr with a token:
claude mcp add wti -e WTI_API_TOKEN=wti_pw_… -- node /path/to/wti-mcp/dist/index.jsAdd -e WTI_READ_ONLY=true for a read-only setup. Each server instance works on one project: add one per project
(e.g. wti-android, wti-ios) if you have several.
Claude Desktop and other MCP clients
{
"mcpServers": {
"wti": {
"command": "node",
"args": ["/path/to/wti-mcp/dist/index.js"],
"env": { "WTI_CONFIG_FILE": "/path/to/your/app/.wti" }
}
}
}Things worth knowing
Locale codes are the project's own:
de-DE, notde, if that's how the project is set up. Tools check the code against the project and suggest the right one.Keys are unique per file.
wti_get_stringand friends accept a key and find its id; passfile_idwhen the same key exists in several files. The API's key filter matches prefixes, so the server picks the exact match.Writes are asynchronous. WebTranslateIt answers 202 Accepted and applies changes in the background; re-read after a few seconds before relying on them.
wti_upload_filekeeps missing strings by default (ignore_missing: true), unlike the API, so uploading a partial file can't mark the rest of the project obsolete. Passignore_missing: falseto sync deletions.Statuses. Translations:
status_unproofread,status_proofread,status_unverified. Strings:current,hidden,obsolete. In stats,doneonly counts proofread strings;percent_translatedalso counts the ones waiting for proofreading.Glossary translation statuses can only be set on creation. WebTranslateIt's API answers 500 to a status name on update and silently ignores a numeric one, so
wti_set_term_translationonly updates the text and description of an existing translation and says so. Statuses read back as numbers (1, 0, -1); the server shows them asapproved,proposed,refused.WebTranslateIt doesn't reject a translation that drops a placeholder (e.g.
%1$s) when saved through the API, so check placeholders yourself.Rate limits. The API allows 25 requests per second per IP. The client retries 429 responses (honouring
Retry-After) and, for GET requests only, timeouts and 502/504.The token only goes to the WebTranslateIt host. Pagination links pointing elsewhere are refused.
Development
npm test # unit and MCP-level tests against a fake WebTranslateIt
npm run typecheck
npm run inspect # open the server in the MCP Inspector (needs a token in the environment)The code: src/client.ts (HTTP client), src/config.ts (environment and .wti), src/format.ts (compact
responses for the model), src/tools/* (tool definitions), src/server.ts and src/index.ts (stdio entry
point). See CONTRIBUTING.md.
Security
The server runs locally and only talks to WebTranslateIt with the token you give it. Texts coming back from
WebTranslateIt (translations, comments, glossary entries) are written by people and reach the model as data;
keep write access for setups where you review what the assistant does, and use WTI_READ_ONLY=true otherwise.
To report a vulnerability, use GitHub's "Report a vulnerability" in the Security tab rather than a public issue.
License
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
This server cannot be deployed
Maintenance
Related MCP Connectors
Localize apps from your AI assistant: translate locale files, set glossaries, connect GitHub repos.
AI-native translation management: push translation files, translate, review and audit strings.
Connects AI assistants to TrackingTime for querying time entries, projects, tasks, customers, and team data using natural language.
Read Localazy projects, files, keys and glossary; submit translations, import keys, AI suggestions.
Related MCP Servers
- AlicenseAqualityDmaintenanceConnects AI assistants to Lokalise translation management platform with 59 tools across 11 domains, enabling localization teams to manage projects, translations, tasks, and workflows through natural conversation.591,060 npm6MIT
- AlicenseNot gradedqualityDmaintenanceConnects AI tools to Verblaze localization projects, enabling management of translations, languages, screens, and project resources through natural language interactions.15 npmMIT
- AlicenseCqualityDmaintenanceEnables AI assistants to manage i18next translation files, including adding keys, syncing missing translations, and analyzing coverage.1451 npm12MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to manage Crowdin translation projects with tools for listing projects, files, source strings, translations, and performing bulk search-and-replace operations.MIT