MCP-Tests und -Verifizierung

MCP-Integrationen überschreiten Prozess-, Transport-, Schema- und Autorisierungsgrenzen. Unit-Tests allein sind unzureichend; bewahren Sie mindestens einen deterministischen Client/Server-Test auf, der einen echten Handshake und Tool-Aufruf abschließt.

Fokussierte Framework-Gates

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

Das Sampling-Gate ist eine Kompatibilitätsabdeckung für eine in der Upstream-Version veraltete Funktion, keine Empfehlung für eine neue Architektur.

Kompilieren von Integrationskonsumenten

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

Diese Gates fangen nicht übereinstimmende öffentliche rmcp-Typen über Crates hinweg ab, die MCP-Konfigurationen einbetten oder mit sich führen.

Eigenständige Beispiele

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 ist das deterministische Live-Gate. Es startet einen echten Rust stdio-Server, indem es sein eigenes Binärprogramm im Fixture-Modus ausführt. Der Test lädt kein Paket herunter oder kontaktiert keinen Remote-Endpunkt.

Was das Live-Beispiel beweist

  • Kinderprozess-Start;
  • MCP-Initialisierung und Fähigkeitsaushandlung;
  • Tool-Erkennung;
  • eine echte Tool-Anfrage und -Ergebnis;
  • Laufzeit-Hinzufügen, -Aktivieren, -Aktualisieren, -Deaktivieren und -Entfernen;
  • Registry-Serialisierung und Dateipersistenz; und
  • Session-Herunterfahren.

Was bereitstellungsspezifische Tests erfordert

  • Remote-HTTP-Identitäts- und Token-Richtlinie;
  • vollständige MCP OAuth-Erkennung und Benutzerautorisierung;
  • Gesundheit externer APIs und Datenbanken;
  • Erzwingung der Prozess-Sandbox;
  • Mandantenisolation;
  • Genehmigungs-UI und Audit-Speicherung;
  • Wiederholungs- und Idempotenzverhalten für konsequente Tools; und
  • Aufgabenwiederherstellung nach einem Anwendungsneustart.

Testserver-Verträge

Für jeden Server bewahren Sie Fixtures auf für:

  • Genauigkeit der Initialisierungsfähigkeit;
  • Werkzeug- und Ressourcenschemata;
  • ungültige und nicht autorisierte Eingaben;
  • maximale Ergebnisgrößen;
  • Abbruch- und Timeout-Verhalten;
  • idempotenter Wiederholungsversuch von Schreiboperationen; und
  • Redaktion von Anmeldeinformationen und sensiblen Feldern.