Skip to main content
Glama

xCOMET MCP 服务器

npm version CI MCP License: MIT

点击此处查看日语版 README

⚠️ 这是一个非官方的社区项目,与 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 上的受限模型。您必须:

  1. 创建一个 HuggingFace 账户

  2. 访问 Unbabel/XCOMET-XL 并申请访问权限

  3. 通过 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

评估单个源文本-译文对的翻译质量。

参数:

名称

类型

必需

描述

source

string

原始源文本

translation

string

待评估的译文

reference

string

参考译文

source_lang

string

源语言代码 (ISO 639-1)

target_lang

string

目标语言代码 (ISO 639-1)

response_format

"json"

"markdown"

输出格式 (默认: "json")

use_gpu

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

专注于检测和分类翻译错误。

参数:

名称

类型

必需

描述

source

string

原始源文本

translation

string

待分析的译文

reference

string

参考译文

min_severity

"minor"

"major"

"critical"

最低严重程度 (默认: "minor")

response_format

"json"

"markdown"

输出格式

use_gpu

boolean

使用 GPU 进行推理 (默认: false)

xcomet_batch_evaluate

在单次请求中评估多个翻译对。

性能说明:通过持久化服务器架构 (v0.3.0+),模型会保留在内存中。批量评估可以高效处理所有对,而无需重新加载模型。

参数:

名称

类型

必需

描述

pairs

array

{source, translation, reference?} 数组 (最多 500 个)

source_lang

string

源语言代码

target_lang

string

目标语言代码

response_format

"json"

"markdown"

输出格式

use_gpu

boolean

使用 GPU 进行推理 (默认: false)

batch_size

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?

推荐工作流

  1. 翻译:使用 DeepL MCP 服务器(官方)

  2. 评估:使用 xCOMET MCP 服务器

  3. 迭代:如果质量低于阈值,则进行修改

示例: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,请提出改进建议。"

⚙️ 配置

环境变量

变量

默认值

描述

TRANSPORT

stdio

传输模式:stdiohttp

PORT

3000

HTTP 服务器端口 (当 TRANSPORT=http 时)

XCOMET_MODEL

Unbabel/XCOMET-XL

使用的 xCOMET 模型

XCOMET_PYTHON_PATH

(自动检测)

Python 可执行文件路径 (见下文)

XCOMET_PRELOAD

false

在启动时预加载模型 (v0.3.1+)

XCOMET_DEBUG

false

启用详细调试日志 (v0.3.1+)

模型选择

根据您的质量/性能需求选择模型:

模型

参数

大小

内存

参考

HF 认证

质量

用例

Unbabel/XCOMET-XL

3.5B

~14GB

~8-10GB

可选

✅ 必需

⭐⭐⭐⭐

推荐用于大多数用例

Unbabel/XCOMET-XXL

10.7B

~42GB

~20GB

可选

✅ 必需

⭐⭐⭐⭐⭐

最高质量,需要更多资源

Unbabel/wmt22-comet-da

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 环境:

  1. XCOMET_PYTHON_PATH 环境变量(如果已设置)

  2. pyenv 版本 (~/.pyenv/versions/*/bin/python3) - 检查 comet 模块

  3. Homebrew Python (/opt/homebrew/bin/python3, /usr/local/bin/python3)

  4. 回退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 throughput

3. 内存注意事项

  • 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/cu118

Mac (MPS) 性能缓慢

原因:Mac MPS (Metal Performance Shaders) 在某些操作上存在兼容性问题。

解决方案:服务器会自动为 Mac MPS 兼容性使用 num_workers=1。为了在 Mac 上获得最佳性能,请使用 CPU 模式 (use_gpu: false)。

高内存使用或崩溃

原因:XCOMET-XL 需要 ~8-10GB RAM。

解决方案

  1. 使用持久化服务器 (v0.3.0+):模型加载一次并保留在内存中,避免重复的内存峰值

  2. 使用更轻的模型:设置 XCOMET_MODEL=Unbabel/wmt22-comet-da 以降低内存使用 (~3GB)

  3. 减少批次大小:对于大批量,分小块处理 (100-200 对)

  4. 关闭其他应用程序:在运行大型评估前释放 RAM

# Check available memory
free -h  # Linux
vm_stat | head -5  # macOS
Install Server
A
security – no known vulnerabilities
A
license - permissive license
A
quality - A tier

Latest 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