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;
- 유효하지 않거나 승인되지 않은 입력;
- 최대 결과 크기;
- 취소 및 타임아웃 동작;
- 쓰기 작업의 멱등성 재시도; 그리고
- 자격 증명 및 민감한 필드 수정.