WebMCP : La couche invisible pour les agents d'IA
Dans cet article, nous allons explorer le Model Context Protocol (MCP) et son tout nouveau pendant web, WebMCP. Nous verrons pourquoi ce concept pourrait changer la façon dont l'IA navigue sur Internet, et je vous guiderai étape par étape dans la création et l'enregistrement de votre tout premier outil WebMCP. C'est parti !
MCP
Le Model Context Protocol (MCP) a été introduit par Anthropic pour modifier la façon dont les modèles d'IA interagissent avec le web. Au lieu d'apprendre aux modèles d'IA comment utiliser des centaines d'API tierces différentes, le MCP crée une interface standardisée. Cette interface permet aux agents d'IA d'accéder directement à des outils et fonctions spécifiquement fournis par des développeurs tiers.
Plus nous connectons nos LLM et agents d'IA à des outils externes, plus ils deviennent performants. Cependant, les développeurs d'IA ne peuvent pas suivre l'évolution rapide de ces outils externes. Une simple modification d'une API peut facilement briser le flux de travail d'un agent d'IA.
Si les fournisseurs d'outils externes proposent une interface adaptée à l'IA, les développeurs d'IA peuvent tout simplement y connecter leurs agents. Anthropic a résolu ce problème précis en introduisant le MCP.
En résumé, le MCP est un protocole de communication. Il permet aux agents d'IA d'accéder en toute sécurité à des capacités backend spécifiques offertes par les développeurs.
WebMCP
Internet est conçu pour les humains. Il comporte des interfaces utilisateur (UI) intuitives qui nous guident facilement à travers un site web. Cependant, naviguer sur ces UI est incroyablement difficile pour les agents d'IA.
Pour naviguer sur un site aujourd'hui, un agent d'IA doit analyser des captures d'écran ou lire le code HTML brut. Bien que cela fonctionne la plupart du temps, les agents sont sujets aux erreurs. Cela gaspille également de la puissance de calcul, de l'énergie et des tokens juste pour comprendre la mise en page d'un site web.
C'est exactement le même problème que nous rencontrions avec les backends, mais au niveau du site web. WebMCP (un concept expérimental actuellement exploré par les communautés des standards du web) s'attaque à cette situation. Son objectif est de fournir une couche "invisible" implémentée par le développeur du site web. Les agents d'IA peuvent se greffer à cette couche pour accéder à un menu spécifique d'outils et de fonctions conçus rien que pour eux.
En théorie, cela éliminera complètement le travail fastidieux qu'un agent d'IA effectue actuellement pour naviguer sur un simple site web.
De plus, les outils WebMCP offrent une incroyable couche de contrôle pour prévenir les hallucinations de l'IA. Grâce à l'utilisation d'un indicateur d'erreur intégré (error flag), les agents d'IA peuvent immédiatement savoir si une exécution a échoué. Ils peuvent alors réessayer d'appeler l'outil avec des paramètres corrigés pour mener à bien leur tâche.
Cet article explorera en profondeur l'implémentation de WebMCP. Pour la démonstration, je vais implémenter un ensemble d'outils exploitables par l'IA directement sur ce blog.
L'implémentation est très différente des interfaces MCP classiques. Le MCP backend agit comme une API traditionnelle, accessible localement via stdio ou sur HTTP en utilisant SSE. WebMCP, en revanche, est complètement intégré à la couche du site web. Il communique en utilisant les API standard du navigateur, telles que le DOM ou l'objet window.
Implémentation
Les implémentations de WebMCP suivent généralement deux principes :
- API Déclarative : Agit comme une déclaration dans le code HTML. Elle donne un sens immédiat aux boutons et formulaires, permettant à l'agent d'IA de les les remplir ou de les utiliser sans effort.
- API Impérative : Utilise JavaScript pour concevoir des outils et des fonctions complexes, offrant des fonctionnalités puissantes directement à l'agent d'IA.
Puisqu'il n'y a pas de formulaires sur ce blog, je vais implémenter WebMCP en utilisant le principe impératif pour ma démonstration.
Commençons par une blague classique de développeur : sudo make me a sandwich.
Ce guide montrera comment enregistrer un outil WebMCP sur un blog Astro en utilisant uniquement du JavaScript Vanilla.
Dépendances
La véritable beauté de WebMCP côté client est que le protocole repose sur une extension de navigateur qui injecte l'API (navigator.modelContext). De ce fait, il n'y a aucune dépendance de production à télécharger ! Vous n'avez pas besoin de SDK pour créer des outils.
Cependant, pour tester nos outils localement, je recommande d'installer vitest :
Install Vitest
Créer la logique de l'outil
Chaque outil WebMCP impératif nécessite quatre composants essentiels :
name: L'identifiant unique que l'agent utilise pour appeler l'outil.description: Les instructions indiquant à l'agent ce que fait l'outil.inputSchema: Un schéma JSON standard définissant les paramètres attendus par l'outil.execute: La fonction JavaScript qui s'exécute lorsque l'outil est appelé.
Voici l'implémentation complète de l'outil :
Make Sandwich Tool Logic
Enregistrer l'outil
Créer la logique ne représente que la moitié du travail. Pour rendre l'outil découvrable par les agents d'IA qui visitent votre site, je dois l'enregistrer auprès du navigateur.
Je fais cela en créant un script d'enregistrement qui utilise l'API navigator.modelContext.registerTool() fournie par l'extension WebMCP.
Tool Registration
En transmettant l'objet de l'outil à registerTool(), l'extension du navigateur le détecte immédiatement et le met à disposition de tout agent d'IA actif.
Injection dans le Layout
Enfin, je dois m'assurer que ce script d'enregistrement s'exécute réellement lorsqu'un utilisateur (ou un agent) visite le site web. Dans un projet Astro, la meilleure façon de le faire est d'importer le script dans mon layout global principal (par ex., src/layouts/BaseLayout.astro) :
Layout Injection
En ajoutant cet extrait, le navigateur exécutera de manière transparente la logique d'enregistrement à chaque chargement de page.
Tester l'outil
Comme les outils WebMCP sont de simples objets JavaScript standard, ils sont incroyablement faciles à tester unitairement. Je vais utiliser Vitest pour simuler les entrées et vérifier les sorties dans src/lib/webmcp/tools/makeSandwich.test.ts.
J'importe directement makeSandwichTool et j'appelle sa fonction execute, en vérifiant à la fois le parcours d'erreur et celui de succès :
Testing the Tool
Et voilà, c'est construit, enregistré et testé de manière approfondie un outil WebMCP !
Puisque ce site contient des articles, j'ai également créé des outils pour que l'IA puisse rechercher des articles, récupérer le texte brut d'un article, et en extraire des blocs de code.
- J'utilise Pagefind comme moteur de recherche sur ce blog, je l'utilise donc pour enregistrer un outil
search_articles. - Pour les articles bruts et les blocs de code, les données seront simplement extraites et renvoyées à l'outil.
Tous ces outils sont impératifs et seront enregistrés sur navigator.modelContext. L'IA lira leurs descriptions et orchestrera facilement leur utilisation en fonction des besoins de l'utilisateur.
Interaction
Pour tester la solution, j'ai utilisé Chrome. Étant donné que WebMCP est encore au stade expérimental, j'ai dû activer un flag spécifique pour accéder aux outils : chrome://flags/#enable-webmcp-testing
Une fois le flag activé, on peut utiliser les DevTools de Chrome pour voir les outils WebMCP disponibles.
Dans les DevTools, on peut lister les outils présents sur le site. Ils apparaissent avec leurs descriptions et les indications de saisie.

De plus, on peut exécuter et tester ces outils directement. Un tableau affiche l'historique des exécutions d'outils. En sélectionnant une ligne, on obtient plus de détails sur l'exécution, notamment le résultat ou la sortie.

Dans l'exemple suivant, on peut voir une autre exécution de l'outil make_sandwich :

Cependant, il s'agit d'une validation statique. Cela ne correspond pas au cas d'utilisation réel d'un agent d'IA manipulant ces outils. Au moment de l'écriture de cet article, l'intégration de Gemini sur Chrome n'était pas encore déployée dans ma région, j'ai donc utilisé une extension Chrome appelée webmcp-inspector. (Note : Il s'agit d'une nouvelle extension, à utiliser avec prudence).
Dès l'ouverture, l'extension liste les outils disponibles. Notez comment ils sont soigneusement divisés par type.

On peut également tester les outils directement, tout comme nous l'avons fait avec les DevTools.

La partie la plus intéressante est que je peux relier cela à un agent d'IA. Je peux demander à l'agent de tester sa capacité à utiliser les outils. L'inspecteur WebMCP trace également l'utilisation des outils enregistrés.

Dans la réponse ci-dessous, nous pouvons voir que l'agent a réussi à extraire le code avec succès :

Ces outils sont actuellement enregistrés sur ce blog au moment où nous parlons ! Ils sont accessibles et utilisables, alors n'hésitez pas à les tester vous-même.
En conclusion, les outils WebMCP offrent des capacités prêtes à l'emploi pour les agents d'IA. Ils permettent d'intégrer directement les agents aux navigateurs pour exécuter des processus ciblés. Cela réduit considérablement les risques d'erreur par rapport aux méthodes traditionnelles comme le scraping du code source HTML ou l'analyse de captures d'écran.
À mesure que les requêtes d'IA deviendront plus complexes, les définitions d'outils le deviendront également. Cela ouvre la porte à de nouveaux horizons : développer des bonnes pratiques, des frameworks et des standards pour l'enregistrement et l'utilisation de ces outils. Peut-être qu'internet sera conçu à l'avenir comme un iceberg : la pointe émergée présentant de magnifiques interfaces utilisateur conçues pour les humains, tandis qu'en coulisses, les agents d'IA travaillent sur l'immense structure immergée en dessous.