Skip to main content
Glama
iamnotagentleman

Localizable XStrings MCP Server

Localizable XStrings MCP Server

A Model Context Protocol (MCP) server that provides tools for working with iOS Localizable.xcstrings files. This tool enables automated translation workflows and localization management for iOS/macOS projects using Xcode String Catalogs.

Features

  • Extract Language Support: Get all supported language codes from .xcstrings files

  • Key Management: Extract all localization keys and base language strings

  • Automated Translation: Translate strings using OpenAI API

  • Batch Processing: Chunked translation (50 strings per chunk) with async concurrency

  • File Management: Apply translations back to .xcstrings files while preserving structure

  • Cost-Effective: Uses OpenAI API for translations

Related MCP server: Xcode MCP Server

Setup

Prerequisites

  • Python 3.12+

  • uv (Python package manager)

  • OpenAI API key (for translation features)

Installation

  1. Clone the repository:

git clone git@github.com:iamnotagentleman/localizable-xcstrings-mcp.git
cd localizable-xcstrings-mcp
  1. Install dependencies with uv:

uv sync

Configuration

  1. Get an OpenAI API key from platform.openai.com

  2. Create a .env file and add your OpenAI API key:

    OPENAI_API_KEY=your_openai_api_key_here
  3. Optional: Customize other settings in the .env file:

    • OPENAI_MODEL: Choose the translation model (default: gpt-4o-mini)

    • TRANSLATION_CHUNK_SIZE: Adjust batch size for large files

    • TRANSLATION_TEMPERATURE: Control translation creativity (0.0-1.0)

    • TRANSLATION_MAX_CONCURRENT_CHUNKS: Limit concurrent API requests

    • TRANSLATION_RATE_LIMIT_DELAY: Delay between API calls

Usage

Running the MCP Server

Start the server with:

uv run src/localizable_xstrings_mcp/server.py 

This will launch a FastMCP interface where you can:

  • Upload .xcstrings files

  • Extract language information and keys

  • Translate strings to target languages

  • Apply translations back to files

Available Tools

  1. Get Languages: Extract supported language codes from .xcstrings files

  2. Get Keys: List all localization keys

  3. Get Base Strings: Extract base language key-value pairs

  4. Translate: Preview translations using OpenAI API

  5. Apply Translations: Translate and apply to .xcstrings files

  6. Apply Missing: Translate and apply only missing translations for a target language

  7. Translate Key: Translate specific keys to multiple languages

Adding to Claude Code

To use this MCP server with Claude Code, follow these steps:

1. Install and Configure

First, ensure the package is installed in your Python environment:

uv sync

2. Add to Claude Code

Use the fastmcp install command:

claude mcp add localizable-xcstrings --scope user -- uv run --with fastmcp fastmcp run server.py

3. Restart Claude Code

After installation, restart Claude Code to load the new MCP server.

4. Verify Installation

In Claude Code, you should now have access to these tools:

  • get_languages_tool

  • get_keys_tool

  • get_base_strings_tool

  • translate_tool

  • apply_tool

  • apply_missing_tool

  • translate_key_tool

Example Workflow

  1. Extract information from your .xcstrings file:

    Use get_languages_tool with path to your Localizable.xcstrings file
  2. Get all localization keys:

    Use get_keys_tool to see all string identifiers
  3. Translate to a new language:

    Use apply_tool with target language (e.g., "de" for German)
    Ensure your .env file is properly configured with your OpenAI API key
  4. Translate specific keys:

    Use translate_key_tool for individual string translations

Environment Variables

All configuration is managed through environment variables in the .env file:

Variable

Required

Default

Description

OPENAI_API_KEY

Yes

-

Your OpenAI API key

OPENAI_MODEL

No

gpt-4o-mini

OpenAI model for translations

OPENAI_BASE_URL

No

-

Custom API base URL

File Format Support

This tool works with Xcode 15+ String Catalog files (.xcstrings). These files use a JSON structure to store localized strings and metadata.

Translation Features

  • Chunked Processing: Large translation jobs are split into 50-string chunks

  • Async Concurrency: Up to 3 chunks processed simultaneously

  • Token Limit Protection: Prevents API context limit issues

  • Progress Reporting: Shows processing status for large jobs

Contributing

  1. Fork the repository

  2. Create a feature branch

  3. Make your changes

  4. Add tests for new functionality

  5. Run the test suite

  6. Submit a pull request

Support

For issues and questions:

  • Check the test files for usage examples

  • Open an issue on the repository

Available Tools

7 tools
apply_missing_toolA
MCP tool to apply only missing translations for a target language in xcstrings file.
Only translates keys that don't already have translations in the target language.

Args:
    file_path (str): Path to the .xcstrings file
    target_language (str): Target language code
    app_description (str): Optional description of the app for better translation context

Returns:
    str: Application result with newly translated keys or error message
ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes
target_languageYes
app_descriptionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the tool's selective translation behavior and mentions optional context for better translations, but doesn't cover important aspects like whether this is a read-only or mutating operation, what permissions are needed, error handling specifics, or rate limits. The description adds some value but leaves gaps in behavioral understanding.

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 efficiently structured with a clear purpose statement followed by parameter explanations and return value information. Every sentence earns its place, and the information is front-loaded with the core functionality stated first. No wasted words or redundant information.

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

Completeness4/5

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

Given the tool's moderate complexity (3 parameters, mutation operation implied), no annotations, and the presence of an output schema, the description does well but has some gaps. It explains parameters and the selective translation behavior, and the output schema handles return values. However, for a tool that likely modifies files, more behavioral context about safety, permissions, or error conditions would improve completeness.

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

Parameters4/5

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

With 0% schema description coverage, the description must compensate for the lack of parameter documentation in the schema. It successfully explains all three parameters: file_path (path to .xcstrings file), target_language (language code), and app_description (optional context). The description adds meaningful semantics beyond what the bare schema provides, though it doesn't specify format requirements (e.g., language code format).

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 the specific action ('apply only missing translations'), resource ('.xcstrings file'), and scope ('for a target language'). It distinguishes itself from siblings by specifying it only translates keys without existing translations, unlike 'apply_tool' or 'translate_tool' which might handle all translations.

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

Usage Guidelines4/5

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

The description provides clear context about when to use this tool ('Only translates keys that don't already have translations in the target language'), which helps differentiate it from other translation-related tools. However, it doesn't explicitly state when NOT to use it or name specific alternatives among the sibling tools.

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

apply_toolC
MCP tool to translate and apply translations to xcstrings file.

Args:
    file_path (str): Path to the .xcstrings file
    target_language (str): Target language code
    app_description (str): Optional description of the app for better translation context

Returns:
    str: Application result with translated keys or error message
ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes
target_languageYes
app_descriptionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions translation and application to a file, implying a write operation, but doesn't cover critical aspects like permissions needed, whether the operation is destructive or reversible, rate limits, or error handling beyond a generic 'error message.' For a tool that modifies files, this is a significant gap in transparency.

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

Conciseness4/5

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

The description is well-structured with clear sections for purpose, arguments, and returns, making it easy to parse. It's concise, with each sentence serving a purpose, though it could be slightly more front-loaded by emphasizing the core action earlier. There's minimal waste, but it's not perfectly optimized for immediate understanding.

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

Completeness3/5

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

Given the complexity of a file translation tool with 3 parameters and no annotations, the description is moderately complete. It explains the purpose and parameters, and an output schema exists, so return values don't need elaboration. However, it lacks details on behavioral traits like side effects or error conditions, making it adequate but with clear gaps for safe operation.

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

Parameters3/5

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

The description includes an 'Args' section that lists parameters with brief explanations, adding meaning beyond the input schema, which has 0% description coverage. It clarifies that 'app_description' is optional and for 'better translation context.' However, it doesn't detail formats (e.g., for 'target_language' codes) or provide examples, so it only partially compensates for the schema's lack of descriptions.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'translate and apply translations to xcstrings file.' It specifies the verb ('translate and apply') and resource ('xcstrings file'), making the function understandable. However, it doesn't explicitly differentiate from sibling tools like 'translate_tool' or 'apply_missing_tool,' which might have overlapping functions, so it doesn't reach the highest score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With sibling tools such as 'translate_tool' and 'apply_missing_tool,' there's no indication of context, prerequisites, or exclusions. This lack of differentiation leaves the agent without clear usage instructions.

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

get_base_strings_toolB
MCP tool to get base language strings from xcstrings file.

Args:
    file_path (str): Path to the .xcstrings file

Returns:
    str: Base language strings or error message
ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden for behavioral disclosure. It mentions 'Returns: str: Base language strings or error message' which hints at error handling, but lacks details on permissions, file format requirements, rate limits, or what constitutes valid input. For a file-reading tool with zero annotation coverage, this leaves significant behavioral gaps.

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 extremely concise and well-structured: purpose statement, Args section with parameter, and Returns section. Every sentence earns its place with no redundancy. It's front-loaded with the core purpose, making it easy for an agent to quickly understand the tool's function.

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

Completeness3/5

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

Given one parameter with 0% schema coverage and an output schema (implied by Returns statement), the description is minimally complete. It covers the parameter and return value but lacks context about file handling, error conditions, or integration with sibling tools. For a simple read operation, this is adequate but leaves room for improvement in guiding effective use.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It documents the single parameter 'file_path' with type and purpose, matching the schema. However, it doesn't add meaning beyond the schema (e.g., file format expectations, path validation). With one parameter fully covered but no extra insights, this meets the baseline for adequate parameter documentation.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'get base language strings from xcstrings file' - a specific verb (get) and resource (base language strings from xcstrings file). It distinguishes from siblings like 'get_keys_tool' and 'get_languages_tool' by specifying 'base language strings' rather than keys or languages. However, it doesn't explicitly contrast with all siblings, keeping it at 4 rather than 5.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'get_keys_tool' or 'get_languages_tool'. It doesn't mention prerequisites (e.g., file existence), use cases, or exclusions. The agent must infer usage from the purpose alone, which is insufficient for optimal tool selection.

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

get_keys_toolC
MCP tool to get all localization keys from xcstrings file.

Args:
    file_path (str): Path to the .xcstrings file

Returns:
    str: List of all keys or error message
ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool reads from a file and returns a list or error, but lacks details on permissions needed, error handling specifics, file format expectations, or performance characteristics. This is a significant gap for a tool with no annotation coverage.

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

Conciseness4/5

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

The description is appropriately sized and front-loaded: the first sentence states the purpose clearly, followed by structured sections for args and returns. There's no wasted text, though the 'MCP tool' prefix is slightly redundant. Overall, it's efficient and well-organized.

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

Completeness3/5

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

Given the tool's moderate complexity (file reading with one parameter) and the presence of an output schema (which covers return values), the description is minimally complete. It explains the purpose and parameters but lacks behavioral details and usage guidelines. With no annotations, it should do more to be fully helpful, but it meets basic requirements.

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

Parameters3/5

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

The description adds minimal semantics beyond the input schema: it specifies that 'file_path' is a 'Path to the .xcstrings file', which clarifies the file type. However, with 0% schema description coverage and only one parameter, this is adequate but not comprehensive. The baseline for low coverage is compensated slightly, but not fully.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'get all localization keys from xcstrings file' with a specific verb ('get') and resource ('localization keys from xcstrings file'). It distinguishes from siblings like 'get_languages_tool' (which gets languages) and 'get_base_strings_tool' (which gets base strings), but doesn't explicitly contrast them, so it's not a perfect 5.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose this over other sibling tools like 'get_base_strings_tool' or 'get_languages_tool', nor does it specify prerequisites or exclusions. Usage is implied by the purpose, but no explicit context is given.

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

get_languages_toolC
MCP tool to get supported languages from xcstrings file.

Args:
    file_path (str): Path to the .xcstrings file

Returns:
    str: JSON string of supported languages or error message
ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions that the tool returns 'JSON string of supported languages or error message,' which gives some output behavior. However, it lacks details on permissions, file access requirements, error conditions, or performance characteristics, which are important for a file-reading operation.

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

Conciseness4/5

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

The description is appropriately sized and front-loaded, with the core purpose stated first. The 'Args' and 'Returns' sections are structured but slightly redundant since an output schema exists. Every sentence adds value, though it could be more streamlined by omitting the return explanation given the output schema.

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

Completeness3/5

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

Given the tool's simplicity (1 parameter, no annotations, but with an output schema), the description is minimally complete. The output schema handles return values, so the description doesn't need to explain those. However, for a file-based tool, it lacks context on error handling, file format expectations, or integration with sibling tools, leaving gaps in usability.

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

Parameters3/5

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

The description adds minimal semantics beyond the input schema. It specifies that 'file_path' is a 'Path to the .xcstrings file,' which clarifies the expected file type. However, with 0% schema description coverage, the description doesn't fully compensate by detailing format constraints, examples, or validation rules for the parameter.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'get supported languages from xcstrings file.' It specifies the verb ('get'), resource ('supported languages'), and source ('xcstrings file'), making the function unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'get_keys_tool' or 'get_base_strings_tool', which likely retrieve different data from the same file type.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools, prerequisites, or specific contexts for usage. The only implied usage is when languages are needed from an xcstrings file, but this is too vague for effective tool selection.

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

translate_key_toolB
MCP tool to translate a specific key to multiple target languages and apply translations.

Args:
    file_path (str): Path to the .xcstrings file
    key (str): The specific key to translate
    target_languages (str): Comma-separated list of target language codes (e.g., "es,fr,de")
    app_description (str): Optional description of the app for better translation context

Returns:
    str: Translation results or error message
ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes
keyYes
target_languagesYes
app_descriptionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions 'apply translations' but doesn't clarify what this entails—whether it modifies the .xcstrings file directly, requires write permissions, has side effects, or handles errors. For a tool with potential file mutations, this lack of detail is a significant gap.

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

Conciseness4/5

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

The description is efficiently structured with a clear purpose statement followed by parameter and return value sections. Each sentence adds value, such as clarifying parameter formats and the optional nature of 'app_description'. It could be slightly more front-loaded by emphasizing the 'apply' action earlier, but overall it's concise and well-organized.

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

Completeness3/5

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

Given the tool's complexity (4 parameters, potential file mutations) and lack of annotations, the description is moderately complete. It covers parameter semantics adequately and includes an output schema (returns a string), so it doesn't need to explain return values. However, it falls short on behavioral transparency and usage guidelines, which are crucial for a tool that may modify files.

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

Parameters4/5

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

The description adds meaningful context beyond the input schema, which has 0% description coverage. It explains that 'target_languages' is a comma-separated list of codes (e.g., 'es,fr,de') and that 'app_description' provides optional context for translations. This compensates well for the schema's lack of descriptions, though it doesn't detail the format or constraints for 'file_path' and 'key'.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'translate a specific key to multiple target languages and apply translations.' It specifies the verb (translate and apply), resource (key in .xcstrings file), and scope (multiple languages). However, it doesn't explicitly differentiate from sibling tools like 'translate_tool' or 'apply_tool', which likely have overlapping functionality.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'translate_tool', 'apply_tool', and 'apply_missing_tool' available, there's no indication of the specific scenarios or prerequisites for choosing this tool over others, leaving usage context ambiguous.

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

translate_toolC
MCP tool to translate strings to target language and return translated keys.

Args:
    file_path (str): Path to the .xcstrings file
    target_language (str): Target language code

Returns:
    str: Translation result with translated keys or error message
ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes
target_languageYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool translates strings and returns translated keys or an error message, but lacks details on permissions, rate limits, side effects (e.g., whether it modifies the file), or error conditions. This is inadequate for a tool that likely involves file operations and translation processes.

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

Conciseness4/5

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

The description is appropriately sized and front-loaded, starting with the core purpose followed by args and returns. The sentences are efficient, though the 'Args' and 'Returns' sections could be integrated more seamlessly. Overall, it avoids unnecessary verbosity.

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

Completeness3/5

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

Given the tool has an output schema (which covers return values), the description doesn't need to explain returns in detail. However, with no annotations, 2 parameters, and operations involving file translation, the description is minimally adequate but lacks context on error handling, file format specifics, or integration with sibling tools, leaving room for improvement.

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

Parameters3/5

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

The description lists both parameters (file_path and target_language) with brief explanations, adding meaning beyond the schema which has 0% description coverage. However, it doesn't elaborate on format expectations (e.g., valid language codes, file path requirements), leaving gaps. With 2 parameters and low schema coverage, this provides basic but incomplete compensation.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'translate strings to target language and return translated keys.' It specifies the verb (translate), resource (strings/keys), and output (translated keys). However, it doesn't explicitly differentiate from sibling tools like 'translate_key_tool' or 'get_keys_tool,' which appear related to translation/key operations.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It mentions the tool translates strings from a .xcstrings file, but doesn't explain when to choose this over 'translate_key_tool' or other siblings, nor does it specify prerequisites or exclusions for usage.

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

TDQS

B3.3/5.0
Disambiguation3/5

There is significant overlap between translate_tool, apply_tool, and translate_key_tool, as all involve translating strings, which could confuse an agent. However, apply_missing_tool is distinct by focusing only on missing translations, and get_* tools are clearly separate for retrieval purposes.

Naming Consistency4/5

Most tools follow a consistent verb_noun pattern (e.g., get_keys_tool, translate_key_tool), but apply_missing_tool and apply_tool deviate slightly by omitting the noun, which is a minor inconsistency. Overall, the naming is readable and predictable.

Tool Count5/5

With 7 tools, the count is well-scoped for managing xcstrings files, covering retrieval, translation, and application operations. Each tool serves a distinct role in the localization workflow, making the set appropriately sized.

Completeness4/5

The toolset covers key aspects like retrieving base strings, keys, and languages, plus translation and application functions. A minor gap is the lack of tools for updating or deleting translations, but core operations are present, allowing agents to handle most localization tasks.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

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/iamnotagentleman/localizable-xcstrings-mcp'

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