Modellkontextprotokoll · rmcp 2.2

Verbinden Sie Ihre Agenten mit den Systemen wo Arbeit stattfindet.

Mit MCP kann ein anderes Programm über einen Standardvertrag Tools, Informationen und wiederverwendbare Eingabeaufforderungen veröffentlichen. ADK-Rust wandelt diese Funktionen in typisierte Agententools um, macht das umfassendere Protokoll verfügbar und kann eine wechselnde Flotte lokaler MCP-Server verwalten, während Ihr Produkt ausgeführt wird.

WerkzeugeRessourcenAufforderungenFertigstellungAbonnementsErhebungAufgabenStdioStreamable HTTP

ADK-Rust MCP-Architektur

Fügen Sie Ihrem Agenten MCP-Funktionen hinzu oder entfernen Sie sie.

Ihr Agent nutzt die MCP-Funktionen wie jedes andere ADK-Rust-Tool. MCP verbindet es mit jedem Server, wobei jeder Server für seine eigenen Daten, Regeln und Aktionen verantwortlich bleibt.

01

Agentenprodukt

Die Erfahrung, nach Arbeit zu fragen.

Agent oder Workflow

Wählt eine Funktion aus den Tools aus, die sie sehen darf.

ADK-Richtlinie

Wendet Genehmigung, Autorisierung, Leitplanken und Prüfung rund um den Anruf an.

Toolset
02

ADK-Rust MCP-Client

Der typisierte Adapter innerhalb der Laufzeit.

McpToolset

Erkennt Tools und bewahrt die Schemata und Ergebnisinhalte des Servers.

Protokoll APIs

Ressourcen, Eingabeaufforderungen, Abschluss, Abonnements, Erhebung und Aufgaben.

Servermanager

Ändert und überwacht eine Registrierung lokaler stdio-Verbindungen.

MCP
03

Verbindungsgrenze

Wählen Sie den Transport, der dem Eigentum entspricht.

Lokal stdio

ADK-Rust startet einen nativen Binärprozess oder einen anderen untergeordneten Prozess und ist Eigentümer seiner Sitzung.

Streamable HTTP

Stellen Sie eine Verbindung zu einem unabhängig gehosteten Dienst mit Headern, Authentifizierung und Zeitüberschreitungen her.

Vertrag
04

MCP-Server

Jeder Server veröffentlicht nur das, was er besitzt.

Werkzeuge

Aktionen

Ressourcen

Kontext

Aufforderungen

Vorlagen

Aufgaben

Lange Arbeit

Jeder Server bleibt für seine eigenen Anmeldeinformationen, Datenzugriffe, Nebenwirkungen und Dienstintegrität verantwortlich

Geschäftsdaten

CRM, ERP, Bestellungen, Dokumente, Analysen und internes Wissen.

Entwicklersysteme

Quellcodeverwaltung, Build-Tools, Browser, Sandboxes und Codierungsumgebungen.

Externe Dienstleistungen

Zahlungen, Kommunikation, Suche, Karten und Partner APIs.

Spezielle Laufzeiten

Medienerstellung, Tabellenkalkulationen, Computernutzung und domänenspezifische Dienste.

„McpToolset“ verwaltet eine Verbindung. „McpServerManager“ verwaltet eine wechselnde Flotte lokaler Verbindungen. Das offizielle „rmcp“ SDK bleibt für benutzerdefinierte Server, Transporte, Handler und Protokollerweiterungen verfügbar.

Beginnen Sie mit dem Problem

Warum brauchen wir MCP?

Ein KI-Agent wird nützlich, wenn er die Systeme erreichen kann, die echte Informationen enthalten und echte Arbeit leisten. Ohne ein gemeinsames Protokoll benötigt jede Datenbank, jedes SaaS-Produkt, jedes Browser-Tool, jeder interne Dienst und jede Fachlaufzeit einen benutzerdefinierten Adapter. Diese Adapter wiederholen Erkennung, Schemata, Transport, Fehler, Authentifizierung und Lebenszykluscode.

MCP legt einen stabilen Vertrag um diese Grenze herum fest. Ein Server beschreibt, was er bietet und wie er aufgerufen wird. Ein Client erkennt diesen Katalog zur Laufzeit. Die Agent-Anwendung kann dann eine überprüfte Funktion auswählen, ohne die Implementierung des Servers zu importieren oder seine privaten Anmeldeinformationen zu erhalten.

ADK-Rust verbindet diesen Vertrag mit denselben Tool- und Toolset-Abstraktionen, die von nativen Rust-Tools verwendet werden. Das Modell kann über seine normale Agentenschleife mit MCP-Funktionen arbeiten, während die Anwendung die anbieterspezifische Schemakonvertierung, Genehmigung, Sitzungen, Telemetrie und Betriebsrichtlinien rund um den Anruf beibehält.

