i18n-tools-mcp

i18n-tools-mcp

Enables AI agents to read and write JSON translation files (i18n, i18next, react-i18next) via the Model Context Protocol.

Category
Visit Server

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:

  1. Required: Path to the directory containing your translation files
  2. Optional: Base locale code (default: nl) — used in tool descriptions to guide AI agents
  3. 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

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.

Official
Featured
TypeScript
Magic Component Platform (MCP)

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.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

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.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

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.

Official
Featured
TypeScript
Kagi MCP Server

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.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured
Exa Search

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.

Official
Featured