MCP 테스트 및 검증

MCP 통합은 프로세스, 전송, 스키마 및 권한 부여 경계를 넘나듭니다. 단위 테스트만으로는 불충분합니다. 실제 핸드셰이크와 도구 호출을 완료하는 최소한 하나의 결정론적 클라이언트/서버 테스트를 유지하십시오.

집중된 프레임워크 게이트

cargo test -p adk-tool --features mcp --lib mcp
cargo test -p adk-tool --features mcp --test mcp_roundtrip_property_tests
cargo test -p adk-tool --features mcp,mcp-sampling --test mcp_sampling_property_tests
cargo clippy -p adk-tool --features mcp,http-transport,mcp-sampling -- -D warnings

샘플링 게이트는 업스트림에서 더 이상 사용되지 않는 기능에 대한 호환성 커버리지이며, 새로운 아키텍처에 대한 권장 사항이 아닙니다.

통합 소비자 컴파일

cargo check -p adk-acp --all-features
cargo check -p adk-computer-use

이 게이트는 MCP 구성을 포함하거나 전달하는 크레이트 간의 불일치하는 공개 rmcp 유형을 잡아냅니다.

독립형 예제

cargo check --manifest-path examples/mcp_elicitation/Cargo.toml
cargo check --manifest-path examples/mcp_sampling/Cargo.toml
cargo check --manifest-path examples/mcp_manager/Cargo.toml
cargo run --manifest-path examples/mcp_manager/Cargo.toml

examples/mcp_manager는 결정론적 라이브 게이트입니다. 이는 픽스처 모드에서 자체 바이너리를 실행하여 실제 Rust stdio 서버를 시작합니다. 이 테스트는 패키지를 다운로드하거나 원격 엔드포인트에 연결하지 않습니다.

라이브 예제가 증명하는 것

  • 자식 프로세스 시작;
  • MCP 초기화 및 기능 협상;
  • 도구 검색;
  • 실제 도구 요청 및 결과;
  • 런타임 추가, 활성화, 업데이트, 비활성화 및 제거;
  • 레지스트리 직렬화 및 파일 영속성; 그리고
  • 세션 종료.

배포별 테스트가 필요한 사항

  • 원격 HTTP ID 및 토큰 정책;
  • 전체 MCP OAuth 검색 및 사용자 권한 부여;
  • 외부 API 및 데이터베이스 상태;
  • 프로세스 샌드박스 강제 적용;
  • 테넌트 격리;
  • 승인 UI 및 감사 저장소;
  • 결과에 영향을 미치는 도구에 대한 재시도 및 멱등성 동작; 그리고
  • 애플리케이션 재시작 후 작업 복구.

테스트 서버 계약

모든 서버에 대해 다음을 위한 픽스처를 유지하십시오:

  • 초기화 기능 정확성;
  • 도구 및 리소스 schemas;
  • 유효하지 않거나 승인되지 않은 입력;
  • 최대 결과 크기;
  • 취소 및 타임아웃 동작;
  • 쓰기 작업의 멱등성 재시도; 그리고
  • 자격 증명 및 민감한 필드 수정.