Teste e verificação de MCP

As integrações MCP cruzam limites de processo, transporte, esquema e autorização. Testes de unidade por si só são insuficientes; mantenha pelo menos um teste cliente/servidor determinístico que complete um handshake real e uma chamada de Tool.

Portões de framework focados

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

O portão de amostragem é uma cobertura de compatibilidade para uma capacidade obsoleta a montante, não uma recomendação para uma nova arquitetura.

Compilar consumidores de integração

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

Esses portões detectam tipos públicos rmcp incompatíveis entre crates que incorporam ou carregam configurações MCP.

Exemplos autônomos

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 é o portão ativo determinístico. Ele inicia um servidor stdio Rust real executando seu próprio binário no modo fixture. O teste não baixa um pacote nem contata um endpoint remoto.

O que o exemplo ativo prova

  • inicialização de processo filho;
  • inicialização do MCP e negociação de capacidade;
  • descoberta de ferramenta;
  • uma solicitação e resultado de ferramenta reais;
  • adição, habilitação, atualização, desabilitação e remoção em tempo de execução;
  • serialização de registro e persistência de arquivo; e
  • encerramento de sessão.

O que requer teste específico de implantação

  • política de identidade HTTP remota e de token;
  • descoberta completa de OAuth do MCP e autorização do usuário;
  • saúde de API externa e banco de dados;
  • aplicação de sandbox de processo;
  • isolamento de inquilino;
  • UI de aprovação e armazenamento de auditoria;
  • comportamento de repetição e idempotência para ferramentas consequenciais; e
  • recuperação de tarefa após uma reinicialização do aplicativo.

Contratos de servidor de teste

Para cada servidor, mantenha os fixtures para:

  • precisão da capacidade de inicialização;
  • esquemas de ferramentas e recursos;
  • entradas inválidas e não autorizadas;
  • tamanhos máximos de resultados;
  • comportamento de cancelamento e tempo limite;
  • tentativa idempotente de operações de escrita; e
  • redação de credenciais e campos sensíveis.