日本語 | 中文 | Español | Français | हिन्दी | Italiano | Português (BR)
Local GPU translation MCP server — 57 languages, zero cloud dependency.
______________________________________________________________________
它做什么
使用以下语言在57种语言之间翻译文本 翻译艾玛 通过以下方式在GPU上本地运行 奥拉玛.没有API密钥,没有云,没有速率限制-一切都留在您的机器上。
快速开始
1.安装Olama
下载自 ollama.com 并启动它:
ollama serve2.拉一个模型
ollama pull translategemma:12b # 8.1 GB — best quality/speed balance
# or
ollama pull translategemma:4b # 3.3 GB — faster, lower quality
# or
ollama pull translategemma:27b # 17 GB — highest quality提示: 您可以跳过此步骤——Polyglot在首次使用时自动拉取模型。
3.添加到您的MCP客户端
克劳德代码/克劳德桌面 --添加到 claude_desktop_config.json 或 .mcp.json:
{
"mcpServers": {
"polyglot": {
"command": "npx",
"args": ["-y", "@mcptoolshop/polyglot-mcp"]
}
}
}来源:
git clone https://github.com/mcp-tool-shop-org/polyglot-mcp.git
cd polyglot-mcp
npm install && npm run build
node dist/index.js就是这样。让克劳德翻译一些东西,它会使用 translate 工具自动。
工具
Polyglot公开了五种MCP工具:
translate
在任何支持的语言对之间翻译文本。
| 参数 | 必填 | 说明 |
|---|---|---|
text | 是 | 要翻译的文本 |
from | 是 | 源语言代码或名称(例如。, en, English) |
to | 是 | 目标语言代码或名称(例如。, ja, Japanese) |
model | 否 | Ollama型号(默认值: translategemma:12b) |
glossary | 否 | 自定义术语替代为 {"source": "translation"} --与内置软件术语表合并 |
长文本在段落和句子边界处自动分割成块,按顺序翻译,然后重新组装。所有翻译都经过质量验证(空输出、回声检测、截断、乱码文本)。
translate_markdown
翻译整个markdown文档,同时保留结构。代码块、HTML元素、徽章、URL和表格格式保持不变,只翻译散文内容(标题、段落、标语、表格单元格)。
| 参数 | 必填 | 说明 |
|---|---|---|
markdown | 是 | 要翻译的完整降价内容 |
from | 是 | 源语言代码或名称 |
to | 是 | 目标语言代码或名称 |
model | 否 | Ollama型号(默认值: translategemma:12b) |
list_languages
列出所有57种支持的语言及其代码。
check_status
检查Ollama是否正在运行,以及安装了哪些TranslateGemma型号。如果Ollama没有运行,则尝试自动启动。
translate_all
一次将降价内容翻译成多种语言(默认值:7--日语、中文、西班牙语、法语、印地语、意大利语、葡萄牙语)。与GPU安全信号量限制同时运行翻译。
| 参数 | 必填 | 说明 |
|---|---|---|
markdown | 是 | 要翻译的完整降价内容 |
from | no | 源语言代码(默认值: en) |
languages | no | 目标语言代码数组(默认值:全部7个) |
model | 否 | Ollama型号(默认值: translategemma:12b) |
concurrency | no | 最大并发翻译数(默认值:2,最大值:3) |
navBar | no | 注入语言导航栏(默认值:true) |
特性
自动启动和自动拉动
如果Ollama没有运行,它会自动启动。如果未安装TranslateEmma模型,则会自动拉取它。无需手动设置。
使用指数回退重试
瞬态Ollama故障(网络光点、临时过载)会自动重试最多2次,并采用指数回退(1秒、2秒)。不可重试的错误(模型名称错误、输入无效)会立即失败。
智能分块
长文本在自然边界处被分割——段落,然后是句子——因此翻译上下文得以保留。块大小适应型号:2B/4B型号为2K字符,12B型号为4K,27B型号为6K。
段缓存
翻译后的片段由内容哈希(源文本+目标语言+模型的SHA-256)缓存。未更改的片段完全跳过重新翻译。缓存位于 .polyglot-cache.json 具有30天的TTL。
翻译记忆库(模糊缓存)
当没有找到精确的缓存命中时,Polyglot会使用Levenshtein相似性检查未遂片段。如果缓存的源与当前段的相似度≥85%,则重用现有的翻译。这大大加快了小README编辑后的重新翻译速度。
并发信号
所有Ollama调用都由计数信号量保护(默认限制:1),以防止VRAM有限的系统上的GPU OOM。用覆盖 POLYGLOT_CONCURRENCY:
POLYGLOT_CONCURRENCY=2 npx @mcptoolshop/polyglot-mcpMCP进度令牌
所有工具通过MCP报告进度 notifications/progress 当客户端提供 progressToken。按块翻译报告,按段批翻译markdown,按语言翻译all,按步骤翻译check_status。
软件术语表
由12个技术术语(API、CLI、SDK等)组成的内置术语表确保了软件术语的一致翻译。自定义术语表条目可以根据请求传递,并与默认值合并。
批量翻译
translateBatch 在可能的情况下,将多个片段分组到一个提示中,减少往返次数。如果批处理分隔符损坏,则返回到单个翻译。
可配置默认模型
设置 POLYGLOT_MODEL 用于覆盖默认模型的环境变量:
POLYGLOT_MODEL=translategemma:27b npx @mcptoolshop/polyglot-mcp结构化错误
所有错误使用 PolyglotError 带有机器可读代码(MODEL_NOT_FOUND, OLLAMA_UNAVAILABLE, TRANSLATION_FAILED等)、人类可读消息、可选提示和 retryable 旗帜。
输出验证
每个翻译都会自动验证:空输出抛出(可重试),源文本回声被标记,严重截断和幻觉爆发被警告,乱码编码和模型元注释被检测到。MCP工具响应中出现警告。
流媒体
OllamaClient.generateStream() Ollama生成代币时,通过NDJSON生成代币。这 translate() 函数接受 onToken 实时进度显示回调。流媒体和非流媒体路径共享重试逻辑。
支持的语言
南非荷兰语、阿尔巴尼亚语、阿拉伯语、孟加拉语、保加利亚语、加泰罗尼亚语、中文(简体)、中文(繁体)、克罗地亚语、捷克语、丹麦语、荷兰语、英语、爱沙尼亚语、芬兰语、法语、加利西亚语、德语、希腊语、古吉拉特语、希伯来语、印地语、匈牙利语、印度尼西亚语、爱尔兰语、意大利语、日语、卡纳达语、韩语、拉脱维亚语、立陶宛语、马其顿语、马来语、马拉雅拉姆语、马耳他语、马拉地语、挪威语、波斯语、波兰语、葡萄牙语、罗马尼亚语、俄语、苏格兰盖尔语、塞尔维亚语、斯洛伐克语、斯洛文尼亚语、西班牙语、斯瓦希里语、瑞典语、泰米尔语、泰卢固语、泰语、土耳其语、乌克兰语、乌尔都语、越南语、威尔士语。
演出
在配备TranslateEmma 12B(第四季度)的RTX 5080(16 GB VRAM)上:
| 度量 | 值 |
|---|---|
| 第一次平移(冷模型加载) | ~15秒 |
| 后续翻译 | ~600毫秒 |
| VRAM使用量 | ~8.1 GB |
| 长文本(每个块) | ~600毫秒 |
建筑
MCP Client (Claude Code, etc.)
│
│ MCP protocol (stdio)
▼
┌──────────────────┐
│ index.ts │ MCP server — 5 tools: translate, translate_markdown,
│ │ translate_all, list_languages, check_status
├──────────────────┤
│ translate.ts │ Prompt building, chunking, batch mode, streaming
├──────────────────┤
│translateMarkdown │ Markdown-aware segmentation, table parsing, reassembly
├──────────────────┤
│ translateAll.ts │ Multi-language orchestrator with nav bar injection
├──────────────────┤
│ semaphore.ts │ Counting semaphore for GPU-safe concurrency
├──────────────────┤
│ validate.ts │ Output validation (empty, echo, truncation, garble)
├──────────────────┤
│ ollama.ts │ HTTP client — auto-start, auto-pull, retry, streaming
├──────────────────┤
│ cache.ts │ Segment cache + fuzzy translation memory
├──────────────────┤
│ glossary.ts │ Software term dictionary
├──────────────────┤
│ polish.ts │ Post-translation artifact cleanup
├──────────────────┤
│ languages.ts │ 57 language definitions
├──────────────────┤
│ errors.ts │ PolyglotError structured error class
└──────────────────┘
│
│ HTTP (localhost:11434)
▼
Ollama + TranslateGemma (GPU)安全和数据范围
| 方面 | 细节 |
|---|---|
| 数据已触摸 | 发送到当地Ollama API的文本(localhost:11434), .polyglot-cache.json 段缓存 |
| 数据未被触碰 | 工作目录外没有文件,没有浏览器数据,没有操作系统凭据 |
| 网络 | HTTP到 localhost:11434 仅--零外部/互联网出口 |
| 遥测 | 未收集或发送 |
看 安全.md 漏洞报告策略。
发展
npm install # install deps
npm run typecheck # type-check without emitting
npm test # run 256 unit tests (vitest)
npm run build # compile TypeScript to dist/
npm run verify # typecheck + test + build + pack (full gate)许可证
麻省理工学院——见 许可证.
建造于 MCP工具车间
