Skip to main content
Glama
Smartling

smartling-mcp-docker

Official
by Smartling

smartling-cli

Run Smartling command-line operations to push files, pull translations, list projects, and manage glossaries, all from a single argument string.

Instructions

Run any smartling-cli command. Pass arguments as a single string exactly as you would on the command line.

Run --help on any command or subcommand to see all available options, e.g. "files push --help" or "mt translate --help".

FILE URI CONVENTION User files are mounted at /smartling inside the container. When pushing a file, ALWAYS specify an explicit argument that strips the /smartling prefix. This ensures the file URI stored in Smartling is a clean relative path (e.g. "en/strings.json"), not an absolute container path (e.g. "/smartling/en/strings.json"). Failing to do so causes double-path issues on download: pulled files would land at /smartling/smartling/... instead of /smartling/... When pulling files, ALWAYS pass --directory /smartling so translated files are written back into the mounted directory at the correct path.

Correct push: files push /smartling/en/strings.json en/strings.json Wrong push: files push /smartling/en/strings.json ← URI becomes /smartling/en/strings.json Correct pull: files pull '.json' -l es-ES --directory /smartling Wrong pull: files pull '.json' -l es-ES ← files land in /app, not /smartling

GLOBAL FLAGS (supported by all commands) -a, --account Override account ID -p, --project Override project ID

ACCOUNT ID Most commands require an account ID. Set the SMARTLING_ACCOUNT_ID environment variable in the Docker config to inject it automatically. If not set, pass -a explicitly. Note: SMARTLING_ACCOUNT_ID is not natively supported by the CLI — this MCP server injects it as a -a flag automatically when the env var is present.

PROJECTS projects list Display all projects in the account (fields: ID, ACCOUNT, NAME, LOCALE, STATUS) projects info Show details about the current project projects locales Display all target project locales with descriptions -s, --short Show locale IDs only --source Display only the source locale --format '' Custom output format, e.g. --format='{{if .Enabled}}{{.LocaleID}}{{end}} '

FILES files list [''] List files in project --short Show URIs only --format '' Custom output format files push [] Upload a file --type Override file type detection (e.g. json, plaintext) --directive Set file-level directive -b, --branch Add branch prefix to URI; use @auto to detect git branch files pull [''] Download translated files --source Download source file only -l Target locale (repeatable: -l es-ES -l fr-FR) files delete [''] Delete files (also accepts piped URIs via -) files rename Rename a file URI in the project files status Show translation progress for all files

MT (Machine Translation) mt detect '' Detect source language of files -s, --short Output locale code only --type Override file type detection --input-directory Source directory for input files --output table|json Output format mt translate '' Machine translate files to target locale(s) -l, --target-locale Target locale (repeatable: -l es-ES -l fr) --source-locale Source language (auto-detected if omitted) --input-directory Source directory for input files --output-directory Destination directory for translated files --type Override file type detection

GLOSSARIES glossaries list List glossaries in the account --name Filter by name --output simple|table|json Output format glossaries create Create a new glossary --locale Add a locale (repeatable) --description Optional description --verification-mode Enable verification mode --fallback-locale :<to[,to]> Fallback locale mapping (repeatable) glossaries export <uid|name> [file] Export glossary entries to a file --file-type csv|xlsx|tbx Export file format (required) --tbx-version v2|v3 TBX version (required when --file-type=tbx) --focus-locale Focus locale for the export --locale Include locale in export (repeatable) --skip-entries Skip glossary entries in the export --filter-query Filter: free-text query to match entries --filter-entry-state Filter: entry state to match --filter-locale Filter: locale ID (repeatable) --filter-entry-uid Filter: entry UID (repeatable) --filter-missing-translation-locale Filter: locale missing a translation --filter-present-translation-locale Filter: locale with a translation --filter-created-date Filter: created date (e.g. 2026-01-02T15:04:05Z) --filter-last-modified-date Filter: last modified date glossaries import <uid|name> Import glossary from CSV/XLSX/TBX --archive-mode Archive entries missing from the imported file --media-type Override media type detection

EXAMPLES projects list projects locales --short projects locales --format='{{if .Enabled}}{{.LocaleID}}{{end}} ' files list files list '.json' --short files push /smartling/en/strings.json en/strings.json --type json files push /smartling/en/strings.json en/strings.json files push '.md' --type plaintext -b feature-branch files push '.md' --branch '@auto' files pull '.json' -l es-ES -l fr-FR --directory /smartling files pull --source --directory /smartling files delete '**.json' files rename old/path.json new/path.json files status mt detect document.txt mt detect '.txt' --output json mt translate document.txt -l es-ES mt translate '.txt' -l es -l fr --output-directory /smartling/translations/ glossaries list glossaries list --name "Product Terms" glossaries create "Product Terms" --locale es-ES --locale fr-FR glossaries export "Product Terms" /smartling/glossary.xlsx --file-type xlsx glossaries export "Product Terms" /smartling/glossary.tbx --file-type tbx --tbx-version v3 glossaries export "Product Terms" /smartling/glossary.csv --file-type csv --locale es-ES glossaries import "Product Terms" /smartling/glossary.xlsx glossaries import "Product Terms" /smartling/glossary.xlsx --archive-mode

Full command reference: https://github.com/Smartling/smartling-cli/wiki/Projects-command-examples https://github.com/Smartling/smartling-cli/wiki/Files-command-examples https://github.com/Smartling/smartling-cli/wiki/MT-command-examples

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
argsYesArguments to pass to smartling-cli, exactly as on the command line.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description thoroughly discloses behavior: automatic injection of SMARTLING_ACCOUNT_ID, the double-path pitfall, the need for --directory on pulls, and the availability of --help for each command. It also lists command categories with flags, making side effects (delete, import) transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but extremely well-structured with clear sections, code examples, and front-loaded invocation instructions. Every section contributes practical value, and the verbose length is justified by the tool's broad CLI wrapper scope.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers all major command groups (projects, files, mt, glossaries), global flags, environment variable handling, examples, and links to full documentation. With no output schema, it compensates by showing expected outputs in examples and directing users to --help for deeper detail.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single 'args' parameter has a minimal schema description, but the tool description massively enriches it with exact formatting rules, file URI conventions, examples, and flag explanations, providing far more meaning than the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool runs any smartling-cli command with arguments passed as a single string. It provides extensive command syntax, examples, and scope, making the purpose unmistakable even without explicit sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives detailed operational guidance (file URI conventions, global flags, account ID injection) but does not specify when to use this tool versus the sibling tools (smartling-ls, smartling-cat) and lacks explicit exclusions or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Smartling/smartling-cli-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server