xcomet-mcp-server
xCOMET MCP 服务器
⚠️ 这是一个非官方的社区项目,与 Unbabel 无关。
由 xCOMET (eXplainable COMET) 提供支持的翻译质量评估 MCP 服务器。
🎯 概述
xCOMET MCP 服务器为 AI 智能体提供了评估机器翻译质量的能力。它与 Unbabel 的 xCOMET 模型集成,提供以下功能:
质量评分:0-1 之间的分数,表示翻译质量
错误检测:识别带有严重程度级别(轻微/主要/严重)的错误片段
批量处理:高效评估多个翻译对(优化了单次模型加载)
GPU 支持:可选的 GPU 加速,以实现更快的推理
graph LR
A[AI Agent] --> B[Node.js MCP Server]
B --> C[Python FastAPI Server]
C --> D[xCOMET Model<br/>Persistent in Memory]
D --> C
C --> B
B --> A
style D fill:#9f9🔧 前置要求
Python 环境
推荐 Python 3.9 - 3.12(xCOMET 依赖项尚不支持 3.13+)
xCOMET 需要 Python 以及多个软件包。我们建议使用虚拟环境:
# If using uv (recommended - auto-downloads the correct Python version)
uv venv ~/.xcomet-venv --python 3.12
source ~/.xcomet-venv/bin/activate
uv pip install "unbabel-comet>=2.2.0" "fastapi>=0.100.0" "uvicorn>=0.23.0" "pydantic>=2.0.0"
# Or using standard venv (requires Python 3.9-3.12 already installed)
python3 -m venv ~/.xcomet-venv
source ~/.xcomet-venv/bin/activate # Windows: ~/.xcomet-venv\Scripts\activate
pip install "unbabel-comet>=2.2.0" "fastapi>=0.100.0" "uvicorn>=0.23.0" "pydantic>=2.0.0"注意:当与 Claude Desktop 或其他 MCP 主机一起使用时,请将
XCOMET_PYTHON_PATH设置为指向虚拟环境的 Python(请参阅 配置)。
模型下载
重要:XCOMET-XL 和 XCOMET-XXL 是 HuggingFace 上的受限模型。您必须:
创建一个 HuggingFace 账户
访问 Unbabel/XCOMET-XL 并申请访问权限
通过 CLI 登录:
source ~/.xcomet-venv/bin/activate huggingface-cli login
Unbabel/wmt22-comet-da不需要身份验证(但需要参考译文)。
身份验证后,下载模型(XL 约 14GB,XXL 约 42GB):
source ~/.xcomet-venv/bin/activate
python -c "from comet import download_model; download_model('Unbabel/XCOMET-XL')"Node.js
Node.js >= 18.0.0
npm 或 yarn
📦 安装
注意:如果您只是想使用 xCOMET MCP 服务器,则不需要克隆此仓库。安装 Python 环境和模型(请参阅 前置要求),然后使用
npx(请参阅 使用方法)。以下部分仅供贡献者和本地开发使用。
本地开发
供贡献者和本地开发使用:
# Clone the repository
git clone https://github.com/shuji-bonji/xcomet-mcp-server.git
cd xcomet-mcp-server
# Set up Python virtual environment and install dependencies
uv venv .venv --python 3.12 # or: python3 -m venv .venv
source .venv/bin/activate
pip install -r python/requirements.txt
# Install Node.js dependencies and build
npm install
npm run build🚀 使用方法
在 Claude Desktop 中使用 (npx)
添加到您的 Claude Desktop 配置文件 (claude_desktop_config.json) 中:
{
"mcpServers": {
"xcomet": {
"command": "npx",
"args": ["-y", "xcomet-mcp-server"],
"env": {
"XCOMET_PYTHON_PATH": "~/.xcomet-venv/bin/python3"
}
}
}
}提示:如果您在系统范围内安装了 Python 包或使用 pyenv,则可以省略
XCOMET_PYTHON_PATH(系统会自动检测)。详情请参阅 Python 路径自动检测。
在 Claude Code 中使用
claude mcp add xcomet --env XCOMET_PYTHON_PATH=~/.xcomet-venv/bin/python3 -- npx -y xcomet-mcp-server全局安装
如果您更喜欢全局安装:
npm install -g xcomet-mcp-server然后进行配置:
{
"mcpServers": {
"xcomet": {
"command": "xcomet-mcp-server",
"env": {
"XCOMET_PYTHON_PATH": "~/.xcomet-venv/bin/python3"
}
}
}
}本地开发构建
如果您在本地克隆并构建了仓库(请参阅 安装):
{
"mcpServers": {
"xcomet": {
"command": "node",
"args": ["/path/to/xcomet-mcp-server/dist/index.js"],
"env": {
"XCOMET_PYTHON_PATH": "~/.xcomet-venv/bin/python3"
}
}
}
}HTTP 模式(远程访问)
TRANSPORT=http PORT=3000 npm start然后连接到 http://localhost:3000/mcp
🛠️ 可用工具
xcomet_evaluate
评估单个源文本-译文对的翻译质量。
参数:
名称 | 类型 | 必需 | 描述 | |
| string | ✅ | 原始源文本 | |
| string | ✅ | 待评估的译文 | |
| string | ❌ | 参考译文 | |
| string | ❌ | 源语言代码 (ISO 639-1) | |
| string | ❌ | 目标语言代码 (ISO 639-1) | |
| "json" | "markdown" | ❌ | 输出格式 (默认: "json") |
| boolean | ❌ | 使用 GPU 进行推理 (默认: false) |
示例:
{
"source": "The quick brown fox jumps over the lazy dog.",
"translation": "素早い茶色のキツネが怠惰な犬を飛び越える。",
"source_lang": "en",
"target_lang": "ja",
"use_gpu": true
}响应:
{
"score": 0.847,
"errors": [],
"summary": "Good quality (score: 0.847) with 0 error(s) detected."
}xcomet_detect_errors
专注于检测和分类翻译错误。
参数:
名称 | 类型 | 必需 | 描述 | ||
| string | ✅ | 原始源文本 | ||
| string | ✅ | 待分析的译文 | ||
| string | ❌ | 参考译文 | ||
| "minor" | "major" | "critical" | ❌ | 最低严重程度 (默认: "minor") |
| "json" | "markdown" | ❌ | 输出格式 | |
| boolean | ❌ | 使用 GPU 进行推理 (默认: false) |
xcomet_batch_evaluate
在单次请求中评估多个翻译对。
性能说明:通过持久化服务器架构 (v0.3.0+),模型会保留在内存中。批量评估可以高效处理所有对,而无需重新加载模型。
参数:
名称 | 类型 | 必需 | 描述 | |
| array | ✅ | {source, translation, reference?} 数组 (最多 500 个) | |
| string | ❌ | 源语言代码 | |
| string | ❌ | 目标语言代码 | |
| "json" | "markdown" | ❌ | 输出格式 |
| boolean | ❌ | 使用 GPU 进行推理 (默认: false) | |
| number | ❌ | 批次大小 1-64 (默认: 8)。越大速度越快,但占用内存越多 |
示例:
{
"pairs": [
{"source": "Hello", "translation": "こんにちは"},
{"source": "Goodbye", "translation": "さようなら"}
],
"use_gpu": true,
"batch_size": 16
}🔗 与其他 MCP 服务器集成
xCOMET MCP 服务器旨在与其他 MCP 服务器协同工作,以实现完整的翻译工作流:
sequenceDiagram
participant Agent as AI Agent
participant DeepL as DeepL MCP Server
participant xCOMET as xCOMET MCP Server
Agent->>DeepL: Translate text
DeepL-->>Agent: Translation result
Agent->>xCOMET: Evaluate quality
xCOMET-->>Agent: Score + Errors
Agent->>Agent: Decide: Accept or retry?推荐工作流
翻译:使用 DeepL MCP 服务器(官方)
评估:使用 xCOMET MCP 服务器
迭代:如果质量低于阈值,则进行修改
示例:DeepL + xCOMET 集成
在 Claude Desktop 中配置两个服务器:
{
"mcpServers": {
"deepl": {
"command": "npx",
"args": ["-y", "@anthropic/deepl-mcp-server"],
"env": {
"DEEPL_API_KEY": "your-api-key"
}
},
"xcomet": {
"command": "npx",
"args": ["-y", "xcomet-mcp-server"],
"env": {
"XCOMET_PYTHON_PATH": "~/.xcomet-venv/bin/python3"
}
}
}
}然后询问 Claude:
"使用 DeepL 将此文本翻译成日语,然后使用 xCOMET 评估翻译质量。如果分数低于 0.8,请提出改进建议。"
⚙️ 配置
环境变量
变量 | 默认值 | 描述 |
|
| 传输模式: |
|
| HTTP 服务器端口 (当 TRANSPORT=http 时) |
|
| 使用的 xCOMET 模型 |
| (自动检测) | Python 可执行文件路径 (见下文) |
|
| 在启动时预加载模型 (v0.3.1+) |
|
| 启用详细调试日志 (v0.3.1+) |
模型选择
根据您的质量/性能需求选择模型:
模型 | 参数 | 大小 | 内存 | 参考 | HF 认证 | 质量 | 用例 |
| 3.5B | ~14GB | ~8-10GB | 可选 | ✅ 必需 | ⭐⭐⭐⭐ | 推荐用于大多数用例 |
| 10.7B | ~42GB | ~20GB | 可选 | ✅ 必需 | ⭐⭐⭐⭐⭐ | 最高质量,需要更多资源 |
| 580M | ~2GB | ~3GB | 必需 | 不需要 | ⭐⭐⭐ | 轻量级,加载更快 |
重要:XCOMET-XL 和 XCOMET-XXL 是 HuggingFace 上的受限模型。每个模型都需要单独的访问批准。请参阅 模型下载 进行身份验证设置。
重要:
wmt22-comet-da需要reference译文进行评估。xCOMET 模型支持无参考评估。
提示:如果您遇到内存问题或模型加载缓慢,请尝试使用
Unbabel/wmt22-comet-da以获得更快的性能,尽管准确度略低(但请记住提供参考译文)。
要使用其他模型,请设置 XCOMET_MODEL 环境变量:
{
"mcpServers": {
"xcomet": {
"command": "npx",
"args": ["-y", "xcomet-mcp-server"],
"env": {
"XCOMET_MODEL": "Unbabel/XCOMET-XXL"
}
}
}
}Python 路径自动检测
服务器会自动检测安装了 unbabel-comet 的 Python 环境:
XCOMET_PYTHON_PATH环境变量(如果已设置)pyenv 版本 (
~/.pyenv/versions/*/bin/python3) - 检查comet模块Homebrew Python (
/opt/homebrew/bin/python3,/usr/local/bin/python3)回退:
python3命令
这确保了即使 MCP 主机(例如 Claude Desktop)使用的 Python 与您的终端不同,服务器也能正常工作。
示例:显式 Python 路径配置
{
"mcpServers": {
"xcomet": {
"command": "npx",
"args": ["-y", "xcomet-mcp-server"],
"env": {
"XCOMET_PYTHON_PATH": "/Users/you/.pyenv/versions/3.11.0/bin/python3"
}
}
}
}⚡ 性能
持久化服务器架构 (v0.3.0+)
服务器使用持久化的 Python FastAPI 服务器,将 xCOMET 模型保留在内存中:
请求 | 时间 | 说明 |
首次请求 | ~25-90秒 | 模型加载(因模型大小而异) |
后续请求 | ~500毫秒 | 模型已加载 |
与每次重新加载模型相比,这为连续评估提供了 177 倍的速度提升。
预加载 (v0.3.1+)
启用 XCOMET_PRELOAD=true 以在服务器启动时预加载模型:
{
"mcpServers": {
"xcomet": {
"command": "npx",
"args": ["-y", "xcomet-mcp-server"],
"env": {
"XCOMET_PRELOAD": "true"
}
}
}
}启用预加载后,所有请求都很快(~500毫秒),包括第一次请求。
graph LR
A[MCP Request] --> B[Node.js Server]
B --> C[Python FastAPI Server]
C --> D[xCOMET Model<br/>in Memory]
D --> C
C --> B
B --> A
style D fill:#9f9批量处理优化
xcomet_batch_evaluate 工具通过单次模型加载处理所有对:
对数 | 预计时间 |
10 | ~30-40 秒 |
50 | ~1-1.5 分钟 |
100 | ~2 分钟 |
GPU 与 CPU 性能
模式 | 100 对 (预计) |
CPU (batch_size=8) | ~2 分钟 |
GPU (batch_size=16) | ~20-30 秒 |
注意:GPU 需要 CUDA 兼容硬件和支持 CUDA 的 PyTorch。如果不可用,请设置
use_gpu: false(默认)。
最佳实践
1. 让持久化服务器发挥作用
从 v0.3.0+ 开始,模型保留在内存中。多次 xcomet_evaluate 调用现在非常高效:
✅ Fast: First call loads model, subsequent calls reuse it
xcomet_evaluate(pair1) # ~90s (model loads)
xcomet_evaluate(pair2) # ~500ms (model cached)
xcomet_evaluate(pair3) # ~500ms (model cached)2. 对于大量对,使用批量评估
✅ Even faster: Batch all pairs in one call
xcomet_batch_evaluate(allPairs) # Optimal throughput3. 内存注意事项
XCOMET-XL 需要 ~8-10GB RAM
对于大批量(500 对),请确保有足够的内存
如果内存有限,请拆分为较小的批次(100-200 对)
自动重启 (v0.3.1+)
服务器会自动从故障中恢复:
每 30 秒监控一次健康状况
在连续 3 次健康检查失败后重启
在放弃前最多尝试 3 次重启
📊 质量评分解读
分数范围 | 质量 | 建议 |
0.9 - 1.0 | 优秀 | 可直接使用 |
0.7 - 0.9 | 良好 | 建议进行轻微审查 |
0.5 - 0.7 | 一般 | 需要后期编辑 |
0.0 - 0.5 | 较差 | 建议重新翻译 |
🔍 故障排除
常见问题
"No module named 'comet'"
原因:Python 环境未安装 unbabel-comet。
解决方案:
# Check which Python is being used
python3 -c "import sys; print(sys.executable)"
# If using a virtual environment, make sure it's activated
source .venv/bin/activate
pip install -r python/requirements.txt
# For MCP hosts (e.g., Claude Desktop), specify the venv Python path
export XCOMET_PYTHON_PATH=~/.xcomet-venv/bin/python3模型下载失败或超时
原因:大型模型文件(XL 约 14GB)需要稳定的互联网连接。xCOMET 模型还需要 HuggingFace 身份验证(请参阅 模型下载)。
解决方案:
# Login to HuggingFace (required for XCOMET-XL/XXL)
huggingface-cli login
# Pre-download the model manually
python -c "from comet import download_model; download_model('Unbabel/XCOMET-XL')"未检测到 GPU
原因:PyTorch 未安装 CUDA 支持。
解决方案:
# Check CUDA availability
python -c "import torch; print(torch.cuda.is_available())"
# If False, reinstall PyTorch with CUDA
pip install torch --index-url https://download.pytorch.org/whl/cu118Mac (MPS) 性能缓慢
原因:Mac MPS (Metal Performance Shaders) 在某些操作上存在兼容性问题。
解决方案:服务器会自动为 Mac MPS 兼容性使用 num_workers=1。为了在 Mac 上获得最佳性能,请使用 CPU 模式 (use_gpu: false)。
高内存使用或崩溃
原因:XCOMET-XL 需要 ~8-10GB RAM。
解决方案:
使用持久化服务器 (v0.3.0+):模型加载一次并保留在内存中,避免重复的内存峰值
使用更轻的模型:设置
XCOMET_MODEL=Unbabel/wmt22-comet-da以降低内存使用 (~3GB)减少批次大小:对于大批量,分小块处理 (100-200 对)
关闭其他应用程序:在运行大型评估前释放 RAM
# Check available memory
free -h # Linux
vm_stat | head -5 # macOSLatest Blog Posts
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/shuji-bonji/xcomet-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server