Getting Started

Set Up the MCP Server

Your host starts the server itself, over stdio, so there is nothing to install and no version to keep current. You need Node 20 or newer on the machine running the host, and no configuration file to start.

Configure Your Host

Most hosts take this block. Put it in the file named for yours:

.mcp.json
{
  "mcpServers": {
    "the-i18n-mcp": {
      "command": "npx",
      "args": ["-y", "@the-i18n-kit/mcp@latest"]
    }
  }
}
HostFile
Claude Code.mcp.json at the project root
Cursor.cursor/mcp.json, or ~/.cursor/mcp.json for every project
Windsurf~/.codeium/windsurf/mcp_config.json
Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %APPDATA%\Claude\claude_desktop_config.json on Windows — restart the app after editing

Three hosts use a different shape. VS Code:

.vscode/mcp.json
{
  "servers": {
    "the-i18n-mcp": { "type": "stdio", "command": "npx", "args": ["-y", "@the-i18n-kit/mcp@latest"] }
  }
}

Zed:

.zed/settings.json
{
  "context_servers": {
    "the-i18n-mcp": { "command": "npx", "args": ["-y", "@the-i18n-kit/mcp@latest"] }
  }
}

Codex CLI:

~/.codex/config.toml
[mcp_servers.the-i18n-mcp]
command = "npx"
args = ["-y", "@the-i18n-kit/mcp@latest"]

Confirm It Reached Your Project

Ask your agent to call discover. It returns what the kit thinks your project is; read three fields:

  • framework — the adapter that resolved the project. Wrong one? Pin it.
  • layers — one entry per layer, meaning a scoped locale directory. A layer you expected and do not see is a directory the adapter did not find.
  • translationMode — agent or provider, decided at server startup.

The server works on the directory the host launched it in, reported as rootDir. Check that field before trusting a count.

Choose Which Model Translates

Agent mode is the default and needs no configuration: the translate tools return the source values plus your glossary and locale notes, your agent translates them with the model it is already running on, and writes them back.

Provider mode has the server call a provider itself. Set the environment variables on the server process, in the same host configuration block:

.vscode/mcp.json
{
  "servers": {
    "the-i18n-mcp": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@the-i18n-kit/mcp@latest"],
      "env": {
        "I18N_PROVIDER": "google",
        "I18N_MODEL": "gemini-2.5-flash",
        "GEMINI_API_KEY": "<your-api-key>"
      }
    }
  }
}

Substitute your own key. The variable names are on the agent contract, and the two modes on translation modes. Set some of them and not all and the server warns on stderr and starts in agent mode. The mode is decided once at startup, so a config edit needs a host restart.

A project-level .mcp.json, .vscode/mcp.json or .cursor/mcp.json is committed with everything else in the repository. Keep provider credentials in a user-level config, or stay in agent mode.

Give the Server Your Terminology

Detection finds your locale files. It cannot know that "Booking" is a product concept, or that your formal German locale is maintained by a person:

i18n-kit.config.ts
import { defineI18nKitConfig } from '@the-i18n-kit/cli/config'

export default defineI18nKitConfig({
  context: 'A B2B booking platform.',
  glossary: { anny: 'Brand name. NEVER translate.' },
  protectedLocales: ['de-formal'],
})

protectedLocales is the one to set first: those locales are excluded from default translate targets in both modes. See where configuration lives and the field reference.

Every tool your agent now has, with the parameters your host receives, is on the MCP tools reference.

Copyright © 2026