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 "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Localizable XStrings MCP Server translate 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: string-catalog-mcp
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
Inputs: file_path (required), target_language (required), app_description. Returns: result
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
Inputs: file_path (required), target_language (required), app_description. Returns: result
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
Inputs: file_path (required). Returns: result
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
Inputs: file_path (required). Returns: result
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
Inputs: file_path (required). Returns: result
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
Inputs: file_path (required), key (required), target_languages (required), app_description. Returns: result
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
Inputs: file_path (required), target_language (required). Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 7 tools
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
Related MCP Connectors
Manage app translations: find and create keys, draft translations, commit and ship OTA releases.
Localize iOS and Android apps: coverage, missing strings, glossary-aware AI drafts and file sync.
Read Localazy projects, files, keys and glossary; submit translations, import keys, AI suggestions.
AI-native translation management: push translation files, translate, review and audit strings.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceLocalization as code — push, pull, translate, and extract strings from code with AI. 7 MCP tools for type-safe i18n across 182 languages.199 npm2MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to read, search, and update Xcode String Catalog (.xcstrings) files for iOS/macOS localization.11 npm12MIT
- AlicenseAqualityBmaintenanceAI localization from your editor — translate an app's string files into 46 languages with placeholder-safe, reproducible output. Eleven formats (JSON, .arb, .po, .strings, Android XML and more), and every translation is read back and checked before it lands.7788 PyPIMIT

airstrings-mcpofficial
AlicenseAqualityBmaintenanceManage app strings, locales, and A/B string variants, then publish Ed25519-signed string bundles for over-the-air text updates in iOS, Android, web, and React Native apps.17MIT