Docs

Getting Started

The Lara Translate MCP Server brings the full power of Lara’s translation capabilities to environments that support the Model Context Protocol (MCP), such as Claude Desktop and other LLM-integrated tools. By acting as a specialized translation agent, it enables developers to enrich their AI workflows with accurate, context-aware, and culturally nuanced translations.

What It Does

At its core, the MCP Server acts as a bridge between Lara’s Models and the MCP ecosystem. It allows you to offload translation tasks from general-purpose language models to a specialized engine built specifically for translation, ensuring higher quality—especially for non-English content—and more consistent domain handling.

The server supports features such as automatic source language detection, context injection, and custom instructions to guide translation behavior. These make it possible to tailor the translation output to the tone, style, or intent of the interaction—whether it’s a legal document, a casual conversation, or an in-app UI.

Translation Tools

The Lara Translate MCP Server exposes a single core tool: translate. This tool handles multilingual translation requests and supports advanced options to improve output quality and control behavior.

translate

Use the translate tool to perform translations between Supported Languages pairs. Each request allows you to pass multiple text blocks, along with optional metadata to refine translation quality and accuracy.

Supported input fields:

  • text (array): A list of text blocks to be processed. Each block must contain:
    • text (string): The content to translate.
    • translatable (boolean): Whether this block should be translated.
    • source (optional string): ISO code of the source language (e.g., "fr-FR"). If omitted, language detection will be used.
    • target (string): ISO code of the target language (e.g., "en-US").
    • context (optional string): Contextual information to guide translation (e.g., domain, tone, situation).
    • instructions (optional string array): One or more translation instructions (e.g., "Use formal tone", "Avoid slang").
    • source_hint (optional string): Additional hint to improve language detection (e.g., "This is likely in Catalan").

Response:

The response is an array of translated text blocks. The structure matches the input format, maintaining the original order and translatable values:

[
  {
    "text": "Translated text",
    "translatable": true
  }
]

Translation Memories Tools

The Lara Translate MCP Server exposes several tools to list, create and manage translations memories. Translation memories are crucial to enhance the translation quality and align to your business needs.

list_memories

Use the list_memories tool to obtain a list of translation memories linked to your accounts and the related details.

Response:

The response is an array of translation memories linked to your account.

[
    {
      "id": "mem_XYZ",
      "secret": "sec_XYZ",
      "ownerId": "acc_XYZ",
      "collaboratorsCount": 1,
      "createdAt": "2025-04-17T15:24:19.867Z",
      "updatedAt": "2025-04-17T15:24:19.881Z",
      "sharedAt": "2025-04-17T15:24:19.874Z",
      "name": "Memory Name"
    }
]

create_memory

Use the create_memory tool to create a new translation memory and link it to your account.

Supported input fields:

  • name (string): Name of the new memory
  • external_id (optional string): ID of the memory to import from MyMemory (e.g., 'ext_my_[MyMemory ID]')

Response:

The response is the id of the newly created translation memory.

[
    {
      "id": "mem_XYZ",
      "secret": "sec_XYZ",
      "ownerId": "acc_XYZ",
      "collaboratorsCount": 1,
      "createdAt": "2025-04-17T15:24:19.867Z",
      "updatedAt": "2025-04-17T15:24:19.881Z",
      "sharedAt": "2025-04-17T15:24:19.874Z",
      "name": "New Memory"
    }
 ]

update_memory

Use the update_memory tool to update a translation memory name, by providing the ID of an existing translation memory.

Supported input fields:

  • id (string): ID of the memory to update
  • name (string): The new name for the memory

Response:

The response is the updated memory data.

[
    {
      "id": "mem_XYZ",
      "secret": "sec_XYZ",
      "ownerId": "acc_XYZ",
      "collaboratorsCount": 1,
      "createdAt": "2025-04-17T15:24:19.867Z",
      "updatedAt": "2025-04-17T15:24:19.881Z",
      "sharedAt": "2025-04-17T15:24:19.874Z",
      "name": "Updated Memory"
    }
 ]

delete_memory

Use the delete_memory tool to delete a translation memory, by providing the ID of an existing translation memory.

Supported input fields:

  • id (string): ID of the memory to update

Response:

The response is the deleted memory data.

[
    {
      "id": "mem_XYZ",
      "secret": "sec_XYZ",
      "ownerId": "acc_XYZ",
      "collaboratorsCount": 1,
      "createdAt": "2025-04-17T15:24:19.867Z",
      "updatedAt": "2025-04-17T15:24:19.881Z",
      "sharedAt": "2025-04-17T15:24:19.874Z",
      "name": "Deleted Memory"
    }
]

add_translation

Use the add_Translation tool to add a translation unit to an existing memory, by providing the ID of an existing translation memory.

Supported input fields:

  • id (string | string[]): ID or IDs of memories where to add the translation unit
  • source (string): Source language code
  • target (string): Target language code
  • sentence (string): The source sentence
  • translation (string): The translated sentence
  • tuid (optional string): Translation Unit unique identifier
  • sentence before (optional string): Context sentence before
  • sentence after (optional string): Context sentence after

Response:

The response is the added translation details. The progress field can be used to monitor the progress of the translation job: the number 1 indicates that the job is already finished, otherwise it's possible to use the check_import_status method to get an update on the status of the job.

[
    {
        "id": "JobID",
        "begin": 10918552,
        "end": 10918552,
        "channel": 1,
        "size": 1,
        "progress": 0
    }
]

delete_translation

Use the delete_Translation tool to delete a translation unit to an existing memory, by providing the ID of an existing translation memory.

Supported input fields:

  • id (string): ID or the memory where to delete the translation unit
  • source (string): Source language code
  • target (string): Target language code
  • sentence (string): The source sentence
  • translation (string): The translated sentence
  • tuid (optional string): Translation Unit unique identifier
  • sentence before (optional string): Context sentence before
  • sentence after (optional string): Context sentence after

Response:

The response is the deleted translation details.

[
    {
        "id": "JobID",
        "begin": 10918552,
        "end": 10918552,
        "channel": 1,
        "size": 1,
        "progress": 0
    }
]

import_tmx

Use the import_tmx tool to import a TMX file into a translation memory.

Supported input fields:

  • id (string): ID or the memory to update
  • tmx (file path): The path of the TMX file to upload
  • gzip (boolean): Indicates if the file is compressed (.gz)

Response:

The response is the import details linked to the TMX file.

[
    {
        "id": "JobID",
        "begin": 10918552,
        "end": 10918552,
        "channel": 1,
        "size": 1,
        "progress": 0
    }
]

check_import_status

Use the check_import_status tool to check the status of a TMX file import.

Supported input fields:

  • id (string): the id of the import job

Response:

The response is the import details linked to the status of the import TMX process.

[
    {
        "id": "JobID",
        "begin": 10918552,
        "end": 10918552,
        "channel": 1,
        "size": 1,
        "progress": 0
    }
]

Translation Workflow

The main tool exposed by the server is translate, which accepts structured input in JSON format. You can send an array of text blocks, specify which ones should be translated, and optionally provide the source language, contextual hints, or specific instructions.

For example, if you're translating the Italian phrase “la terra è rossa” while chatting with a tennis player, you can pass that context into the request. Rather than returning a literal or ambiguous result, the server will understand that “terra” refers to clay and provide the correct translation: “The clay is red.”

This level of nuance is difficult to achieve with general-purpose models and is one of the key benefits of using Lara within MCP-based systems.

Example

Prompt:
Translate with Lara: "la terra è rossa", I'm talking with a tennis player.

Request:

{
  "text": [
    { "text": "la terra è rossa", "translatable": true }
  ],
  "target": "en-US",
  "context": "Conversation with a tennis player"
}

Response

[
  {
    "text": "The clay is red.",
    "translatable": true
  }
]

Setup

API Credentials

To use the Lara Translate MCP Server, you must have valid API credentials.

  1. Visit Lara and subscribe to any plan (including the free one).
  2. Go to the API section in your account dashboard and generate a new pair of credentials.
  3. Store your credentials securely. If lost, you will need to generate a new pair.

More

For more advanced usage, local development instructions, and the latest updates, visit the lara-mcp GitHub repository. There you'll find full documentation on building and running the server locally, contributing to the project, and exploring additional configuration options for Claude Desktop and other MCP-compatible environments.