mcp-evals: LLM 기반 점수 평가 및 내장 관측성 지원 MCP 도구 구현을 위한 Node.js 패키지와 GitHub Action
요약
mcp-evals는 LLM 기반 점수 평가 및 내장 관측성(Observability)을 지원하는 MCP(Model Context Protocol) 도구 구현 검증용 Node.js 패키지이자 GitHub Action입니다. 이 도구를 사용하면 개발된 MCP 서버의 기능적 정확도와 성능을 체계적으로 테스트하고, PR에 결과를 자동으로 게시할 수 있습니다. 또한, Prometheus, Grafana, Jaeger 등을 통해 통합 모니터링 및 지표를 제공하여 시스템 전체의 관측 가능성을 보장합니다. 평가 구성은 TypeScript 또는 YAML 형식으로 작성할 수 있으며, OpenAI나 Anthropic 같은 주요 LLM API 키를 환경 변수로 설정하여 사용할 수 있습니다. 이 패키지는 단순히 테스트 결과를 보고하는 것을 넘어, 실제 운영 환경에서 필요한 지연 시간, 오류율 등 상세한 성능 메트릭까지 추적할 수 있도록 설계되었습니다.
핵심 포인트
- LLM 기반의 점수 평가(Accuracy, Completeness 등)를 통해 MCP 도구의 품질을 정량적으로 측정합니다.
- GitHub Action 통합으로 PR 생성/업데이트 시 자동으로 평가를 실행하고 결과를 댓글로 보고합니다.
- 내장 관측성 기능을 제공하여 Prometheus, Grafana, Jaeger 등을 통해 성능 지표(지연 시간, 오류 수 등)를 모니터링할 수 있습니다.
- 평가 구성은 유연하게 TypeScript 또는 YAML 형식으로 지원되어 사용 편의성이 높습니다.
- OpenAI 및 Anthropic API 키 설정을 통해 다양한 LLM 모델을 평가에 활용할 수 있습니다.
LLM 기반 점수 평가로 MCP (Model Context Protocol) 도구 구현을 평가하는 Node.js 패키지 및 GitHub Action 으로, 내장 관측성 지원이 포함되어 있습니다. 이를 통해 MCP 서버의 도구가 올바르게 작동하고 성능이 좋으며 통합 모니터링과 지표를 통해 완전히 관측 가능하도록 보장합니다.
npm install mcp-evals
워크플레 파일에 다음을 추가하세요:
name: Run MCP Evaluations
on:
pull_request:
...
평가 구성은 TypeScript 또는 YAML 형식 중 하나를 사용하여 만들 수 있습니다.
TypeScript 형식을 사용하려면 (예: evals.ts):
import { EvalConfig } from 'mcp-evals';
import { openai } from "@ai-sdk/openai";
import { grade, EvalFunction} from "mcp-evals";
...
간단한 구성을 위해 YAML 형식 (예: evals.yaml) 을 사용할 수 있습니다:
# Model configuration
model:
provider: openai # 'openai' 또는 'anthropic'
...
TypeScript 또는 YAML 파일 중 하나를 사용하여 CLI 를 통해 평가 실행할 수 있습니다:
# TypeScript 구성 사용
npx mcp-eval path/to/your/evals.ts path/to/your/server.ts
# YAML 구성 사용
...
이 GitHub Action 은 자동으로 다음을 수행합니다:
- 평가를 실행합니다.
- PR 에 댓글로 결과를 게시합니다.
- PR 이 업데이트되면 댓글을 업데이트합니다.
각 평가는 다음 구조를 가진 객체를 반환합니다:
interface EvalResult {
accuracy: number; // 1-5 점수
completeness: number; // 1-5 점수
...
OPENAI_API_KEY: OpenAI 모델 (OpenAI 모델을 위해 필수) 의 OpenAI API 키
ANTHROPIC_API_KEY: Anthropic 모델 (Anthropic 모델을 위해 필수) 의 Anthropic API 키
참고
오픈소스 소프트웨어와 함께 이 GitHub Action 을 사용 중이라면, OpenAI billing dashboard 에서 데이터 공유를 활성화하여 하루에 250 만 개의 무료 GPT-4o mini 토큰을 청구할 수 있습니다. 이를 통해 이 Action 을 사실상 무료로 사용할 수 있습니다.
EvalConfig 인터페이스는 다음을 요구합니다:
model: 평가에 사용할 언어 모델 (예: GPT-4)
evals: 실행할 평가 함수 배열
각 평가 함수는 다음을 구현해야 합니다:
name: 평가 이름
description: 평가가 테스트하는 내용 설명
run: 모델과 EvalResult 를 반환하는 비동기 함수
YAML 구성 파일은 다음을 지원합니다:
모델 설정:
provider: 'openai' 또는 'anthropic'
name: 모델 이름 (예: 'gpt-4o', 'claude-3-opus-20240229')
api_key: 선택적 API 키 (기본값은 환경 변수 사용)
평가 설정:
name: 평가 이름 (필수)
description: 평가가 테스트하는 내용 설명 (필수)
prompt: MCP 서버에 보내는 프롬프트 (필수)
expected_result: 선택적 예상 동작 설명
지원 파일 확장자: .yaml, .yml
참고: 지표 기능은 아직 알파 단계입니다. 기능 및 API 가 변경될 수 있으며, 파기 변경이 발생할 수 있습니다.
- MCP 서버를 초기화하기 전에 다음을 애플리케이션에 추가하세요.
import { metrics } from 'mcp-evals';
metrics.initialize(9090, { enableTracing: true, otelEndpoint: 'http://localhost:4318/v1/traces' });
- 모니터링 스택을 시작하세요:
docker-compose up -d
- MCP 서버를 실행하면 모니터링 스택에 자동으로 연결됩니다.
Prometheus: http://localhost:9090
Grafana: http://localhost:3000 (사용자명: admin, 비밀번호: admin)
Jaeger UI: http://localhost:16686
Tool Calls: 도구 이름별 도구 호출 수
Tool Errors: 도구 이름별 오류 수
Tool Latency: 도구 이름별 지연 시간 분포
MIT
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Claude Ecosystem의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기