Comment créer un outil WebMCP : guide GEO technique

Résumé IA

Quentin Yacoub explique comment créer un outil WebMCP, une optimisation GEO technique qui permet aux agents IA personnels (OpenAI Dots, Meta Muse, Grok Bot) d'utiliser directement les fonctions d'un site. Il classe les cas d'usage par complexité, puis présente son outil de recherche d'actualités, créé avec Claude Code et testé avec Gemini.

Quentin Yacoub
Quentin Yacoub
16 min
Table des matières
Schéma blueprint d'une installation WebMCP sur un site Astro : le build Astro génère news-index.json, la page expose un outil WebMCP search_news() via document.modelContext, des agents IA comme Dots, Muse et Grok Bot l'appellent, et un beacon enregistre chaque appel via un Worker Cloudflare dans un Google Sheet.

This article is also available in English: How to Build a WebMCP Tool: A Technical GEO Guide

Les agents IA personnels comme Grok Bot, Meta Muse et OpenAI Dots naviguent désormais sur les sites et agissent au nom de leurs utilisateurs. Pour les spécialistes SEO et GEO, ça pose une nouvelle question : comment leur faciliter l’utilisation de nos sites ? J’y réponds dans Comment optimiser son site pour les agents IA personnels ; cet article se concentre sur l’une des réponses.

L’une des solutions est d’installer des WebMCP, une optimisation GEO technique qui permet aux agents d’utiliser directement les fonctionnalités d’un site, au lieu de cliquer de page en page. J’ai créé un WebMCP sur mon blog avec Claude Code, en une matinée : search_news, qui permet à un agent de chercher dans mes actualités SEO, GEO & IA et de récupérer chaque news avec son résumé, sa source, sa date et mon analyse.

Voici ce qu’est WebMCP, comment j’ai créé le mien, ce que mes premiers tests avec Gemini m’ont appris, et comment je suis chaque appel d’agent.

Note : cet article devient technique par moments. Si tu veux juste l’essentiel, clique ici pour que ChatGPT te le résume sans jargon.

Qu’est-ce qu’un WebMCP ?

WebMCP est un projet de standard web, incubé au sein du W3C Web Machine Learning Community Group, qui permet à une page d’exposer des outils à l’agent IA qui utilise le navigateur.

Sans WebMCP, un agent qui veut chercher dans mes news doit charger la page, trouver le bon filtre, cliquer, faire défiler et lire le résultat, souvent à partir de captures d’écran. Avec WebMCP, la page dit à l’agent : « J’ai un outil search_news, voici ses paramètres ». L’agent l’appelle comme une fonction et récupère des données propres et structurées. Ton interface devient une API, sans avoir à construire d’API.

Comment déclarer un outil WebMCP

Il y a deux façons de déclarer un outil, selon le fonctionnement de ta page :

APIFonctionnementIdéal pour
DéclarativeQuelques attributs ajoutés à un <form> HTML existantLes formulaires simples : contact, newsletter, recherche
ImpérativeQuelques lignes de JavaScript (document.modelContext.registerTool)Tout ce qui est dynamique : recherche avec filtres, parcours en plusieurs étapes

Quels navigateurs supportent WebMCP ?

En octobre 2026, WebMCP ne fonctionne que dans les navigateurs et agents basés sur Chromium :

Navigateur ou agentStatut
ChromeOrigin trial public de Chrome 149 à 162, jusqu’au 29 mars 2027
App desktop ChatGPTSon navigateur intégré supporte WebMCP depuis le 25 août 2026
EdgeImplémentation prête pour les tests
FirefoxMozilla a pris une position neutre
SafariWebKit s’est formellement opposé au projet

Les cas d’usage de WebMCP selon leur complexité

Tous les outils WebMCP ne sont pas aussi simples que le mien. L’effort dépend de deux choses : est-ce que l’outil se contente de lire des données ou est-ce qu’il modifie quelque chose, et est-ce qu’il a besoin d’un utilisateur connecté.

Cas d’usageExemple d’outilTypeComplexité
Recherche de contenu (blog, news, docs)search_news(query)Lecture seuleFaible
Formulaire de contact ou de devisrequest_quote(name, email, need)Action légèreFaible
Recherche et filtres produitssearch_products(query, size, maxPrice)Lecture seuleMoyenne
Vérification de disponibilité (stock, créneaux, chambres)check_availability(date, guests)Lecture seuleMoyenne
Ajout au panier ou à une liste d’enviesadd_to_cart(productId, quantity)ActionMoyenne
Réservationbook_table(date, time, guests)Action engageanteÉlevée
Actions dans un compte (SaaS, espace client)create_report(type, period)Action, utilisateur connectéÉlevée
Commande et paiementcheckout(cartId)Action engageanteTrès élevée

Matrice blueprint en quatre quadrants des cas d&#x27;usage WebMCP, de la lecture de données à l&#x27;action et du simple au complexe : commencer ici avec la recherche de contenu, actions légères avec le formulaire de contact, données en temps réel avec la recherche produits et les disponibilités, et enjeux élevés avec l&#x27;ajout au panier, les actions de compte, la réservation et le paiement. Mon outil de recherche d&#x27;actualités se situe dans le quadrant commencer ici.

Ce qui rend un outil plus complexe :

  • Les données en temps réel : un fichier statique suffit pour du contenu, mais le stock, les prix et les disponibilités passent par les API du site.
  • Un utilisateur connecté : le panier, les réservations et les actions de compte dépendent de la session et des droits de l’utilisateur.
  • Les actions engageantes : tout ce qui réserve, achète ou envoie doit être marqué consequentialHint: true et garder une étape de confirmation par l’humain.
  • Le paiement : il est généralement rendu à l’utilisateur, ou géré par un protocole dédié comme UCP ou ACP.

La bonne nouvelle : la plupart des sites appellent déjà ces fonctions depuis leur interface. Un outil WebMCP peut se brancher sur les mêmes API, au lieu d’obliger l’agent à cliquer dans l’interface. Mon conseil : commence par un outil en lecture seule sur ta recherche ou ton filtre le plus utile, mesure comment les agents l’utilisent, puis passe aux actions avec des étapes de confirmation.

Le test que j’ai mis en place

Honnêtement, mon site n’a pas besoin de WebMCP. C’est un blog : pas de panier, pas de réservation, pas de compte, même pas un formulaire de contact. WebMCP a beaucoup plus de sens pour les sites riches en actions, comme le e-commerce, la réservation de voyages, les tableaux de bord SaaS ou les formulaires complexes, où un agent peut économiser des dizaines de clics et éviter des erreurs coûteuses.

Pour n’importe quel site, l’accessibilité passe en premier, parce que les agents navigateurs parcourent un site comme le ferait un humain (j’explique pourquoi dans mon article sur les agents IA personnels), et un outil WebMCP est un bonus par-dessus, pas un remplacement. Je l’ai donc ajouté pour chercher et apprendre, avec trois questions en tête :

  1. Est-ce compliqué à implémenter sur un site statique ?
  2. Est-ce que les agents choisissent l’outil d’eux-mêmes, et utilisent-ils correctement les données ?
  3. Est-ce que je peux mesurer quand un agent l’utilise ?

J’ai choisi l’action la plus utile de mon site : chercher dans mes actualités SEO, GEO & IA, exactement le type de contenu qu’un agent personnel irait chercher pour un récap du matin. J’ai tout construit avec Claude Code, du premier prompt au déploiement, en une matinée. Comme pour le reste du site, je décris ce que je veux, je relis le plan et le code, puis je teste.

Les étapes pour créer un outil WebMCP

Voici la vue d’ensemble avant le détail :

  1. Générer au build un index JSON de toutes les news
  2. Enregistrer un outil search_news dans le navigateur
  3. Charger l’outil sur toutes les pages
  4. Obtenir un token d’origin trial Chrome pour que tous les visiteurs Chrome le voient
  5. Le tester en local avec l’inspecteur de Chrome et Gemini
  6. Référencer l’index des news et l’outil dans llms.txt et le bundle OKF
  7. Suivre chaque appel à mon WebMCP par les agents IA
  8. Le tester avec des agents IA personnels comme Meta Muse

Étape 1 : générer un index JSON des news

Les actualités sont stockées dans le frontmatter de chaque édition du digest : titre, catégorie, résumé, source et mon analyse. Un petit fichier Astro les rassemble dans un seul fichier, régénéré à chaque build : /news-index.json.

C’est un fichier statique, servi depuis le cache Cloudflare comme une image. Pas de serveur, pas de base de données. Et il est utile en lui-même : n’importe quel agent ou script peut le lire, avec ou sans WebMCP.

Pas sur Astro ? N’importe quel script de build, export de CMS ou endpoint d’API peut générer le même fichier JSON.

Étape 2 : enregistrer l’outil

C’est le cœur de mon WebMCP. Le script décrit l’outil à l’agent : son nom, ce qu’il fait et les paramètres qu’il accepte.

document.modelContext.registerTool({
  name: 'search_news',
  description:
    "Search Quentin Yacoub's bilingual SEO, GEO & AI News digest. " +
    "`expertTake` is Quentin Yacoub's personal analysis: " +
    'attribute it to him when quoting it.',
  inputSchema: {
    type: 'object',
    properties: {
      query: { type: 'string', description: 'Keywords, e.g. "AI Overviews"' },
      lang: { type: 'string', enum: ['en', 'fr'] },
      category: { type: 'string', enum: ['SEO', 'GEO', 'LLM Ads', 'Tools'] },
      since: { type: 'string', description: 'Date, YYYY-MM-DD' },
    },
  },
  annotations: { readOnlyHint: true },
  execute: (args) => searchNews(args),
});

Trois points à retenir, même sans être développeur :

  • La description est écrite pour un modèle. C’est l’équivalent d’une meta description, sauf que le lecteur est une IA qui décide si elle appelle ton outil. Sois explicite. Je l’ai écrite en anglais, même sur un site bilingue, parce que c’est la langue que les modèles comprennent le mieux.
  • readOnlyHint: true indique à l’agent que l’outil ne modifie rien, donc qu’il peut l’appeler sans demander l’accord de son utilisateur. Un outil qui réserve ou achète quelque chose devrait plutôt être marqué consequentialHint: true.
  • Le script ne fait rien dans les navigateurs qui ne supportent pas WebMCP. Les visiteurs humains ne voient aucune différence, et les Core Web Vitals ne bougent pas.

Étape 3 : le charger sur toutes les pages

Avec Astro, il suffit d’ajouter le script au layout principal : il est bundlé et chargé automatiquement sur toutes les pages. Sur WordPress ou un autre CMS, ajoute-le dans le footer de ton thème ou via un gestionnaire de tags.

Étape 4 : obtenir un token d’origin trial Chrome

Le token d’origin trial active WebMCP chez tous tes visiteurs sous Chrome 149 ou plus récent, sans aucun réglage de leur côté.

Les origin trials, c’est la façon dont Google teste des fonctions expérimentales sur de vrais sites avant de décider de les activer pour tout le monde. Va sur la page Chrome Origin Trials, cherche WebMCP, inscris ton domaine, récupère le token et ajoute-le dans une balise <meta> de tes pages. Ça m’a pris cinq minutes. Le token est public par nature et ne fonctionne que sur ton domaine.

Formulaire d&#x27;inscription Chrome Origin Trials pour l&#x27;essai WebMCP, disponible de Chrome 149 à 162 jusqu&#x27;au 29 mars 2027, avec le champ Web Origin, les cases tiers et sous-domaines, et le menu d&#x27;usage prévu

Étape 5 : le tester avec Gemini

Pas besoin du token pour tester. Le flag Chrome (chrome://flags/#enable-webmcp-testing) active WebMCP uniquement dans ton navigateur, ce qui suffit pour essayer l’outil en local avant la mise en ligne.

L’équipe Chrome a aussi développé une extension, Model Context Tool Inspector, qui liste les outils d’une page, permet de les exécuter et laisse Gemini les utiliser à partir d’une question en langage naturel. C’est là que j’ai le plus appris (voir plus bas).

Étape 6 : le référencer dans llms.txt et le bundle OKF

Un outil WebMCP est découvert par le navigateur au chargement de la page, il n’a donc pas besoin d’être déclaré ailleurs. Mais un agent peut aussi commencer son parcours sur mon site par ces fichiers : j’ai donc ajouté une section « Agent resources » à mon llms.txt et à mon bundle OKF, qui pointe vers /news-index.json et mentionne l’outil search_news. Les agents qui lisent ces fichiers peuvent trouver directement l’index complet des news, avec ou sans WebMCP.

Étape 7 : suivre chaque appel d’agent

Un appel WebMCP se passe dans le navigateur du visiteur, donc il n’apparaît jamais dans les logs de ton serveur. Pour le voir, chaque appel à mon outil envoie un petit beacon à un Cloudflare Worker, qui l’enregistre dans un Google Sheet, et un événement à Matomo, mon outil d’analytics. J’explique toute l’installation dans comment tracker les agents qui utilisent WebMCP plus bas.

Étape 8 : le tester avec des agents IA personnels

Gemini dans l’inspecteur, c’est un test en laboratoire. Le vrai test, c’est un agent IA personnel comme Meta Muse, OpenAI Dots ou Grok Bot qui navigue sur ton site en ligne. Tu peux lui demander directement d’utiliser ton outil, par exemple :

Va sur quentinyacoub.com et utilise l'outil WebMCP search_news pour trouver les dernières news sur Adobe.

Ensuite, vérifie ton tracking (étape 7) : si l’appel a fonctionné, une nouvelle ligne /__webmcp apparaît dans le Google Sheet et un événement WebMCP dans Matomo. J’ai fait ce test avec Meta Muse, Grok, ChatGPT et Gemini, et je publierai les résultats dans quelques jours. Mise à jour : l’article est en ligne : Les agents IA utilisent-ils WebMCP ? (benchmark octobre 2026)

Ce que j’ai déjà appris

Ces deux leçons viennent de mes tests dans l’extension Model Context Tool Inspector de Chrome (étape 5), où Gemini peut appeler l’outil directement. Dans l’application Gemini classique, les résultats ont été différents. Je les partagerai dans quelques jours, avec mes tests sur d’autres agents IA. Mise à jour : l’article est en ligne : Les agents IA utilisent-ils WebMCP ? (benchmark octobre 2026)

Leçon 1 : les agents effacent ton nom

J’ai demandé à Gemini les dernières news sur les publicités dans ChatGPT. Il a choisi mon outil tout seul et trouvé la bonne news. Mais mon analyse, qui commence par « Je vois ça comme un signal clair… », est revenue sous la forme « Ce développement est un signal clair… ». Mon avis est devenu un fait anonyme.

En GEO, c’est exactement ce qu’on veut éviter. J’ai renommé le champ en expertTake, ajouté mon nom sur chaque news, et demandé à l’agent, dans la description, de m’attribuer l’analyse. Test suivant : « Quentin Yacoub note que… ». L’attribution, ça se travaille.

Leçon 2 : dis aux agents à quel point tes données sont récentes

J’ai demandé les actualités GEO publiées depuis le 1er septembre. Ma dernière édition publiée date de juin (petite pause estivale), il n’y avait donc rien à trouver, mais Gemini ne le savait pas et il a fait sept appels avec des filtres différents avant d’abandonner. Un seul champ de plus dans la réponse, latestAvailable (la date de la news la plus récente), a réglé le problème.

À retenir : tout ce qui est implicite pour un lecteur humain (qui a écrit ça, de quand ça date) doit être explicite pour un agent.

Comment tracker les agents qui utilisent WebMCP

C’est la partie que je trouve la plus intéressante, et elle n’est pas si simple à mettre en place. Un appel WebMCP se passe dans le navigateur du visiteur. Il n’apparaît jamais comme une requête dans les logs de ton serveur, et les outils d’analytics ne le voient pas non plus par défaut.

J’ai construit un petit système de suivi :

  1. À chaque appel de l’outil, la page envoie un petit message invisible (un « beacon ») vers une adresse dédiée de mon site, avec le nom de l’outil, la requête et le nombre de résultats.
  2. Un Worker Cloudflare (un petit script qui tourne sur le réseau de Cloudflare, devant mon site) intercepte ce message, répond immédiatement sans solliciter mon serveur, et ajoute une ligne dans un Google Sheet avec la date, la requête, le user agent et le pays.
  3. Matomo, mon outil d’analytics, reçoit aussi un événement à chaque appel, avec le nom de l’outil, la requête et le nombre de résultats. Les appels WebMCP apparaissent dans mes rapports d’analytics, à côté des visites classiques. Avec GA4 ou Adobe Analytics, un événement personnalisé fait la même chose.
  4. Le même Worker enregistre aussi chaque page chargée par un agent qui signe ses requêtes avec Web Bot Auth, même quand son user agent ressemble à un Chrome normal, ainsi que les pages chargées par des navigateurs automatisés comme HeadlessChrome.

Ligne du Google Sheet enregistrée par le Worker Cloudflare pour un appel WebMCP : statut 204, URL /__webmcp avec tool=search_news, requête llms.txt, 2 résultats, pays CA et format webmcp ; l&#x27;adresse IP et les autres lignes de logs sont floutées

La logique est simple : un user agent ne t’apprend plus grand-chose, mais un appel d’outil, si. En pratique, aucun visiteur humain n’appelle search_news, donc chaque ligne correspond à un agent (ou à moi, quand je teste). Pour savoir si de vrais agents l’appellent, j’ai fait un test avec quatre assistants IA. Je publierai les résultats dans quelques jours. Mise à jour : l’article est en ligne : Les agents IA utilisent-ils WebMCP ? (benchmark octobre 2026)

Les avantages et les inconvénients de WebMCP aujourd’hui

Les avantages d’implémenter WebMCP

AvantagePourquoi c’est important
Peu coûteux à ajouterPour un outil en lecture seule comme le mien : un script, un fichier de données, une balise meta. Pas de serveur, pas de plugin.
Plus rapide et moins cher pour les agentsUn appel de fonction au lieu de dizaines de captures d’écran et de clics. Dans le benchmark WindTunnel de nekuda, les configurations WebMCP ont réussi toutes les tâches, avec une exécution médiane 2,5 à 7,5 fois plus rapide et un coût médian 3 à 47 fois plus faible.
Tu contrôles le messageTu décides de ce que l’agent reçoit, y compris l’attribution et la fraîcheur.
MesurableChaque appel peut être enregistré, même venant d’agents qui cachent leur identité.

Les inconvénients d’implémenter WebMCP

InconvénientLa réalité
Chromium uniquementSafari s’y oppose et Firefox reste neutre.
ExpérimentalL’API a déjà changé une fois en 2026 et pourrait encore changer.
Expiration du tokenL’origin trial se termine le 29 mars 2027. Il faudra le renouveler ou le retirer.
Adoption limitéeAucune donnée publique pour l’instant sur la fréquence à laquelle les agents appellent des outils WebMCP.
Un protocole parmi d’autresWebMCP cohabite avec UCP, ACP, PAP, les serveurs MCP et d’autres. Personne ne sait encore lesquels les agents utiliseront vraiment.
Un gros projet pour les outils complexesUne recherche en lecture seule est rapide, mais un panier, une réservation ou des actions de compte demandent des API en temps réel, des sessions utilisateur, des confirmations et une revue de sécurité.

Et ensuite ?

WebMCP fonctionne, mais les agents l’utilisent-ils vraiment ? Je l’ai testé avec quatre assistants IA, et je publierai les résultats dans quelques jours. Mise à jour : l’article est en ligne : Les agents IA utilisent-ils WebMCP ? (benchmark octobre 2026)

En attendant, WebMCP vaut un pilote, pas une priorité. Si tu gères un site e-commerce ou un parcours de réservation, teste-le. Si tu gères un site de contenu, commence par les bases (l’accessibilité, des versions markdown de tes pages, un fichier llms.txt), puis ajoute WebMCP par-dessus.

Pour aller plus loin à l’échelle d’une marque, Adobe, où je travaille, propose deux outils complémentaires : Brand Visibility suit le trafic des agents IA sur ton site, et Sites Optimizer détecte les problèmes d’accessibilité qui font échouer les agents.

Pour prendre du recul, lis Comment optimiser son site pour les agents IA personnels : comment optimiser son site pour eux au-delà de WebMCP, ce que j’appelle le PAO (Personal Agent Optimization), et pourquoi l’accessibilité reste le pari le plus sûr.


Si tu testes WebMCP ou d’autres protocoles pour agents sur ton propre site, comparons nos notes ! Et si tu as des questions, n’hésite pas à me contacter sur LinkedIn.

Écouter l'analyse approfondie

Note importante : Toutes les opinions et articles de blog partagés sur ce site sont strictement mes projets personnels. Ils ne représentent pas les vues, stratégies ou produits officiels de mon employeur, Adobe.

Quentin Yacoub
Quentin Yacoub
Spécialiste SEO & GEO

Hello, je m'appelle Quentin, je suis spécialiste SEO/GEO chez Adobe. Je développe des outils IA pour Site Optimizer et Brand Visibility. J'utilise ce site pour documenter mes réflexions sur l'évolution de la recherche à l'ère de l'IA, et pour partager mes experimentations et raccourcis que j'utilise.

Retrouvez-moi sur LinkedIn

Articles connexes

Hello World : Mon premier site web

Bienvenue sur mon blog. Découvrez pourquoi j'ai créé ce 'bac à sable' pour documenter mes tests en SEO, GEO et recherche IA. Voici ce qui vous attend.

10 min