A Docker-based MCP (Model Context Protocol) server that wraps smartling-cli — the official Smartling command-line tool. This MCP server is a thin wrapper and can only do what smartling-cli supports. Refer to the smartling-cli documentation for the full list of capabilities and limitations.
- Docker
- Smartling account credentials
| Tool | Description |
|---|---|
smartling-cli |
Run any smartling-cli command (projects, files, mt) |
smartling-ls |
List files in /smartling or a subdirectory |
smartling-cat |
Print the contents of a file inside /smartling |
docker pull smartlinginc/smartling-docker-mcpEdit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"smartling": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "SMARTLING_USER_ID",
"-e", "SMARTLING_SECRET",
"-e", "SMARTLING_PROJECT_ID",
"-v", "/absolute/path/to/your/project:/smartling",
"smartlinginc/smartling-docker-mcp"
],
"env": {
"SMARTLING_USER_ID": "your-user-id",
"SMARTLING_SECRET": "your-secret",
"SMARTLING_PROJECT_ID": "your-project-id"
}
}
}
}Important: The volume mount must map to
/smartlinginside the container. Thesmartling-lsandsmartling-cattools only work within that path.
To use a custom smartling.yml (e.g. with file type mappings), mount it into /app/smartling.yml inside the container:
"-v", "/absolute/path/to/your/project:/smartling",
"-v", "/absolute/path/to/smartling.yml:/app/smartling.yml",Restart Claude Desktop after editing the config.
Add to your project's .claude/settings.json or run /mcp in Claude Code:
{
"mcpServers": {
"smartling": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "SMARTLING_USER_ID",
"-e", "SMARTLING_SECRET",
"-e", "SMARTLING_PROJECT_ID",
"-v", "/absolute/path/to/your/project:/smartling",
"smartlinginc/smartling-docker-mcp"
],
"env": {
"SMARTLING_USER_ID": "your-user-id",
"SMARTLING_SECRET": "your-secret",
"SMARTLING_PROJECT_ID": "your-project-id"
}
}
}
}With a custom smartling.yml:
{
"mcpServers": {
"smartling": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "SMARTLING_USER_ID",
"-e", "SMARTLING_SECRET",
"-e", "SMARTLING_PROJECT_ID",
"-v", "/absolute/path/to/your/project:/smartling",
"-v", "/absolute/path/to/smartling.yml:/app/smartling.yml",
"smartlinginc/smartling-docker-mcp"
],
"env": {
"SMARTLING_USER_ID": "your-user-id",
"SMARTLING_SECRET": "your-secret",
"SMARTLING_PROJECT_ID": "your-project-id"
}
}
}
}Once configured, ask Claude naturally:
- "List my Smartling projects"
- "Show files available for translation"
- "Push /smartling/en/strings.json to Smartling"
- "Pull Spanish translations for all JSON files"
- "Check translation status for my project"
- "Machine translate /smartling/en/strings.json to French"
PROJECTS
projects list List all projects in the account
projects info Show details about the current project
projects locales List target locales
-s, --short Locale IDs only
--source Source locale only
--format '<go-template>' Custom output format
FILES
files list ['<mask>'] List files in project
--short URIs only
files push <file> [<uri>] Upload a file
--type <type> Override file type (e.g. json, plaintext)
-b, --branch <prefix> Add branch prefix; @auto detects git branch
--directive <directive> Set file-level directive
files pull ['<mask>'] Download translated files
--source Download source only
-l <locale> Target locale (repeatable)
files delete ['<mask>'] Delete files
files rename <old-uri> <new-uri> Rename a file URI
files status Show translation progress
MT (Machine Translation)
mt detect '<mask>' Detect source language
-s, --short Output locale code only
--output table|json Output format
mt translate '<mask>' Machine translate files
-l, --target-locale <locale> Target locale (repeatable)
--source-locale <locale> Source language (auto-detected if omitted)
--input-directory <dir> Source directory
--output-directory <dir> Output directory
GLOBAL FLAGS
-a, --account <account-id> Override account ID
-p, --project <project-id> Override project ID
Full documentation: smartling-cli wiki