Protocole de contexte de modèle · rmcp 2.2

Connectez vos agents aux systèmes où se déroule le travail.

MCP permet à un autre programme de publier des outils, des informations et des invites réutilisables via un contrat standard. ADK-Rust transforme ces fonctionnalités en outils d'agent typés, expose le protocole plus large et peut gérer une flotte changeante de serveurs MCP locaux pendant l'exécution de votre produit.

OutilsRessourcesInvitesAchèvementAbonnementsÉlicitationTâchesStdioStreamable HTTP

Architecture ADK-Rust MCP

Ajoutez ou supprimez des fonctionnalités MCP de votre agent.

Votre agent utilise les fonctionnalités MCP comme n'importe quel autre outil ADK-Rust. MCP le connecte à chaque serveur, tandis que chaque serveur reste responsable de ses propres données, règles et actions.

01

Produit agent

L’expérience de demander du travail.

Agent ou workflow

Choisit une fonctionnalité parmi les outils qu’elle a été autorisée à voir.

Politique ADK

Applique l’approbation, l’autorisation, les garde-fous et l’audit autour de l’appel.

Toolset
02

Client ADK-Rust MCP

L’adaptateur typé à l’intérieur du runtime.

McpToolset

Découvre les outils et préserve les schémas et le contenu des résultats du serveur.

Protocole APIs

Ressources, invites, achèvement, abonnements, sollicitation et tâches.

Gestionnaire de serveur

Modifie et supervise un registre de connexions stdio locales.

MCP
03

Limite de connexion

Choisissez le transport qui correspond à la propriété.

Locale stdio

ADK-Rust démarre un binaire natif ou un autre processus enfant et est propriétaire de sa session.

Streamable HTTP

Connectez-vous à un service hébergé indépendamment avec des en-têtes, une authentification et des délais d'attente.

Contrat
04

Serveurs MCP

Chaque serveur publie uniquement ce qui lui appartient.

Outils

Actions

Ressources

Contexte

Invites

Modèles

Tâches

Long travail

chaque serveur reste responsable de ses propres informations d'identification, de l'accès aux données, des effets secondaires et de l'état du service

Données commerciales

CRM, ERP, commandes, documents, analyses et connaissances internes.

Systèmes de développement

Contrôle de code source, outils de création, navigateurs, bacs à sable et environnements de codage.

Prestations externes

Paiements, communications, recherche, cartes et partenaires API.

Exécutions spécialisées

Génération de médias, feuilles de calcul, utilisation de l'ordinateur et services spécifiques au domaine.

`McpToolset` gère une connexion. `McpServerManager` gère un parc changeant de connexions locales. Le `rmcp` SDK officiel reste disponible pour les serveurs personnalisés, les transports, les gestionnaires et les extensions de protocole.

Commencez par le problème

Pourquoi avons-nous besoin de MCP ?

Un agent IA devient utile lorsqu’il peut atteindre les systèmes qui contiennent de vraies informations et effectuer un vrai travail. Sans protocole partagé, chaque base de données, produit SaaS, outil de navigation, service interne et environnement d'exécution spécialisé a besoin d'un adaptateur personnalisé. Ces adaptateurs répètent le code de découverte, de schémas, de transport, d'erreurs, d'authentification et de cycle de vie.

MCP établit un contrat stable autour de cette limite. Un serveur décrit ce qu'il propose et comment l'appeler. Un client découvre ce catalogue au moment de l'exécution. L'application agent peut alors sélectionner une fonctionnalité examinée sans importer l'implémentation du serveur ni recevoir ses informations d'identification privées.

ADK-Rust connecte ce contrat aux mêmes abstractions Tool et Toolset utilisées par les outils Rust natifs. Le modèle peut fonctionner avec les fonctionnalités de MCP via sa boucle d'agent normale, tandis que l'application conserve la conversion de schéma, l'approbation, les sessions, la télémétrie et la politique de fonctionnement spécifiques au fournisseur autour de l'appel.

Outil

Quelque chose que l'agent peut demander à un serveur de faire

Un outil a un nom, une description utile, un schéma d'entrée et éventuellement un schéma de sortie. Les exemples incluent la lecture d'une commande, la recherche dans un référentiel, la mise à jour d'un ticket ou la génération d'une feuille de calcul.

Ressource

Contexte que l'agent ou le produit peut lire

Une ressource donne à l’information un URI stable. Il peut représenter un document, une politique, un enregistrement de base de données, un catalogue ou un résultat généré sans prétendre que la lecture des données est une action.

Invite

Un modèle de message réutilisable publié par le serveur

Une invite peut capturer les instructions et entrées appropriées pour une tâche appartenant au domaine du serveur, telle que l'enquête sur une commande ou la révision d'un déploiement.

Élicitation

Une demande d’apport humain manquant

Lors d'un appel d'outil, un serveur peut demander au client de présenter un formulaire ou d'ouvrir une URL approuvée. L'application reste responsable du consentement et de la validation de la réponse.

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

Surface actuelle du protocole

ADK-Rust utilise le protocole MCP plus large, pas seulement les appels d'outils.

Les ADK-Rust API directs couvrent les fonctionnalités dont un produit d'agent a le plus souvent besoin : découvrir et appeler des outils, lire des ressources, résoudre des invites, demander des suggestions d'arguments, s'abonner à des ressources changeantes, répondre à des demandes d'élicitation et suivre une tâche d'outil négociée de longue durée.

Pour la création de serveur avancée, les gestionnaires de clients personnalisés, les notifications, les transports, le travail d'autorisation et les extensions de protocole, adk_tool::mcp::rmcp réexporte la version officielle exacte de SDK utilisée dans le framework. Cela évite de mélanger des types de protocoles incompatibles dans une seule application.

01

Adaptateurs côté agent

Utilisez les fonctionnalités MCP dans les flux d’agents et d’outils ADK-Rust ordinaires.

outils/liste + outils/appel
schémas d'entrée/sortie bruts
texte, image, audio, ressources
filtres d'outils
normalisation du fournisseur
02

Contexte et conseils

Lisez le reste du catalogue au lieu de réduire MCP à des appels d'outils.

ressources + modèles
invites/liste + obtenir
achèvement rapide
achèvement des ressources
abonnements aux ressources
03

Travail interactif et long

Prend en charge les conversations protocolaires qui se poursuivent au-delà d’une réponse immédiate.

élicitation de formulaire
Élicitation d'URL
tâches d'outils négociées
tâches/obtenir + résultat
annulation limitée
04

Connexions

Choisissez la propriété du processus local ou un service hébergé séparément.

locale stdio
Streamable HTTP
en-têtes personnalisés
porteur + clé API
récupération de session expirée
Une limite de compatibilité délibérée : L'échantillonnage, les racines et la journalisation MCP sont obsolètes en amont jusqu'à SEP-2577. ADK-Rust conserve l'échantillonnage derrière une fonctionnalité de compatibilité opt-in ; elle n'est pas présentée comme l'architecture recommandée pour un nouveau produit.

Exemple de travail

Gérez les serveurs MCP du démarrage à l'arrêt.

Une application peut nécessiter différentes fonctionnalités MCP pour chaque espace de travail, client ou tâche. Le codage en dur de chaque serveur au démarrage rend ces modifications difficiles. McpServerManager donne à l'application un seul endroit pour démarrer les serveurs MCP locaux, combiner leurs outils, modifier leur configuration, surveiller leurs connexions et les fermer proprement.

Cet exemple commence par un serveur configuré nommé local-tools. L'agent peut découvrir et appeler son outil d'écho. L'application ajoute ensuite un deuxième serveur, l'active, remplace sa configuration en cours d'exécution, enregistre le registre mis à jour et le supprime à nouveau. Chaque modification utilise les mêmes API disponibles sur un écran d'administration ou un service de configuration.

L'exemple s'exécute entièrement sur votre machine. L'exécutable Rust démarre une copie de lui-même en tant que serveur enfant MCP, de sorte que la prise de contact, la découverte d'outils, l'appel d'outil, le redémarrage, la persistance et l'arrêt sont réels. Aucun modèle, package Node.js, clé API ou connexion Internet n'est requis.

01

Démarrer un serveur

Chargez local-tools à partir d'une configuration compatible mcp.json, démarrez son processus enfant, terminez la négociation MCP et découvrez son outil d'écho.

02

Ajouter un autre serveur

Enregistrez les outils de veille comme désactivés, puis activez-les et démarrez-les lorsque l'application décide que cette fonctionnalité doit devenir disponible.

03

Remplacez-le en toute sécurité

Mettez à jour la définition du serveur en cours d'exécution. Le gestionnaire le redémarre avec la nouvelle configuration et peut restaurer la définition précédente en cas d'échec du démarrage de remplacement.

04

Enregistrer et arrêter

Réécrivez le registre en direct sur JSON, désactivez et supprimez le serveur supplémentaire, puis fermez proprement chaque session MCP et chaque processus enfant.

manager.rsROUILLE
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?;
terminalSORTIE RÉELLE
$ 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, gestionnaire ou serveur

Choisissez la capacité ADK-Rust MCP dont vous avez besoin.

Most agent applications are MCP clients. Ils se connectent à un serveur existant et mettent les outils sélectionnés à disposition d'un agent. Les produits qui permettent des intégrations d'espace de travail ou d'administrateur peuvent placer des connexions stdio locales derrière le gestionnaire. Les équipes publiant une nouvelle fonctionnalité utilisent le serveur rmcp réexporté APIs, puis testent le serveur à partir d'un client ADK-Rust.

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.

Conception de production

Déployez MCP en toute sécurité.

MCP rend la découverte et la communication cohérentes. Il ne décide pas quels systèmes un agent doit atteindre, quelles actions nécessitent une approbation, comment les informations d'identification sont émises ou ce qui doit se passer en cas d'échec d'une dépendance. Il s’agit toujours de décisions relatives aux produits et aux plates-formes.

Choisissez la limite du serveur

Créez un serveur autour d’une capacité cohérente appartenant à une équipe ou à un système. Évitez un énorme serveur dont les outils couvrent des informations d’identification et des niveaux de risque sans rapport.

Publier une petite surface

Filtrez les outils avant que le modèle ne les voie. Gardez les opérations de lecture distinctes des écritures, des paiements, de la suppression, du déploiement et des autres actions consécutives.

Conserver l'approbation dans ADK-Rust

mcp.json autoApprove est conservé pour des raisons de compatibilité ; il ne contourne pas l'autorisation, les gestionnaires de confirmation ou la politique d'application du framework.

Associer le transport à la propriété

Utilisez stdio lorsque votre application possède le processus enfant local. Utilisez Streamable HTTP lorsqu'un autre déploiement possède la disponibilité, l'identité et la mise à l'échelle.

Traiter le contenu comme non fiable

Les descriptions d'outils, les schémas, le contenu des ressources et les résultats traversent les limites du système. Validez les arguments, limitez la taille des résultats et protégez le contexte du modèle contre les instructions hostiles.

Exploiter les dépendances

Définissez les délais d'expiration des connexions et des tâches, enregistrez les modifications du cycle de vie, sondez les dépendances métier séparément et décidez du comportement du produit lorsqu'un serveur est indisponible.

Détails d'authentification : le générateur HTTP prend en charge les jetons de support, les en-têtes de clé API personnalisés et un point de terminaison de jeton d'informations d'identification client OAuth 2.0 fixe. La découverte complète des autorisations MCP, l'autorisation du navigateur, le PKCE et la négociation des indicateurs de ressources doivent utiliser l'autorisation officielle rmcp API ou votre couche d'identité.

Connectez les systèmes utiles

Donnez à un agent une capacité soigneusement choisie, puis développez le réseau.

Commencez par un serveur que vous comprenez, filtrez son catalogue, appelez un outil en lecture seule et inspectez le résultat complet. Ajoutez des actions d'écriture, une gestion dynamique, des services à distance, des tâches d'élicitation et de longue durée lorsque le produit a une raison claire pour chacune d'entre elles.