tolgee-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@tolgee-mcp list all translation projects"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
tolgee-mcp
An MCP server that wraps the Tolgee localization platform API, enabling LLMs to manage translation projects, keys, translations, languages, and related workflows.
Quick Start
The only prerequisite is uv.
Claude Desktop
Add to your config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"tolgee": {
"command": "uvx",
"args": ["tolgee-mcp"],
"env": {
"TOLGEE_API_KEY": "your-api-key"
}
}
}
}OpenCode
Add to your opencode.json:
{
"mcp": {
"tolgee": {
"type": "local",
"command": ["uvx", "tolgee-mcp"],
"enabled": true,
"environment": {
"TOLGEE_API_KEY": "your-api-key"
}
}
}
}Other MCP Clients
Any MCP client that supports STDIO servers can use the same pattern:
TOLGEE_API_KEY=your-api-key uvx tolgee-mcpSelf-hosted Tolgee
If you're running your own Tolgee instance, add the TOLGEE_API_URL environment variable:
{
"mcpServers": {
"tolgee": {
"command": "uvx",
"args": ["tolgee-mcp"],
"env": {
"TOLGEE_API_KEY": "your-api-key",
"TOLGEE_API_URL": "https://tolgee.your-domain.com"
}
}
}
}Related MCP server: the-i18n-mcp
Configuration
Variable | Required | Default | Description |
| Yes | — | Your Tolgee API key |
| No |
| Base URL of your Tolgee instance |
Tools
Projects
Tool | Description |
| List all projects accessible to the authenticated user |
| Get details of a specific project |
| Create a new project |
| Update a project's settings |
| Delete a project (irreversible) |
Languages
Tool | Description |
| List all languages in a project |
| Add a new language to a project |
| Update a language's properties |
| Delete a language and all its translations |
Keys
Tool | Description |
| List localization keys with pagination |
| Search keys by name |
| Create a new key with optional translations and namespace |
| Update a key's name |
| Delete one or more keys |
| Batch import keys with translations |
Translations
Tool | Description |
| Get translations with language and pagination filters |
| Set translation values for an existing key |
| Create a key if needed and set its translations |
| Set the state of a translation (e.g. reviewed, translated) |
| Get modification history of a translation |
Export / Import
Tool | Description |
| Export translations (JSON, XLIFF, etc.) |
| Single-step import of translations |
Tags & Namespaces
Tool | Description |
| List all tags in a project |
| Add a tag to a key |
| Remove a tag from a key |
| List all used namespaces |
| Rename a namespace |
Development
git clone https://github.com/ytarfa/tolgee-mcp.git
cd tolgee-mcp
uv sync
TOLGEE_API_KEY=your-api-key uv run tolgee-mcpLicense
MIT
Available Tools
27 toolscreate_keyA
Create a new localization key in a Tolgee project.
Args:
project_id: The numeric ID of the project.
name: The key name (e.g., "button.submit", "greeting.hello").
namespace: Optional namespace for the key.
translations: Optional dict mapping language tags to translation values (e.g., {"en": "Hello", "fr": "Bonjour"}).
Inputs: project_id (required), name (required), namespace, translations. Returns: result
create_languageB
Add a new language to a Tolgee project.
Args:
project_id: The numeric ID of the project.
name: Display name of the language (e.g., "French").
tag: BCP 47 language tag (e.g., "fr", "de", "ja").
Inputs: project_id (required), name (required), tag (required). Returns: result
create_or_update_translationsA
Create a key if it doesn't exist and set its translations. If the key already exists, update its translations.
Args:
project_id: The numeric ID of the project.
key_name: The key name.
translations: Dict mapping language tags to translation text values.
namespace: Optional namespace for the key.
Inputs: project_id (required), key_name (required), translations (required), namespace. Returns: result
create_projectA
Create a new Tolgee project.
Args:
name: The name for the new project.
base_language_tag: BCP 47 language tag for the base language (default: "en").
Inputs: name (required), base_language_tag. Returns: result
delete_keysB
Delete one or more localization keys from a Tolgee project.
Args:
project_id: The numeric ID of the project.
key_ids: List of key IDs to delete.
Inputs: project_id (required), key_ids (required). Returns: result
delete_languageB
Delete a language from a Tolgee project. This removes all translations for this language.
Args:
project_id: The numeric ID of the project.
language_id: The numeric ID of the language to delete.
Inputs: project_id (required), language_id (required). Returns: result
delete_projectA
Delete a Tolgee project. This action is irreversible.
Args:
project_id: The numeric ID of the project to delete.
Inputs: project_id (required). Returns: result
export_translationsA
Export translations from a Tolgee project.
Args:
project_id: The numeric ID of the project.
format: Export format. Supported: "JSON" (default), "XLIFF", "PO", "APPLE_STRINGS_STRINGSDICT", "ANDROID_XML", "FLUTTER_ARB", "PROPERTIES", "YAML_RUBY".
languages: Optional list of language tags to export (e.g., ["en", "fr"]). Exports all languages if not specified.
filter_namespace: Optional namespace to filter exported keys.
Inputs: project_id (required), format, languages, filter_namespace. Returns: result
get_projectB
Get details of a specific Tolgee project.
Args:
project_id: The numeric ID of the project.
Inputs: project_id (required). Returns: result
get_translation_historyB
Get the modification history of a specific translation.
Args:
project_id: The numeric ID of the project.
translation_id: The numeric ID of the translation.
Inputs: project_id (required), translation_id (required). Returns: result
get_translationsA
Get translations for keys in a Tolgee project.
Args:
project_id: The numeric ID of the project.
languages: Optional list of language tags to filter by (e.g., ["en", "fr"]). If not specified, all languages are returned.
page: Page number (0-indexed, default 0).
size: Number of items per page (default 20).
Inputs: project_id (required), languages, page, size. Returns: result
import_keysB
Import localization keys with translations into a Tolgee project.
Each key object should have a "name" field and a "translations" dict mapping language tags to values.
Args:
project_id: The numeric ID of the project.
keys: List of key objects, each with "name" (str) and "translations" (dict of language_tag -> value).
Example keys format:
[{"name": "greeting", "translations": {"en": "Hello", "fr": "Bonjour"}}]
Inputs: project_id (required), keys (required). Returns: result
import_translationsB
Import translations into a Tolgee project using single-step import.
Each key object should have a "name" and "translations" mapping language tags to values.
Args:
project_id: The numeric ID of the project.
keys: List of key objects with "name" (str) and "translations" (dict of language_tag -> value).
Example:
[{"name": "hello", "translations": {"en": "Hello", "de": "Hallo"}}]
Inputs: project_id (required), keys (required). Returns: result
list_keysB
List localization keys in a Tolgee project.
Args:
project_id: The numeric ID of the project.
page: Page number (0-indexed, default 0).
size: Number of keys per page (default 20).
Inputs: project_id (required), page, size. Returns: result
list_languagesA
List all languages configured in a Tolgee project.
Args:
project_id: The numeric ID of the project.
Inputs: project_id (required). Returns: result
list_namespacesA
List all used namespaces in a Tolgee project.
Args:
project_id: The numeric ID of the project.
Inputs: project_id (required). Returns: result
list_projectsA
List all Tolgee projects accessible to the authenticated user.
Returns a list of projects with their IDs, names, and base language.
Inputs: no named parameters. Returns: result
list_tagsB
List all tags in a Tolgee project.
Args:
project_id: The numeric ID of the project.
page: Page number (0-indexed, default 0).
size: Number of tags per page (default 20).
Inputs: project_id (required), page, size. Returns: result
remove_tag_from_keyB
Remove a tag from a localization key.
Args:
project_id: The numeric ID of the project.
key_id: The numeric ID of the key.
tag_id: The numeric ID of the tag to remove.
Inputs: project_id (required), key_id (required), tag_id (required). Returns: result
search_keysA
Search for localization keys by name in a Tolgee project.
Args:
project_id: The numeric ID of the project.
search: Search query string to match against key names.
Inputs: project_id (required), search (required). Returns: result
set_translationsC
Set translation values for an existing key in a Tolgee project.
Args:
project_id: The numeric ID of the project.
key_name: The name of the existing key.
translations: Dict mapping language tags to translation text values (e.g., {"en": "Hello", "fr": "Bonjour"}).
Inputs: project_id (required), key_name (required), translations (required). Returns: result
set_translation_stateA
Set the state of a specific translation.
Args:
project_id: The numeric ID of the project.
translation_id: The numeric ID of the translation (not the key ID).
state: The new state. Valid values: "UNTRANSLATED", "TRANSLATED", "REVIEWED".
Inputs: project_id (required), translation_id (required), state (required). Returns: result
tag_keyB
Add a tag to a localization key. Creates the tag if it doesn't exist.
Args:
project_id: The numeric ID of the project.
key_id: The numeric ID of the key to tag.
tag_name: The name of the tag to add.
Inputs: project_id (required), key_id (required), tag_name (required). Returns: result
update_keyA
Update a localization key's name.
Args:
project_id: The numeric ID of the project.
key_id: The numeric ID of the key to update.
name: The new name for the key.
Inputs: project_id (required), key_id (required), name (required). Returns: result
update_languageB
Update a language's properties in a Tolgee project.
Args:
project_id: The numeric ID of the project.
language_id: The numeric ID of the language to update.
name: The new display name for the language.
Inputs: project_id (required), language_id (required), name (required). Returns: result
update_namespaceC
Rename a namespace in a Tolgee project.
Args:
project_id: The numeric ID of the project.
namespace_id: The numeric ID of the namespace to rename.
name: The new name for the namespace.
Inputs: project_id (required), namespace_id (required), name (required). Returns: result
update_projectB
Update an existing Tolgee project's settings.
Args:
project_id: The numeric ID of the project to update.
name: The new name for the project.
Inputs: project_id (required), name (required). Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 27 tools
Several tools overlap heavily: import_keys and import_translations are nearly identical, and set_translations, create_or_update_translations, and create_key all offer ways to write translations. An agent could easily choose the wrong write operation when the intended behavior is upsert versus update-existing versus bulk import.
All tools follow a consistent snake_case verb_noun pattern: create_, update_, delete_, list_, get_, set_, import_, export_. The similar names like import_keys and import_translations are confusing semantically, but they do not violate the naming convention.
At 27 tools, the server exceeds the range where each tool clearly earns its place, and some tools appear redundant rather than complementary. Trimming duplicate import/write operations would reduce the surface to a more coherent size.
The toolset covers project, language, key, translation, tag, and namespace lifecycle needs, including import/export and translation history. Minor gaps exist such as no explicit translation deletion or tag rename, but agents can work around them with existing operations.
Maintenance
Related MCP Connectors
MCP server for Crowdin — projects, files, strings, translation progress, tasks, and members.
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
MCP server for LingoHub — localization projects, resources, exports and repository pushes.
Official MCP server for POEditor, the translation management system. Hosted, OAuth 2.1.
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server that provides LLM agents with full access to the Texterify translation management API. It enables users to search, create, update, and delete translation keys and their values directly through natural language within their development environment.34 npm1ISC
- AlicenseAqualityBmaintenanceMCP server for managing i18n translation files — gives your AI agent full control over your app's translations without dumping entire locale files into context.15251 npm11MIT
- FlicenseBqualityDmaintenanceAn MCP server for managing Lokalise translations, enabling creation, retrieval, and deletion of translation keys.3-
- AlicenseNot gradedqualityCmaintenanceMCP server for translating JSON localization files via DeepL API or local LLMs, enabling agents to estimate, check, and run translations.1MIT