Werkzeug

Etwas, worum der Agent einen Server bitten kann

Ein Tool verfügt über einen Namen, eine nützliche Beschreibung, ein Eingabeschema und optional ein Ausgabeschema. Beispiele hierfür sind das Lesen einer Bestellung, das Durchsuchen eines Repositorys, das Aktualisieren eines Tickets oder das Erstellen einer Tabelle.

Ressource

Kontext, den der Agent oder das Produkt lesen kann

Eine Ressource gibt Informationen einen stabilen URI. Es kann ein Dokument, eine Richtlinie, einen Datenbankeintrag, einen Katalog oder ein generiertes Ergebnis darstellen, ohne den Eindruck zu erwecken, dass das Lesen von Daten eine Aktion sei.

Prompt

Eine wiederverwendbare Nachrichtenvorlage, die vom Server veröffentlicht wird

Eine Eingabeaufforderung kann die richtigen Anweisungen und Eingaben für eine Aufgabe erfassen, die der Domäne des Servers gehört, beispielsweise die Untersuchung einer Bestellung oder die Überprüfung einer Bereitstellung.

Erhebung

Eine Bitte wegen fehlender menschlicher Eingaben

Während eines Toolaufrufs kann ein Server den Client auffordern, ein Formular vorzulegen oder eine genehmigte URL zu öffnen. Die Verantwortung für die Einwilligung und die Validierung der Antwort bleibt bei der Anwendung.

Dynamic MCP management

Capabilities can change while the product keeps running.

An agent product may serve several tenants, workspaces, or operating modes. The useful MCP servers can change when a workspace opens, an administrator enables an integration, a credential rotates, or a specialist process is upgraded.

`McpServerManager` keeps that lifecycle in the application instead of forcing every server definition into startup code. It is designed for local stdio child processes; independently hosted HTTP services remain application-owned connections.

01

Load the registry

Read mcp.json-compatible definitions or construct them in Rust. Disabled servers stay registered without starting.

02

Start and negotiate

Spawn each enabled child and complete the MCP handshake before its capabilities become visible.

03

Discover safely

List tools from running servers, filter the published surface, and prefix only names that collide.

04

Change it live

Add, update, enable, disable, or remove a server without rebuilding the agent application.

05

Supervise the session

Detect a closed connection and apply the server's bounded exponential-backoff restart policy.

06

Save and close

Persist the current registry atomically, cancel MCP sessions, wait for the grace period, and drop child transports.

Practical sequence

Resolve a damaged order with three independently owned capabilities.

The model does not receive database credentials or private API clients. It receives a reviewed catalog of tools and resources. ADK-Rust keeps approval around the consequential replacement call.

Support agent01Discover approved CRM, order, and policy toolsMCP client
MCP client02tools/list over the negotiated connectionsThree MCP servers
Support agent03read_order { order_id: ORD-1042 }Orders server
Orders server04Structured order and delivery evidenceSupport agent
Support agent05Read the current damaged-goods policy resourcePolicy server
Support agent06request_replacement after ADK approvalCRM server
CRM server07Replacement ID, status, and audit evidenceSupport agent

Aktuelle Protokolloberfläche

ADK-Rust verwendet das umfassendere MCP-Protokoll, nicht nur Toolaufrufe.

Die direkten ADK-Rust APIs decken die Funktionen ab, die ein Agentenprodukt am häufigsten benötigt: Tools erkennen und aufrufen, Ressourcen lesen, Eingabeaufforderungen auflösen, Argumentvorschläge anfordern, sich ändernde Ressourcen abonnieren, Ermittlungsanfragen beantworten und einer ausgehandelten, lang laufenden Toolaufgabe folgen.

Für erweitertes Server-Authoring, benutzerdefinierte Client-Handler, Benachrichtigungen, Transporte, Autorisierungsarbeiten und Protokollerweiterungen exportiert adk_tool::mcp::rmcp genau die offizielle SDK-Version, die im Framework verwendet wird. Dadurch wird vermieden, dass inkompatible Protokolltypen in einer Anwendung gemischt werden.

01

Agentenseitige Adapter

Verwenden Sie MCP-Funktionen innerhalb gewöhnlicher ADK-Rust-Agenten- und Tool-Flows.

tools/list + tools/call
Rohe Eingabe-/Ausgabeschemata
Text, Bild, Audio, Ressourcen
Werkzeugfilter
Anbieternormalisierung
02

Kontext und Anleitung

Lesen Sie den Rest des Katalogs, anstatt MCP auf Toolaufrufe zu reduzieren.

Ressourcen + Vorlagen
prompts/list + get
prompte Fertigstellung
Ressourcenvervollständigung
Ressourcenabonnements
03

Interaktive und lange Arbeit

Unterstützen Sie Protokollgespräche, die über eine unmittelbare Antwort hinausgehen.

Formularerhebung
URL-Ermittlung
ausgehandelte Werkzeugaufgaben
Aufgaben/Erhalten + Ergebnis
begrenzte Stornierung
04

Verbindungen

Wählen Sie lokale Prozessverantwortung oder einen separat gehosteten Dienst.

lokale stdio
Streamable HTTP
benutzerdefinierte Header
Inhaber + API-Schlüssel
Wiederherstellung abgelaufener Sitzungen
Eine bewusste Kompatibilitätsgrenze: MCP-Sampling, Roots und Protokollierung sind stromaufwärts bis SEP-2577 veraltet. ADK-Rust hält das Sampling hinter einer Opt-in-Kompatibilitätsfunktion aufrecht; Sie wird nicht als empfohlene Architektur für ein neues Produkt dargestellt.

Arbeitsbeispiel

Verwalten Sie MCP-Server vom Start bis zum Herunterfahren.

Eine Anwendung benötigt möglicherweise unterschiedliche MCP-Funktionen für jeden Arbeitsbereich, Kunden oder jede Aufgabe. Die Festcodierung jedes Servers beim Start erschwert diese Änderungen. McpServerManager gibt der Anwendung einen Ort, an dem sie lokale MCP-Server starten, ihre Tools kombinieren, ihre Konfiguration ändern, ihre Verbindungen überwachen und sie sauber schließen kann.

Dieses Beispiel beginnt mit einem konfigurierten Server namens local-tools. Der Agent kann sein Echo-Tool erkennen und aufrufen. Anschließend fügt die Anwendung einen zweiten Server hinzu, aktiviert ihn, ersetzt seine laufende Konfiguration, speichert die aktualisierte Registrierung und entfernt sie wieder. Bei jeder Änderung werden dieselben APIs verwendet, die für einen Verwaltungsbildschirm oder einen Konfigurationsdienst verfügbar sind.

Das Beispiel läuft vollständig auf Ihrem Computer. Die ausführbare Datei Rust startet eine Kopie von sich selbst als untergeordneter Server MCP, sodass Handshake, Tool-Erkennung, Tool-Aufruf, Neustart, Persistenz und Herunterfahren real sind. Es ist kein Modell, Node.js-Paket, API-Schlüssel oder Internetverbindung erforderlich.

01

Starten Sie einen Server

Laden Sie local-tools aus einer mcp.json-kompatiblen Konfiguration, starten Sie den untergeordneten Prozess, schließen Sie den MCP-Handshake ab und ermitteln Sie das Echo-Tool.

02

Fügen Sie einen weiteren Server hinzu

Registrieren Sie Standby-Tools als deaktiviert, aktivieren und starten Sie es dann, wenn die Anwendung entscheidet, dass die Funktion verfügbar werden soll.

03

Ersetzen Sie es sicher

Aktualisieren Sie die Definition des laufenden Servers. Der Manager startet es mit der neuen Konfiguration neu und kann die vorherige Definition wiederherstellen, wenn der Ersatzstart fehlschlägt.

04

Speichern und herunterfahren

Schreiben Sie die Live-Registrierung zurück in JSON, deaktivieren und entfernen Sie den zusätzlichen Server und schließen Sie dann jede MCP-Sitzung und jeden untergeordneten Prozess sauber.

manager.rsROST
let manager = McpServerManager::from_json(&config)?
      .with_health_check_interval(Duration::from_secs(15));

  manager.start_server("local-tools").await?;
  manager.start_monitoring();

  manager
      .add_server("standby-tools".into(), standby)
      .await?;
  manager.enable_server("standby-tools").await?;
  manager.start_server("standby-tools").await?;

  manager
      .update_server("standby-tools", replacement)
      .await?;
  manager.save_json_file("mcp.json").await?;
  manager.shutdown().await?;
terminalECHTER OUTPUT
$ cargo run --manifest-path     examples/mcp_manager/Cargo.toml

  1. Loaded local-tools from mcp.json-compatible configuration
     status: Running
  2. Discovered 1 tool: echo
  3. Called the real child server
     response: {"output":"MCP server replied: dynamic MCP is running"}
  4. Added standby-tools at runtime: Disabled
     enabled and started: Running
  5. Reconfigured the running server and restarted it safely
  6. Saved the live registry
  7. Disabled, removed, and shut down every child server

