Skip to main content
Glama

xCOMET MCP 서버

npm version CI MCP License: MIT

English README is here

⚠️ 이 프로젝트는 커뮤니티에서 운영하는 비공식 프로젝트이며, Unbabel과는 관련이 없습니다.

xCOMET (eXplainable COMET) 기반의 번역 품질 평가 MCP 서버입니다.

🎯 개요

xCOMET MCP 서버는 AI 에이전트에게 기계 번역 품질을 평가할 수 있는 기능을 제공합니다. Unbabel의 xCOMET 모델과 통합되어 다음 기능을 제공합니다:

  • 품질 점수: 번역 품질을 나타내는 0-1 사이의 점수

  • 오류 탐지: 심각도 수준(minor/major/critical)에 따른 오류 구간 식별

  • 배치 처리: 여러 번역 쌍을 효율적으로 평가 (단일 모델 로드 최적화)

  • 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 권장 (3.13+는 아직 xCOMET 의존성에서 지원하지 않음)

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의 **게이트 모델(gated models)**입니다. 다음 절차를 따라야 합니다:

  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

전송 모드: stdio 또는 http

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+)

서버는 xCOMET 모델을 메모리에 로드된 상태로 유지하는 지속적 Python FastAPI 서버를 사용합니다:

요청

시간

참고

첫 번째 요청

~25-90초

모델 로딩 (모델 크기에 따라 다름)

후속 요청

~500ms

모델이 이미 로드됨

이는 매번 모델을 다시 로드하는 것과 비교하여 연속 평가 시 177배의 속도 향상을 제공합니다.

즉시 로딩 (v0.3.1+)

XCOMET_PRELOAD=true를 활성화하여 서버 시작 시 모델을 미리 로드하십시오:

{
  "mcpServers": {
    "xcomet": {
      "command": "npx",
      "args": ["-y", "xcomet-mcp-server"],
      "env": {
        "XCOMET_PRELOAD": "true"
      }
    }
  }
}

사전 로드가 활성화되면 첫 번째 요청을 포함한 모든 요청이 빠릅니다 (~500ms).

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 vs CPU 성능

모드

100 쌍 (예상)

CPU (batch_size=8)

~2분

GPU (batch_size=16)

~20-30초

참고: GPU를 사용하려면 CUDA 호환 하드웨어와 CUDA 지원 PyTorch가 필요합니다. GPU를 사용할 수 없는 경우 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'"

원인: unbabel-comet이 설치되지 않은 Python 환경.

해결책:

# 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가 감지되지 않음

원인: CUDA 지원이 포함된 PyTorch가

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