MCP Server Testing이 분산되어 있습니다. 기록, 재생, Mock, Audit, CI를 위한 하나의 CLI를 만들었습니다.
Source: Dev.to
MCP 서버 테스트의 문제점
- 수동으로 테스트하거나 몇 개의 스크립트를 작성해 서버를 배포한 뒤, 나중에 입력 스키마, 응답 형식, 의존성 등 무언가를 변경해도 회귀 방지망이 없습니다.
- 팀원들은 서버와 연동해 개발하기 위해 API 키와 실행 중인 인스턴스가 필요합니다.
- CI 파이프라인은 종종 서버가 실제로 작동하는지를 검증하지 않습니다.
- 악성 콘텐츠에 대한 도구 설명 감시는 거의 자동화되지 않습니다.
각각의 문제점마다 별도의 해결책이 존재하지만, 이를 모두 연결하려면 많은 접합 코드가 필요하고, 이러한 코드는 실제 운영 환경에 거의 남지 않습니다.
기존 도구 (간단 설문)
| Tool | 강점 | 제한점 |
|---|---|---|
| MCP Inspector (Anthropic) | 대화형 디버깅 및 탐색 | CI 또는 자동화 테스트에 적합하지 않음 |
| MCP‑Scan (Invariant Labs / Snyk) | 보안 스캔(툴 중독, 러그풀 탐지) | 보안에만 초점 |
| Promptfoo | 최근 MCP 지원이 포함된 LLM 레드팀 테스트 | 주로 프롬프트 수준 테스트이며 전체 서버 워크플로우는 아님 |
| MCP Protocol Validator | 스펙 준수 검사 | 범위가 좁음 |
| Ad‑hoc SDK scripts | 완전 맞춤형 | 확장성이 없으며 모든 것을 직접 관리해야 함 |
이 도구들 중 어느 것도 전체 루프인 record → replay → mock → audit → score → CI 를 모두 다루지 못합니다.
MCPSpec 소개
MCPSpec은 전체 테스트 수명 주기를 단일 도구로 처리함으로써 격차를 해소하는 것을 목표로 하는 오픈‑소스 CLI입니다.
핵심 기능
- Record: 서버와의 실제 상호작용 세션을 기록합니다.
- Replay: 새로운 서버 버전에서 세션을 재생하고 모든 응답의 차이를 확인합니다.
- Mock 생성: API 키나 실시간 인스턴스 없이 CI에서 사용할 수 있는 독립형 JavaScript 모크 서버를 생성합니다.
- Audit: 도구 오염, 과도한 권한, 경로 탐색, 인젝션 등 보안 문제를 검사합니다.
- Score: 문서화, 스키마 품질, 오류 처리, 응답성, 보안 측면에서 서버를 평가합니다.
- CI 통합: GitHub Actions, GitLab CI, 또는 셸 스크립트를 자동으로 생성하여 기록/재생, 감사, 점수 검사를 수행합니다.
- 선택적 YAML‑기반 테스트 컬렉션: 10가지 어설션 유형, 환경 변수, 태그, 병렬 실행을 지원합니다.
세션 기록 및 재생
# 현재 서버에 대해 세션을 기록
mcpspec record start "npx my-server"
# ...도구를 인터랙티브하게 호출한 뒤 세션 저장
mcpspec record save my-session
# 새 버전에 대해 기록된 세션을 재생
mcpspec record replay my-session "npx my-server-v2"
샘플 출력
Replaying 3 steps...
1/3 get_user (id=1)... [OK] 42ms
2/3 list_items... [CHANGED] 38ms
3/3 create_item (name=test) [OK] 51ms
Summary: 2 matched, 1 changed, 0 added, 0 removed
Mock 서버 생성
mcpspec mock my-session --generate ./mocks/server.js
생성된 server.js는 @modelcontextprotocol/sdk에만 의존합니다. 이를 저장소에 커밋하고 외부 의존성 없이 CI 또는 로컬 개발에서 사용하십시오.
보안 문제 감사를 위한
# Passive mode (metadata only, safe for production)
mcpspec audit "npx my-server"
# Active mode (sends test payloads, skips destructive tools)
mcpspec audit "npx my-server" --mode active
감사는 실제 문제를 탐지하는 8개의 규칙을 실행합니다. 포함되는 항목은 다음과 같습니다:
- Tool Poisoning – LLM이 무조건 따를 수 있는 숨겨진 명령.
- Excessive Agency – 확인 없이 파괴적인 행동을 수행할 수 있는 도구.
- Path traversal, injection, input validation, info disclosure, resource exhaustion, auth bypass.
서버 점수 매기기
# Get a 0‑100 score across five categories
mcpspec score "npx my-server"
# Enforce a minimum score (e.g., fail CI if below 80)
mcpspec score "npx my-server" --min-score 80
점수는 README에 배지 형태로 표시하거나, 병합을 제한하는 기준으로 사용할 수 있습니다.
CI 통합
mcpspec ci-init
이 명령은 GitHub Actions 워크플로, GitLab CI 구성 또는 일반 셸 스크립트를 자동으로 생성하여 기록/재생, 감사 및 점수 매기기 단계를 자동으로 실행합니다.
설치 및 빠른 시작
npm install -g mcpspec
설정 없이 미리 빌드된 테스트 컬렉션을 실행합니다:
mcpspec test examples/collections/servers/filesystem.yaml
MCPSpec은 70개의 즉시 실행 가능한 테스트를 제공하며, 이는 파일 시스템, 메모리, 시간, fetch, everything, GitHub, Chrome DevTools 등 7개의 인기 MCP 서버를 대상으로 합니다.
웹 대시보드도 사용할 수 있습니다:
mcpspec ui
이 모든 것은 무료이며, 빠르고, 재현 가능하며, MIT 라이선스를 갖추고 있습니다.
- GitHub: https://github.com/light-handle/mcpspec
- Documentation: https://light-handle.github.io/mcpspec
다음은?
향후 작업에는 다음이 포함됩니다:
- Contract snapshots – 스키마 파괴 변경을 자동으로 감지합니다.
- Schema drift detection for CI pipelines.
아이디어와 피드백을 환영합니다!