Client, Manager oder Server

Wählen Sie die ADK-Rust MCP-Funktion, die Sie benötigen.

Die meisten Agentenanwendungen sind MCP-Clients. Sie verbinden sich mit einem bestehenden Server und stellen ausgewählte Tools einem Agenten zur Verfügung. Produkte, die Arbeitsbereichs- oder Administratorintegrationen ermöglichen, können lokale stdio-Verbindungen hinter dem Manager platzieren. Teams, die eine neue Funktion veröffentlichen, verwenden die erneut exportierten rmcp-Server APIs und testen den Server dann von einem ADK-Rust-Client aus.

Your situation
Use
Why
One known MCP service
McpToolset
One initialized connection, filters, tools, resources, prompts, completion, subscriptions, elicitation, and tasks.
A changing set of local integrations
McpServerManager
Runtime add, update, enable, disable, remove, save, monitor, restart, aggregation, and collision-safe names.
A separately hosted MCP service
McpHttpClientBuilder
Streamable HTTP with request timeout, headers, bearer or API-key injection, and expired-session recovery.
You own the capability being published
adk_tool::mcp::rmcp
Build the MCP server with the official SDK version already aligned with ADK-Rust.

Produktionsdesign

Stellen Sie MCP sicher bereit.

MCP sorgt für konsistente Erkennung und Kommunikation. Es entscheidet nicht, welche Systeme ein Agent erreichen soll, welche Aktionen eine Genehmigung erfordern, wie Anmeldeinformationen ausgestellt werden oder was passieren soll, wenn eine Abhängigkeit fehlschlägt. Das bleiben Produkt- und Plattformentscheidungen.

Wählen Sie die Servergrenze

Erstellen Sie einen Server rund um eine kohärente Funktion, die einem Team oder System gehört. Vermeiden Sie einen riesigen Server, dessen Tools unabhängige Anmeldeinformationen und Risikostufen umfassen.

Veröffentlichen Sie eine kleine Oberfläche

Filtern Sie Werkzeuge, bevor das Modell sie sieht. Halten Sie Lesevorgänge getrennt von Schreibvorgängen, Zahlungen, Löschungen, Bereitstellungen und anderen Folgeaktionen.

Behalten Sie die Genehmigung in ADK-Rust bei

mcp.json autoApprove bleibt aus Kompatibilitätsgründen erhalten; Es umgeht nicht die Autorisierung, die Bestätigungshandler oder die Anwendungsrichtlinie des Frameworks.

Ordnen Sie Transport und Eigentum zu

Verwenden Sie stdio, wenn Ihre Anwendung Eigentümer des lokalen untergeordneten Prozesses ist. Verwenden Sie Streamable HTTP, wenn eine andere Bereitstellung Verfügbarkeit, Identität und Skalierung besitzt.

Behandeln Sie Inhalte als nicht vertrauenswürdig

Werkzeugbeschreibungen, Schemata, Ressourceninhalte und Ergebnisse überschreiten eine Systemgrenze. Validieren Sie Argumente, begrenzen Sie Ergebnisgrößen und schützen Sie den Modellkontext vor feindlichen Anweisungen.

Betreiben Sie die Abhängigkeiten

Legen Sie Verbindungs- und Aufgaben-Timeouts fest, zeichnen Sie Lebenszyklusänderungen auf, prüfen Sie die Geschäftsabhängigkeit separat und entscheiden Sie, wie sich das Produkt verhält, wenn ein Server nicht verfügbar ist.

Authentifizierungsdetail: Der HTTP-Builder unterstützt Bearer-Tokens, benutzerdefinierte API-Schlüsselheader und einen festen OAuth 2.0-Client-Anmeldeinformations-Token-Endpunkt. Die vollständige MCP-Autorisierungserkennung, Browser-Autorisierung, PKCE und die Aushandlung von Ressourcenindikatoren sollten die offiziellen rmcp-Autorisierungs-APIs oder Ihre Identitätsschicht verwenden.

Verbinden Sie die nützlichen Systeme

Geben Sie einem Agenten eine sorgfältig ausgewählte Funktion und erweitern Sie dann das Netzwerk.

Beginnen Sie mit einem Server, den Sie verstehen, filtern Sie seinen Katalog, rufen Sie ein schreibgeschütztes Tool auf und überprüfen Sie das vollständige Ergebnis. Fügen Sie Schreibaktionen, dynamisches Management, Remote-Dienste, Erhebung und lang laufende Aufgaben hinzu, wenn das Produkt jeweils einen klaren Grund hat.