Token导航 LogoToken导航TokenDH.com
Crowdin Translation MCP logo
AI代理stdio官方级别未说明来源级核验

Crowdin Translation MCP

MCP Server

AI驱动的Crowdin项目翻译工作流自动化服务,支持与任何MCP兼容的AI客户端集成,实现智能字符串过滤、标签管理和批量翻译上传。

工具数

5

提示词数

0

GitHub Stars

0

资源数

0
工作流自动化PythonClaudeClaude DesktopClaudeCline

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

Trofimov-Y

提供方

Trofimov-Y

最后核验

2026/5/17 20:22

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python3 -m venv venv

详细介绍

翻译MCP服务器

Crowdin项目的人工智能翻译工作流程自动化。使用 任何兼容MCP的AI客户端 (克劳德桌面,克莱恩,Zed等)。

![MCP](https://modelcontextprotocol.io) ![Python](https://www.python.org/downloads/) ![License: MIT](https://opensource.org/licenses/MIT)

______________________________________________________________________

🎯 它做什么

此MCP服务器将您的AI助手直接连接到Crowdin,从而实现:

  • 🔍 智能字符串过滤 基于标签的组织
  • 📊 基于表格的工作流程 便于翻译审查
  • 🏷️ 标签管理 将字符串标记为不翻译
  • 🔄 批量翻译 带有详细的上传反馈
  • 🎯 精确字符串搜索 检查翻译状态

不需要单独的API密钥 -使用您现有的AI订阅进行翻译!

______________________________________________________________________

🚀 快速开始

先决条件

  • Python 3.10或更高版本(或直接安装 uv)
  • API代币众筹账户
  • MCP兼容的AI客户端(Claude Desktop、Cline、Zed等)

安装

选项1:使用uvx(推荐-无需设置)

只需添加到AI客户端的配置中- uvx 自动处理安装:

{
  "mcpServers": {
    "translation-mcp": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/Trofimov-Y/crowdin-translation-mcp",
        "translation-mcp"
      ],
      "env": {
        "CROWDIN_API_TOKEN": "your_crowdin_token_here",
        "CROWDIN_PROJECT_ID": "your_project_id_here"
      }
    }
  }
}

优点:

  • ✅ 无需克隆存储库
  • ✅ 无虚拟环境设置
  • ✅ 重启时自动更新
  • ✅ 开箱即用

方案2:地方发展

对于想要修改代码的开发人员:

# Clone repository
git clone https://github.com/Trofimov-Y/crowdin-translation-mcp
cd translation-mcp

# Create virtual environment
python3 -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate

# Install dependencies
pip install -e .

然后配置绝对路径:

{
  "mcpServers": {
    "translation-mcp": {
      "command": "/absolute/path/to/translation-mcp/venv/bin/python",
      "args": ["-m", "translation_mcp.server"],
      "env": {
        "CROWDIN_API_TOKEN": "your_token",
        "CROWDIN_PROJECT_ID": "your_project_id"
      }
    }
  }
}

______________________________________________________________________

🔑 获取您的凭据

Crowdin API代币

  1. 首选https://crowdin.com/settings#api-钥匙
  2. 点击“新建令牌”
  3. 名称:“翻译MCP”
  4. 所需范围:

- project.read -阅读项目信息 - string.read -读取源字符串 - translation.write -上传翻译 - label.read -阅读标签 - label.write -管理标签

  1. 复制令牌

Crowdin项目ID

  1. 打开您的Crowdin项目
  2. 查看URL: https://crowdin.com/project/your-project/12345
  3. 数字 12345 是您的项目ID

______________________________________________________________________

📝 配置

克劳德桌面

地点: ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)\ 地点: %APPDATA%\Claude\claude_desktop_config.json (Windows)

{
  "mcpServers": {
    "translation-mcp": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/Trofimov-Y/crowdin-translation-mcp",
        "translation-mcp"
      ],
      "env": {
        "CROWDIN_API_TOKEN": "your_crowdin_token_here",
        "CROWDIN_PROJECT_ID": "your_project_id_here"
      }
    }
  }
}

Cline(VSCode扩展)

添加到临床MCP设置:

{
  "translation-mcp": {
    "command": "uvx",
    "args": [
      "--from",
      "git+https://github.com/Trofimov-Y/crowdin-translation-mcp",
      "translation-mcp"
    ],
    "env": {
      "CROWDIN_API_TOKEN": "your_token",
      "CROWDIN_PROJECT_ID": "your_project_id"
    }
  }
}

Zed编辑

添加到Zed设置:

{
  "context_servers": {
    "translation-mcp": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/Trofimov-Y/crowdin-translation-mcp",
        "translation-mcp"
      ],
      "env": {
        "CROWDIN_API_TOKEN": "your_token",
        "CROWDIN_PROJECT_ID": "your_project_id"
      }
    }
  }
}

______________________________________________________________________

💡 用法示例

配置后,在AI助手中使用自然语言命令:

"Show me untranslated strings"
"Get project languages"
"Mark strings 274, 284, 300 as do not translate"
"Search for string 'Welcome'"
"Translate the untranslated strings to French and German"

