Skip to main content
Glama

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-mcp

Self-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

TOLGEE_API_KEY

Yes

—

Your Tolgee API key

TOLGEE_API_URL

No

https://app.tolgee.io

Base URL of your Tolgee instance

Tools

Projects

Tool

Description

list_projects

List all projects accessible to the authenticated user

get_project

Get details of a specific project

create_project

Create a new project

update_project

Update a project's settings

delete_project

Delete a project (irreversible)

Languages

Tool

Description

list_languages

List all languages in a project

create_language

Add a new language to a project

update_language

Update a language's properties

delete_language

Delete a language and all its translations

Keys

Tool

Description

list_keys

List localization keys with pagination

search_keys

Search keys by name

create_key

Create a new key with optional translations and namespace

update_key

Update a key's name

delete_keys

Delete one or more keys

import_keys

Batch import keys with translations

Translations

Tool

Description

get_translations

Get translations with language and pagination filters

set_translations

Set translation values for an existing key

create_or_update_translations

Create a key if needed and set its translations

set_translation_state

Set the state of a translation (e.g. reviewed, translated)

get_translation_history

Get modification history of a translation

Export / Import

Tool

Description

export_translations

Export translations (JSON, XLIFF, etc.)

import_translations

Single-step import of translations

Tags & Namespaces

Tool

Description

list_tags

List all tags in a project

tag_key

Add a tag to a key

remove_tag_from_key

Remove a tag from a key

list_namespaces

List all used namespaces

update_namespace

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-mcp

License

MIT

Available Tools

27 tools
create_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

    B3.2/5.0

    Scored across 27 tools

    Disambiguation2/5

    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.

    Naming Consistency5/5

    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.

    Tool Count2/5

    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.

    Completeness4/5

    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

    ActivityInactive
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers