Localizable XStrings MCP Server
This MCP server automates the localization workflow for iOS/macOS Xcode String Catalog (.xcstrings) files using OpenAI API for translations.
Core Features:
Extract localization data: Get supported language codes, all localization keys, and base language key-value pairs from .xcstrings files
Preview or apply translations: Translate strings to target languages either for preview or direct application to the file
Selective translation: Translate only missing translations for a specific language or translate individual keys to multiple languages simultaneously
Context-aware translation: Optionally provide app descriptions to improve translation quality
Batch processing: Handle large translation jobs with chunked processing (50 strings per chunk) and async concurrency
File structure preservation: Maintain the original .xcstrings file structure and metadata when applying translations
Integration with Claude Code: Available as tools within Claude Code environment for seamless localization workflows
Provides tools for working with iOS Localizable.xcstrings files, enabling automated translation workflows and localization management for iOS projects using Xcode String Catalogs.
Supports localization management for macOS projects using Xcode String Catalogs, offering tools to extract, translate, and apply translations to .xcstrings files.
Uses OpenAI's API for automated translation of strings, with support for batch processing, chunked translation, and customizable model selection for cost-effective localization.
Works with Xcode 15+ String Catalog files (.xcstrings), providing tools to extract language information, manage localization keys, and apply translations while preserving file structure.
Click on "Install 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., "@Localizable XStrings MCP Servertranslate all strings in Localizable.xcstrings to Spanish"
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.
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
Clone the repository:
git clone git@github.com:iamnotagentleman/localizable-xcstrings-mcp.git
cd localizable-xcstrings-mcpInstall dependencies with uv:
uv syncConfiguration
Get an OpenAI API key from platform.openai.com
Create a .env file and add your OpenAI API key:
OPENAI_API_KEY=your_openai_api_key_hereOptional: 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 filesTRANSLATION_TEMPERATURE: Control translation creativity (0.0-1.0)TRANSLATION_MAX_CONCURRENT_CHUNKS: Limit concurrent API requestsTRANSLATION_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
Get Languages: Extract supported language codes from .xcstrings files
Get Keys: List all localization keys
Get Base Strings: Extract base language key-value pairs
Translate: Preview translations using OpenAI API
Apply Translations: Translate and apply to .xcstrings files
Apply Missing: Translate and apply only missing translations for a target language
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 sync2. Add to Claude Code
Use the fastmcp install command:
claude mcp add localizable-xcstrings --scope user -- uv run --with fastmcp fastmcp run server.py3. 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_toolget_keys_toolget_base_strings_tooltranslate_toolapply_toolapply_missing_tooltranslate_key_tool
Example Workflow
Extract information from your .xcstrings file:
Use get_languages_tool with path to your Localizable.xcstrings fileGet all localization keys:
Use get_keys_tool to see all string identifiersTranslate 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 keyTranslate 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 |
| Yes | - | Your OpenAI API key |
| No |
| OpenAI model for translations |
| 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
Fork the repository
Create a feature branch
Make your changes
Add tests for new functionality
Run the test suite
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 toolsapply_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
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| target_language | Yes | ||
| app_description | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| target_language | Yes | ||
| app_description | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| key | Yes | ||
| target_languages | Yes | ||
| app_description | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| target_language | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
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.
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.
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.
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
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
Run App Store Connect from your IDE: pricing, listings, screenshots, releases, AI visibility.
Manage translation projects, phrases and locales with secure organization-scoped tools and views.
Localization for AI agents: projects, languages, glossaries and translations from your agent
Generate designed, localized App Store screenshot sets from your raw app captures.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables translation of JSON i18n files to multiple languages using various AI providers (Google Gemini, OpenAI, Ollama/DeepSeek) with intelligent caching and deduplication.295-
- AlicenseBqualityCmaintenanceProvides programmatic access to Xcode functionality, enabling AI assistants to create, build, test, and manage iOS/macOS projects directly.3375MIT
- FlicenseAqualityDmaintenanceEnables automatic discovery and fast searching of translation files in projects, supporting partial/exact key-value matching with file watching and multiple translation file formats.2-
- AlicenseNot gradedqualityCmaintenanceLocalization as code — push, pull, translate, and extract strings from code with AI. 7 MCP tools for type-safe i18n across 182 languages.1872MIT
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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