典型工作流程

  1. 查看需要翻译的内容:
   "Show untranslated strings"
  1. 标记不应翻译的名称/品牌:
   "Mark strings 36, 38, 42 as do-not-translate"
  1. 获取筛选列表:
   "Show untranslated strings again"
  1. 翻译和上传:
   "Translate these strings to all missing languages and upload"

______________________________________________________________________

🛠️ 可用的MCP工具

get_project_info

获取Crowdin项目信息和目标语言。

在以下情况下使用:

  • 开始新的翻译会话
  • 需要知道项目中有哪些语言
  • 想要验证项目配置

退货:

{
  "project_id": "12345",
  "target_languages": ["fr", "de", "es-ES", "it", "pt-BR"],
  "total_languages": 5,
  "message": "✅ Project loaded successfully"
}

______________________________________________________________________

get_untranslated_strings

获取需要翻译的字符串 表格格式.

在以下情况下使用:

  • 用户问“需要翻译什么?”
  • 想要查看翻译进度
  • 需要查找特定语言中缺少的字符串

参数:

  • limit (可选):要返回的最大字符串数(默认值:35,最大值:500)
  • exclude_labels (可选):要过滤的标签(默认值: ["do-not-translate"])

退货:

一个包含所有未翻译字符串的markdown表:

| ID  | Text                  | Identifier       | Missing Languages |
|-----|-----------------------|------------------|-------------------|
| 36  | `Routine`             | `routine`        | fr, de, it        |
| 38  | `{numMinutes} min`    | `numMinutes`     | fr, es-ES, it     |
| 42  | `Welcome to app`      | `app.welcome`    | fr, de            |

重要提示: 此工具始终返回一个表,即使是空的。

标签筛选:

  • 默认情况下,排除具有以下条件的字符串 do-not-translate 标签
  • 使用 exclude_labels=[] 查看所有字符串,包括标记的字符串

示例:

"Show untranslated strings"                    → Returns filtered table
"Get all untranslated including marked ones"   → Use exclude_labels=[]
"Show 100 untranslated strings"                → Use limit=100

______________________________________________________________________

manage_labels

管理Crowdin中字符串的标签(标记为不翻译,组织字符串)。

在以下情况下使用:

  • 需要将字符串标记为“不翻译”
  • 想要用自定义标签组织字符串
  • 需要查看可用标签
  • 想要从字符串中删除标签

行动:

1.列出所有标签

{
  "action": "list"
}

返回项目中的所有标签。

2.为字符串分配标签

{
  "action": "assign",
  "label_name": "do-not-translate",
  "string_ids": [274, 284, 300]
}

如果标签不存在,则创建标签并将其分配给指定的字符串。

3.从字符串中删除标签

{
  "action": "unassign",
  "label_name": "do-not-translate",
  "string_ids": [284]
}

常见工作流程:

  1. 查看未翻译的字符串
  2. 请注意,有些是品牌名称或专有名词
  3. 标记它们: "Mark strings 274, 284, 300 as do not translate"
  4. 下一步 get_untranslated_strings 呼叫会自动过滤掉它们

______________________________________________________________________

upload_translations

将翻译后的字符串批量上传到Crowdin。

在以下情况下使用:

  • 用户提供可上传的翻译
  • 从以下位置翻译字符串后 get_untranslated_strings
  • 需要一次添加多个翻译

重要提示:

  • 仅上传显示为“缺少”的语言的翻译
  • 对于已翻译的语言,不要上传
  • 每个翻译需要:string_id、language_code、翻译文本

输入格式:

{
  "translations": [
    {
      "string_id": 36,
      "language_code": "fr",
      "translation": "Routine"
    },
    {
      "string_id": 36,
      "language_code": "de",
      "translation": "Routine"
    },
    {
      "string_id": 38,
      "language_code": "fr",
      "translation": "{numMinutes} min"
    }
  ]
}

退货:

# 📤 Translation Upload Results

**Total translations:** 3
**✅ Successful:** 3
**❌ Failed:** 0

## ✅ Successfully Uploaded

- **String ID 36:** fr, de
- **String ID 38:** fr

**Status:** ✅ All translations uploaded successfully!

______________________________________________________________________

search_string

按文本搜索特定字符串并查看其所有翻译。

在以下情况下使用:

  • 用户问“X被翻译了吗?”
  • 需要检查特定字符串的状态
  • 想查看现有的翻译以供参考
  • 查找字符串的ID

输入:

{
  "source_text": "Welcome"
}

退货:

# 🔍 String Search Results

**String ID:** 123
**Identifier:** `app.welcome`
**Source Text:** `Welcome`
**Translation Progress:** 3/5 languages

## Translation Status

| Language | Status         | Translation |
|----------|----------------|-------------|
| fr       | ✅ Translated  | Bienvenue   |
| de       | ✅ Translated  | Willkommen  |
| es-ES    | ✅ Translated  | Bienvenido  |
| it       | ❌ Missing     | -           |
| pt-BR    | ❌ Missing     | -           |

**Missing languages:** it, pt-BR

______________________________________________________________________

🏷️ 标签系统

标签系统有助于组织和过滤字符串:

默认行为

  • get_untranslated_strings 自动排除 字符串与 do-not-translate 标签
  • 这会过滤掉您已经标记的名称、品牌和技术术语

工作流程

  1. 获取未翻译的字符串 (自动过滤)
  2. 查看表格
  3. 标记名称/品牌:
   "Mark strings 36, 42 as do-not-translate"
  1. 获取更新列表 (标记的字符串消失)
  2. 翻译剩余字符串

自定义标签

您可以创建任何您想要的标签:

  • do-not-translate -跳过这些字符串
  • reviewed -标记为已审核
  • context-needed -需要更多上下文
  • technical-term -技术术语

______________________________________________________________________

📂 项目结构

translation-mcp/
├── src/translation_mcp/
│   ├── __init__.py          # Package initialization
│   ├── server.py            # MCP server implementation
│   ├── crowdin_client.py    # Crowdin API client (using official SDK)
│   └── config.py            # Configuration management
├── pyproject.toml           # Project dependencies & metadata
├── README.md                # This file
├── .gitignore               # Git ignore rules
└── claude_desktop_config_uvx.json  # Example configuration

______________________________________________________________________

🔧 故障排除

MCP服务器未出现

  1. 检查配置文件路径:

- macOS克劳德: ~/Library/Application Support/Claude/claude_desktop_config.json - Windows克劳德: %APPDATA%\Claude\claude_desktop_config.json

  1. 验证JSON语法:

- 使用https://jsonlint.com/验证 - 确保没有尾随逗号 - 检查所有报价是否正确

  1. 完全重新启动AI客户端:

- 退出应用程序(不仅仅是关闭窗口) - 重新启动应用程序

“找不到模块:translation_mcp”

对于uvx用户:

  • uv 应自动处理安装
  • 尝试: uvx --from git+https://github.com/Trofimov-Y/crowdin-translation-mcp translation-mcp --help
  • 如果失败,请确保 uv 已安装: curl -LsSf https://astral.sh/uv/install.sh | sh

对于本地安装:

# Verify virtual environment has packages
ls /path/to/translation-mcp/venv/lib/python*/site-packages/

# If missing, reinstall
pip install -e .

“API错误:无效的令牌”

  • 验证配置中的令牌(无额外空格)
  • Crowdin设置中的检查令牌尚未过期
  • 确认令牌具有所有必需的作用域:

- project.read - string.read - translation.write - label.read - label.write

表未显示

现在不应该发生这种事!该工具总是返回一个表格。

如果你看到的是文本:

  1. 检查您是否使用最新版本
  2. 用示例报告bug

“找不到未翻译的字符串”(但有)

  • 验证正确的Crowdin项目ID
  • 检查字符串是否标记为 do-not-translate
  • 尝试: "Get all untranslated including marked ones" 看到一切

______________________________________________________________________

🧪 发展

设置开发环境

git clone https://github.com/Trofimov-Y/crowdin-translation-mcp
cd translation-mcp

# Create virtual environment
python3 -m venv venv
source venv/bin/activate

# Install with dev dependencies
pip install -e ".[dev]"

运行测试

pytest

代码格式化

# Format code
black src/

# Check style
ruff check src/

手动测试

# Test that MCP server starts
python -m translation_mcp.server

# Should show MCP initialization messages

______________________________________________________________________

🔐 安全

  • 通过环境变量传递的令牌 -从未硬编码
  • 文件中未存储令牌 -仅在MCP配置中
  • MCP在本地运行 -所有处理都在您的机器上进行
  • 直接API调用 -仅限Crowdin,无中介

______________________________________________________________________

💰 成本

  • Crowdin API: 免费(在您的Crowdin计划限制内)
  • 人工智能翻译: 包含在您的AI客户端订阅中
  • MCP服务器: 免费和开源
  • 额外费用总额: $0

______________________________________________________________________

🤝 贡献

欢迎投稿!请随时提交拉取请求。

贡献领域

  • 附加语言检测
  • 批量操作优化
  • UI便于配置
  • 其他Crowdin功能
  • 更好的错误消息

______________________________________________________________________

📄 许可证

MIT许可证-有关详细信息,请参阅许可证文件

______________________________________________________________________

🐛 支持

有问题吗?

  1. 请先查看此自述文件
  2. 查看GitHub上的已解决问题
  3. 通过以下方式打开新问题:

- 您的AI客户端(Claude Desktop、Cline等) - 错误消息(已删除令牌!) - 配置(已删除令牌!) - 重现步骤

______________________________________________________________________

🙏 致谢

______________________________________________________________________

📊 版本历史记录

  • 2.0.0 -使用官方Crowdin SDK、标签系统、改进的提示进行重大重构
  • 0.1.0 -首次发布

______________________________________________________________________

由以下材料制成❤️ 更好的翻译工作流程

目录标签

目录标签

工作流自动化PythonClaudeAI翻译本地部署多语言支持Crowdin集成MCP协议

支持客户端

Claude DesktopClaudeCline

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

5

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP