Multilingual translation for ADK-Rust Enterprise agents. Provides 5 MCP tools across 200+ languages — zero configuration, no API keys required. ADK-Rust Enterprise
Translation MCP Server
Multilingual translation for ADK-Rust Enterprise agents. Provides 5 MCP tools across 200+ languages — zero configuration, no API keys required.
Architecture
Key Principles
- Zero configuration — works out of the box with no API keys or environment variables.
- 200+ languages — covers every major language including African, Asian, and indigenous languages.
- Translation memory — leverages millions of human-verified translations from MyMemory.
- Quality scoring — every translation includes a confidence/quality score.
- Batch support — translate into multiple languages in a single call.
- Registry-ready — ships with
mcp-server.tomlfor automatic ADK-Rust Enterprise onboarding.
Tools
| Tool | Purpose | Risk Class |
|------|---------|------------|
| translate | Translate text between any two languages | Read-only |
| detect_language | Detect the language of input text | Read-only |
| batch_translate | Translate text into multiple target languages at once | Read-only |
| search_translation_memory | Search human-verified translation memory | Read-only |
| list_languages | List supported languages with ISO 639-1 codes | Read-only |
Backends
| Backend | Purpose | Rate Limit | |---------|---------|-----------| | MyMemory | Primary translation engine | 5,000 words/day (anonymous) | | MyMemory (with email) | Extended quota | 30,000 words/day |
Installation
From crates.io
cargo install mcp-translate
Build from source
git clone https://github.com/zavora-ai/mcp-translate
cd mcp-translate
cargo build --release
The binary is at target/release/mcp-translate.
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"translate": {
"command": "mcp-translate"
}
}
}
Kiro
Add to your project's .kiro/settings/mcp.json:
{
"mcpServers": {
"translate": {
"command": "mcp-translate"
}
}
}
Cursor
Add to .cursor/mcp.json in your project root:
{
"mcpServers": {
"translate": {
"command": "mcp-translate"
}
}
}
Windsurf
Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"translate": {
"command": "mcp-translate"
}
}
}
Codex (OpenAI)
Add to ~/.codex/config.json:
{
"mcpServers": {
"translate": {
"command": "mcp-translate"
}
}
}
Open Code
Add to ~/.config/opencode/config.json:
{
"mcp": {
"translate": {
"command": "mcp-translate"
}
}
}
Any MCP Client (Streamable HTTP)
mcp-translate --transport http --port 8080
Then connect your client to http://localhost:8080/mcp.
Docker
docker run -p 8080:8080 ghcr.io/zavora-ai/mcp-translate:latest
Quick Start
Translate text
{
"name": "translate",
"arguments": {
"text": "The future of artificial intelligence is bright",
"source": "en",
"target": "sw"
}
}
Response:
{
"translation": "Mustakabali wa akili bandia ni mzuri",
"source_lang": "en",
"target_lang": "sw",
"quality": 0.85,
"alternatives": [
{
"translation": "Mustakabali wa akili bandia ni mzuri",
"quality": "85",
"source": "Machine Translation"
}
]
}
Detect language
{
"name": "detect_language",
"arguments": {
"text": "Bonjour le monde, comment allez-vous?"
}
}
Response:
{
"detected_language": "fr",
"text_sample": "Bonjour le monde, comment allez-vous?"
}
Batch translate
{
"name": "batch_translate",
"arguments": {
"text": "Hello world",
"source": "en",
"targets": ["fr", "de", "ja", "ar", "sw"]
}
}
Response:
{
"source": "en",
"original": "Hello world",
"translations": [
{ "language": "fr", "translation": "Bonjour le monde" },
{ "language": "de", "translation": "Hallo Welt" },
{ "language": "ja", "translation": "こんにちは、世界。" },
{ "language": "ar", "translation": "مرحبا بكم" },
{ "language": "sw", "translation": "Jambo dunia!" }
]
}
Search translation memory
{
"name": "search_translation_memory",
"arguments": {
"text": "Terms and conditions",
"source": "en",
"target": "fr"
}
}
Response:
{
"query": "Terms and conditions",
"langpair": "en|fr",
"matches": 5,
"results": [
{
"segment": "Terms and Conditions",
"translation": "Termes et conditions",
"quality": "100",
"source": "European Commission",
"last_updated": "2024-03-15"
}
]
}
Configuration
Environment Variables
| Variable | Required | Purpose |
|----------|:--------:|---------|
| MYMEMORY_EMAIL | No | Increases daily quota from 5,000 to 30,000 words |
| RUST_LOG | No | Log level (default: info) |
MCP Server Manifest
server_id = "mcp_translate"
display_name = "Translate"
version = "1.0.0"
domain = "translation"
risk_level = "low"
writes_allowed = "none"
transports = ["stdio"]
governance_gates = []
Supported Languages
Major Languages
| Code | Language | Code | Language | Code | Language |
|:----:|----------|:----:|----------|:----:|----------|
| en | English | fr | French | de | German |
| es | Spanish | pt | Portuguese | it | Italian |
| nl | Dutch | ru | Russian | zh | Chinese |
| ja | Japanese | ko | Korean | ar | Arabic |
| hi | Hindi | bn | Bengali | ur | Urdu |
| tr | Turkish | pl | Polish | uk | Ukrainian |
| vi | Vietnamese | th | Thai | id | Indonesian |
African Languages
| Code | Language | Code | Language | Code | Language |
|:----:|----------|:----:|----------|:----:|----------|
| sw | Swahili | am | Amharic | ha | Hausa |
| yo | Yoruba | ig | Igbo | zu | Zulu |
| af | Afrikaans | rw | Kinyarwanda | so | Somali |
Nordic Languages
| Code | Language | Code | Language | Code | Language |
|:----:|----------|:----:|----------|:----:|----------|
| sv | Swedish | no | Norwegian | da | Danish |
| fi | Finnish | et | Estonian | lv | Latvian |
Special Codes
| Code | Meaning |
|:----:|---------|
| auto | Autodetect source language |
Full list of 200+ languages available via the list_languages tool or at mymemory.translated.net.
Use Cases
Multilingual Customer Support
Agent receives message in unknown language
→ detect_language → "sw" (Swahili)
→ translate (sw→en) → English for agent processing
→ translate (en→sw) → Reply in customer's language
Document Localization
Agent has English documentation
→ batch_translate (en → [fr, de, es, ja, zh])
→ 5 localized versions in one call
Legal/Compliance Translation
Agent needs official translation reference
→ search_translation_memory ("Terms and conditions", en→fr)
→ Returns EU Commission verified translation (quality: 100%)
Content Quality Assurance
Agent receives translation from external source
→ translate (same text, same pair)
→ Compare quality scores and alternatives
→ Flag discrepancies for human review
Testing
# Build
cargo build
# Run (zero config)
cargo run
# Test with MCP client
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"0.1"}}}' | cargo run 2>/dev/null
Documentation
| Document | Description | |----------|-------------| | mcp-server.toml | ADK-Rust Enterprise registry manifest | | CHANGELOG.md | Version history | | Rust Docs | Generated API documentation |
Contributing
Contributions welcome. Priority areas:
- Additional translation backends (DeepL, Google Translate with API key)
- Glossary/terminology management
- Translation caching layer
- Document-level translation with formatting preservation
Contributors
| 
James Karanja Maina |
|:---:|
License
Apache-2.0 — see LICENSE for details.
Part of the ADK-Rust Enterprise MCP server ecosystem.
Built with ❤️ by Zavora AI
Registry Compliance
This server implements the ADK MCP SDK contract:
- HealthCheck — async health probe for registry monitoring
- mcp-server.toml — manifest declaring tools, risk classes, and credentials
- Structured tracing —
RUST_LOGenv-filter for observability