Données commerciales
CRM, ERP, commandes, documents, analyses et connaissances internes.
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.
Architecture ADK-Rust MCP
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.
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.
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.
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.
Chaque serveur publie uniquement ce qui lui appartient.
Outils
Actions
Ressources
Contexte
Invites
Modèles
Tâches
Long travail
CRM, ERP, commandes, documents, analyses et connaissances internes.
Contrôle de code source, outils de création, navigateurs, bacs à sable et environnements de codage.
Paiements, communications, recherche, cartes et partenaires API.
Génération de médias, feuilles de calcul, utilisation de l'ordinateur et services spécifiques au domaine.
Commencez par le problème
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
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
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
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
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
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.
Read mcp.json-compatible definitions or construct them in Rust. Disabled servers stay registered without starting.
Spawn each enabled child and complete the MCP handshake before its capabilities become visible.
List tools from running servers, filter the published surface, and prefix only names that collide.
Add, update, enable, disable, or remove a server without rebuilding the agent application.
Detect a closed connection and apply the server's bounded exponential-backoff restart policy.
Persist the current registry atomically, cancel MCP sessions, wait for the grace period, and drop child transports.
Practical sequence
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.
Surface actuelle du protocole
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.
Utilisez les fonctionnalités MCP dans les flux d’agents et d’outils ADK-Rust ordinaires.
Lisez le reste du catalogue au lieu de réduire MCP à des appels d'outils.
Prend en charge les conversations protocolaires qui se poursuivent au-delà d’une réponse immédiate.
Choisissez la propriété du processus local ou un service hébergé séparément.
Exemple de travail
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.
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.
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.
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.
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.
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?;$ 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 serverClient, gestionnaire ou serveur
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.
Conception de production
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.
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.
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.
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.
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.
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.
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.
Connectez les systèmes utiles
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.