i18n-tools-mcp
Enables AI agents to read and write JSON translation files (i18n, i18next, react-i18next) via the Model Context Protocol.
README
i18n-tools-mcp
MCP server for querying and managing JSON translation files. Designed for AI agents (Claude Code, Cursor, etc.) to read and write i18n, i18next, react-i18next, and next-i18next translations directly through the Model Context Protocol.
Supports flat ({locale}.json) and namespaced ({locale}/{namespace}.json) directory layouts with dot-notation keys.
Install
Ask your AI agent:
Install the i18n-tools-mcp MCP server. The translations directory is at ./messages and the base locale is nl.
Or add it manually to your MCP client config (e.g. .claude/settings.json):
{
"mcpServers": {
"i18n-tools": {
"command": "npx",
"args": ["i18n-tools-mcp", "./messages", "nl"]
}
}
}
Arguments:
- Required: Path to the directory containing your translation files
- Optional: Base locale code (default:
nl) — used in tool descriptions to guide AI agents - Optional: JSON indentation spaces (default:
4)
Directory structures
Both flat and namespaced layouts are auto-detected.
Flat — one JSON file per locale:
messages/
en.json
nl.json
Namespaced — subdirectory per locale, one JSON file per namespace (i18next-style):
messages/
en/
common.json
auth.json
nl/
common.json
auth.json
In namespace mode, prefix keys with the namespace: common:Users.name. Read operations (query, list, search, missing) work across all namespaces when no prefix is given. Write operations (set, add) require a namespace prefix.
Tools
query
Look up a translation key across all locale files. Returns the value for each locale that has the key.
| Parameter | Type | Required | Description |
|---|---|---|---|
key |
string | yes | Dot-notation key, e.g. "Users.name" or "common:Users.name" |
set
Set a translation value for a single locale. Creates intermediate keys if needed.
| Parameter | Type | Required | Description |
|---|---|---|---|
locale |
string | yes | Locale code, e.g. "nl" or "en" |
key |
string | yes | Dot-notation key, e.g. "Users.name" or "common:Users.name" |
value |
string | yes | The translation value |
add
Add a translation key to multiple locales at once.
| Parameter | Type | Required | Description |
|---|---|---|---|
key |
string | yes | Dot-notation key, e.g. "Users.name" or "common:Users.name" |
translations |
Record<string, string> |
yes | Locale-to-value mapping, e.g. {"nl": "Naam", "en": "Name"} |
delete
Delete a translation key from all locale files.
| Parameter | Type | Required | Description |
|---|---|---|---|
key |
string | yes | Dot-notation key, e.g. "Users.name" or "common:Users.name" |
rename
Rename a translation key across all locale files. Preserves values.
| Parameter | Type | Required | Description |
|---|---|---|---|
oldKey |
string | yes | Current dot-notation key, e.g. "Users.name" |
newKey |
string | yes | New dot-notation key, e.g. "Users.fullName" |
move
Move a translation key to a different path across all locale files.
| Parameter | Type | Required | Description |
|---|---|---|---|
oldKey |
string | yes | Current dot-notation key, e.g. "Users.name" |
newKey |
string | yes | New dot-notation key, e.g. "Profile.name" |
list
List all translation keys. Optionally filter by a key prefix.
| Parameter | Type | Required | Description |
|---|---|---|---|
prefix |
string | no | Key prefix to filter by, e.g. "Users" or "common:" |
search
Search translations by value (case-insensitive).
| Parameter | Type | Required | Description |
|---|---|---|---|
value |
string | yes | Text to search for in translation values |
missing
Find translation keys that exist in some locales but are missing in others. Takes no parameters.
batch
Apply multiple mutations in a single call. Each affected locale file is read once, mutated in memory, and written exactly once — regardless of how many ops touch it. Per-file atomic: if any op fails, no files are written.
Prefer this over repeated set/add/delete/rename/move calls for bulk changes. It minimizes file-watcher churn (Next.js dev, Vite HMR) and avoids partial writes.
| Parameter | Type | Required | Description |
|---|---|---|---|
ops |
BatchOp[] |
yes | Ordered list of operations (see below) |
Each op is one of:
{ "op": "set", "locale": "en", "key": "Users.name", "value": "Name" }
{ "op": "add", "key": "Users.email", "translations": { "nl": "E-mail", "en": "Email" } }
{ "op": "delete", "key": "Users.legacy" }
{ "op": "rename", "oldKey": "Users.name", "newKey": "Users.fullName" }
{ "op": "move", "oldKey": "Users.name", "newKey": "Profile.name" }
Development
pnpm install # Install dependencies
pnpm dev # Watch mode
pnpm test # Run tests
pnpm test:watch # Watch mode tests
pnpm build # Compile TypeScript
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.