Connect your AI
Register the easyi18n MCP server in your client with one of the snippets below.
Each one starts the server with npx -y @easyi18n.com/cli@0.13.0-rc.6 mcp,
which needs Node.js and no Dart SDK. The version is pinned: the snippet keeps
running the CLI that printed it until you print it again after an upgrade.
Replace eik_YOUR_AGENT_KEY with an
agent key, or keep the key in your
environment where the snippet reads it from there.
The npm package @easyi18n.com/cli is published with CLI 0.13.0. Until then,
install the CLI with Dart and print the Dart variant of a snippet
with easyi18n mcp config --client <client> --runner dart. mcp config is
also new in 0.13.0; with 0.12.0, use dart pub global run easyi18n_cli:easyi18n mcp as the command in the snippets below.
The CLI prints each snippet and where it goes:
easyi18n mcp config --client cursor
Clients: claude-code, claude-desktop, cursor, vscode, codex,
gemini, windsurf, zed and generic. --runner dart prints the variant
for dart pub global run. The command never reads your key.
On native Windows, a client that starts servers without a shell cannot find
npx. Claude Code documents wrapping the command as cmd /c npx ... there.
Claude Code
Run it in a terminal in the project. It registers the server in local scope, which stays out of the repository. The Claude Code plugin is the alternative, with skills and a key setting.
claude mcp add --env EASYI18N_TOKEN=eik_YOUR_AGENT_KEY --transport stdio easyi18n -- npx -y @easyi18n.com/cli@0.13.0-rc.6 mcp
Claude Desktop
Merge it into claude_desktop_config.json (Settings, Developer, Edit Config)
and restart Claude. Claude Desktop has no project folder, so the agent names
one with the project_dir argument.
{
"mcpServers": {
"easyi18n": {
"command": "npx",
"args": [
"-y",
"@easyi18n.com/cli@0.13.0-rc.6",
"mcp"
],
"env": {
"EASYI18N_TOKEN": "eik_YOUR_AGENT_KEY"
}
}
}
}
Cursor
Merge it into .cursor/mcp.json in the project. Cursor reads
EASYI18N_TOKEN from the environment it was started in, so the file holds no
key and can be committed.
{
"mcpServers": {
"easyi18n": {
"command": "npx",
"args": [
"-y",
"@easyi18n.com/cli@0.13.0-rc.6",
"mcp"
],
"env": {
"EASYI18N_TOKEN": "${env:EASYI18N_TOKEN}",
"EASYI18N_PROJECT_DIR": "${workspaceFolder}"
}
}
}
}
VS Code
Merge it into .vscode/mcp.json in the project. VS Code asks for the key once
and stores it.
{
"inputs": [
{
"type": "promptString",
"id": "easyi18n-token",
"description": "easyi18n AI agent key (eik_)",
"password": true
}
],
"servers": {
"easyi18n": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@easyi18n.com/cli@0.13.0-rc.6",
"mcp"
],
"env": {
"EASYI18N_TOKEN": "${input:easyi18n-token}",
"EASYI18N_PROJECT_DIR": "${workspaceFolder}"
}
}
}
}
Codex CLI
Append it to ~/.codex/config.toml. Codex forwards EASYI18N_TOKEN from the
shell it runs in. startup_timeout_sec gives the first npx download time to
finish: Codex waits 10 seconds by default.
[mcp_servers.easyi18n]
command = "npx"
args = ["-y", "@easyi18n.com/cli@0.13.0-rc.6", "mcp"]
env_vars = ["EASYI18N_TOKEN"]
startup_timeout_sec = 60
required = true
omit_tools_from = ["deferred"]
Gemini CLI
Merge it into .gemini/settings.json in the project. Gemini CLI reads
EASYI18N_TOKEN from the shell it runs in.
{
"mcpServers": {
"easyi18n": {
"command": "npx",
"args": [
"-y",
"@easyi18n.com/cli@0.13.0-rc.6",
"mcp"
],
"env": {
"EASYI18N_TOKEN": "$EASYI18N_TOKEN"
}
}
}
}
Windsurf
Merge it into Windsurf's mcp_config.json.
{
"mcpServers": {
"easyi18n": {
"command": "npx",
"args": [
"-y",
"@easyi18n.com/cli@0.13.0-rc.6",
"mcp"
],
"env": {
"EASYI18N_TOKEN": "eik_YOUR_AGENT_KEY"
}
}
}
}
Zed
Merge it into Zed's user settings.json.
{
"context_servers": {
"easyi18n": {
"command": "npx",
"args": [
"-y",
"@easyi18n.com/cli@0.13.0-rc.6",
"mcp"
],
"env": {
"EASYI18N_TOKEN": "eik_YOUR_AGENT_KEY"
}
}
}
}
Other clients
Most MCP clients read this mcpServers shape. Merge it into the client's MCP
configuration.
{
"mcpServers": {
"easyi18n": {
"command": "npx",
"args": [
"-y",
"@easyi18n.com/cli@0.13.0-rc.6",
"mcp"
],
"env": {
"EASYI18N_TOKEN": "eik_YOUR_AGENT_KEY"
}
}
}
}
Check the connection
Ask the agent to call status. It answers with the project, its languages and
its family. A no_credential error means the key did not reach the server:
check the client configuration and restart the client.