Guide : WebMCP

WebMCP permet à une page web d’exposer des outils structurés à un agent d’IA dans le navigateur. Découvrez ses différences avec MCP, la prise en charge par Chrome, les risques de sécurité et les raisons d’attendre.

Première publication : 17 juil. 2026 · Dernière mise à jour : 24 août 2026 · Avancé
1 indice probant sur cette page

WebMCP est une API de navigateur expérimentale qui permet à une page web ouverte de proposer des outils structurés à un agent d’IA. Elle sert aux actions circonscrites sur une page, pas à la découverte du web ni au classement. Au 17 juillet 2026, il s’agit d’un projet du Community Group et d’une origin trial dans Chrome 149 ; les exemples Chrome actuels utilisent document.modelContext, tandis que navigator.modelContext devient obsolète dans Chrome 150.

TL;DR — WebMCP expose, depuis document.modelContext, des outils appartenant à la page à un agent présent dans le contexte de navigation actif. L’API impérative enregistre un nom, une description, une entrée JSON Schema, des annotations et un callback asynchrone ; les outils peuvent dépendre de l’état et être désenregistrés avec un AbortSignal. Chrome documente aussi une couche déclarative pour les formulaires, mais le projet du Community Group daté du 10 juillet 2026 qualifie encore sa section déclarative de TODO. La fonctionnalité fait l’objet d’une origin trial dans Chrome 149 ; elle ne constitue pas une base stable commune aux navigateurs. Considérez-la comme une amélioration progressive, non comme une infrastructure SEO, et sécurisez-la comme une surface applicative authentifiée.

Preuve à l’appui de cette affirmation Chrome documents declarative form annotations such as toolname and tooldescription, but the declarative section of the July 10, 2026 Community Group draft is still marked TODO. Portée : secure browser context Niveau de confiance : élevé · Vérifié : WebMCP Draft Community Group Report

Fonctionnement de WebMCP dans le navigateur

Un cycle de vie WebMCP utile commence et se termine avec la page. La page n’enregistre que les actions valides dans son état actuel ; un agent déjà présent dans ce contexte de navigation en découvre et en invoque une ; la page exécute sa logique applicative habituelle, met à jour l’interface visible et renvoie un résultat circonscrit. Lorsque l’état change, la page retire les outils devenus sans objet. Preuve à l’appui de cette affirmation The imperative API registers named, described, schema-constrained callbacks and supports state-aware cleanup with AbortSignal plus tool-set change notifications. Portée : Current draft and Chrome experiment; API details may change before stable release. Niveau de confiance : élevé · Vérifié : WebMCP ModelContext API Chrome: WebMCP Imperative API

Les outils WebMCP devraient suivre l’état réel de la page : enregistrer une action valide, exécuter la même logique que l’interface et la supprimer lorsque l’action n’est plus disponible. Source : Patrick Stox — WebMCP

Cinq étapes numérotées s’enchaînent de gauche à droite. Premièrement, la page enregistre un nom, une description, un schéma d’entrée et une fonction de rappel. Deuxièmement, un agent déjà présent dans le contexte de la page découvre l’outil. Troisièmement, l’agent l’invoque avec des arguments structurés et validés. Quatrièmement, la page réutilise sa logique applicative habituelle et met à jour l’interface visible. Cinquièmement, elle renvoie un résultat circonscrit ou une erreur sûre. Une branche issue de l’exécution montre qu’un changement d’état ou une navigation doit désenregistrer l’outil avec AbortSignal et avertir les observateurs au moyen de toolchange.

© Patrick Stox LLC · CC BY 4.0 ·

Ce cycle de vie dépendant de l’état explique pourquoi WebMCP ne doit pas devenir une liste statique de toutes les fonctions d’un bundle JavaScript. Un outil impossible à utiliser dans l’interface visible devrait normalement être également indisponible pour l’agent.

WebMCP et MCP : deux frontières d’exécution différentes

Les noms peuvent prêter à confusion, mais la frontière opérationnelle diffère. WebMCP vit dans la boucle d’événements du document et la session de navigateur actuelle. Un MCP distant vit à la frontière d’intégration de l’application d’IA et accède généralement à un serveur backend persistant. Preuve à l’appui de cette affirmation WebMCP is designed for tools owned by an active page and its browser context, while remote MCP commonly connects an AI application to a persistent backend server. Portée : Architecture-selection guidance, not a rule that prevents an application from using both technologies. Niveau de confiance : élevé · Vérifié : Chrome: When to use WebMCP and MCP

WebMCP prend en charge les actions liées au contexte de la page ; le MCP distant prend en charge les intégrations durables entre une application et un serveur. De nombreux produits utiliseront les deux. Source : WebMCP

La voie de gauche représente WebMCP : un agent de navigateur interagit avec une page web ouverte, qui possède un outil JavaScript et l’état visible actuel de la session. La page doit être ouverte pour que ces outils existent. La voie de droite représente le MCP distant : une application d’IA se connecte, par l’intermédiaire d’un client MCP, à un serveur MCP persistant qui peut rester disponible hors d’un onglet de navigateur. Les deux voies sont complémentaires et ne se remplacent pas.

© Patrick Stox LLC · CC BY 4.0 ·

InterfaceEmplacementMoment de la découverteLa page doit-elle être ouverte ?Usage adapté
WebMCPDocument actif dans le navigateurAprès la visite de la page par le clientOuiÉtat actuel de l’interface et actions de la page
MCP distantClient d’IA et serveur MCPPar la configuration ou la découverte client/serveurNonOutils persistants, données et workflows backend
Point de terminaison web/APIBackend applicatifPar une intégration propre à l’applicationNonAccès programmatique stable pour des consommateurs connus
Données structuréesBalisage de la pagePendant le traitement de la pageGénéralement récupérées comme contenuDécrire les entités et le sens de la page, sans exécuter d’actions
llms.txtFichier texte statiqueLorsqu’un client choisit de le demanderAucun onglet actif requisProposition d’indications sur le contenu ; ce n’est pas une surface d’outils appelables
Automatisation du navigateurAgent ou contrôleur interprétant l’interfaceAprès le chargement et l’inspection de la pageOuiSolution de repli lorsqu’aucun outil explicite n’existe

Ne choisissez pas en fonction du sigle, mais de l’entité qui possède l’action. Si l’action a besoin du DOM, de la sélection, du panier ou de l’état actuel de l’interface, WebMCP peut convenir. Si elle doit s’exécuter en arrière-plan, sur de nombreux sites ou sans onglet ouvert, utilisez une API ou un MCP distant.

L’API impérative

L’API impérative enregistre un outil au moyen de document.modelContext.registerTool(). L’outil comprend un nom unique, une description, une entrée JSON Schema, un callback execute et des annotations facultatives. Chrome documente également getTools(), executeTool() pour les tests et un événement toolchange. Preuve à l’appui de cette affirmation Current Chrome documentation uses document.modelContext and says navigator.modelContext is deprecated beginning in Chrome 150. Portée : Chrome implementation guidance checked July 17, 2026; version and API-name claims expire quickly. Niveau de confiance : élevé · Vérifié : Chrome: WebMCP Imperative API

Ce candidat illustratif montre la forme prévue pour un futur pilote du validateur de schéma. Il ne fonctionne pas actuellement sur ce site, et l’API peut encore changer avant une version stable :

if (document.modelContext) {
  const registration = new AbortController();

  await document.modelContext.registerTool({
    name: 'validate_schema',
    description: 'Validate pasted JSON-LD and return bounded issues.',
    inputSchema: {
      type: 'object',
      properties: {
        markup: {
          type: 'string',
          description: 'JSON-LD markup to validate.',
          maxLength: 50000
        }
      },
      required: ['markup'],
      additionalProperties: false
    },
    annotations: {
      readOnlyHint: true,
      untrustedContentHint: true
    },
    execute: async ({ markup }) => {
      const result = await validateWithTheSameEngineAsTheUI(markup);
      renderResultInTheVisibleUI(result);
      return minimizeValidationResult(result);
    }
  }, { signal: registration.signal });

  // When this page state no longer supports validation:
  // registration.abort();
}

L’élément architectural important n’est pas l’enveloppe. Le callback appelle le même validateur que l’interface visible, les limites et autorisations côté serveur continuent de s’appliquer, et la réponse est volontairement réduite. La détection de fonctionnalité préserve le workflow humain complet dans les navigateurs non pris en charge.

Utilisez document.modelContext, et non les anciens exemples fondés sur navigator.modelContext ; Chrome signale que ce dernier est obsolète à partir de Chrome 150. Datez cette recommandation, car la fonctionnalité reste expérimentale.

Preuve à l’appui de cette affirmation Current Chrome documentation uses document.modelContext; navigator.modelContext is deprecated in Chrome 150. Portée : browser document Niveau de confiance : élevé · Vérifié : WebMCP Imperative API

L’API déclarative n’est pas alignée sur le projet de norme

Chrome documente une approche déclarative qui annote les formulaires ordinaires avec des attributs tels que toolname, tooldescription et toolparamdescription. Il documente aussi l’attribut facultatif toolautosubmit ; sinon, la personne clique sur Submit. SubmitEvent.agentInvoked identifie un envoi déclenché par un agent. Preuve à l’appui de cette affirmation Chrome documents declarative WebMCP form annotations, but the July 10, 2026 Community Group draft says its Declarative WebMCP section is entirely TODO. Portée : A direct comparison between Chrome implementation documentation and the current draft; it does not imply Chrome's experimental implementation is unavailable. Niveau de confiance : élevé · Vérifié : Chrome: WebMCP Declarative API WebMCP: Declarative WebMCP

Toutefois, le Community Group Report du 10 juillet indique que sa section Declarative WebMCP est « entirely a TODO » et laisse indéfini l’algorithme de conversion d’un formulaire en JSON Schema. Cela ne signifie pas que l’expérience de Chrome est fictive, mais que la documentation de l’implémentation devance le projet normatif. Traitez le balisage déclaratif comme une surface Chrome expérimentale, et non comme du HTML inter-navigateurs stabilisé.

Preuve à l’appui de cette affirmation Chrome documents declarative WebMCP form annotations, but the July 10, 2026 Community Group draft says its Declarative WebMCP section is entirely TODO. Portée : A direct comparison between Chrome implementation documentation and the current draft; it does not imply Chrome's experimental implementation is unavailable. Niveau de confiance : élevé · Vérifié : Chrome: WebMCP Declarative API WebMCP: Declarative WebMCP

Pour l’instant, les formulaires sémantiques ordinaires restent la base durable. Une couche d’annotations expérimentale doit les améliorer, sans jamais remplacer les libellés, la validation, l’accessibilité, la confirmation ou l’autorisation côté serveur.

Découverte des outils, cycle de vie et frontières inter-origines

L’API actuelle comporte plusieurs frontières qu’il faut concevoir explicitement :

  • Contexte de navigation : l’expérience de Chrome exige un contexte de navigateur. Le client visite le site avant d’en découvrir les outils.
  • Disponibilité dynamique : enregistrez les outils lorsqu’ils sont valides et annulez leur enregistrement lorsque l’état ou la navigation les invalide. Les observateurs peuvent écouter toolchange.
  • Même origine par défaut : la Permissions Policy tools utilise 'self' par défaut. Les iframes inter-origines nécessitent une délégation explicite telle que allow="tools".
  • Consentement inter-origines des deux côtés : un outil peut utiliser exposedTo pour énumérer les origines sécurisées autorisées, tandis qu’un appelant demande les outils de certaines origines au moyen de fromOrigins. L’accord d’un seul côté ne suffit pas.
  • Amélioration progressive : une version non prise en charge ou désactivée de WebMCP doit laisser la page ordinaire pleinement utilisable.
Preuve à l’appui de cette affirmation WebMCP tool exposure is origin-isolated and controlled by the tools Permissions Policy; cross-origin iframes require explicit delegation. Portée : browser document Niveau de confiance : élevé · Vérifié : WebMCP Imperative API

Ces contrôles de plateforme sont utiles, mais ils ne rendent pas sûre une action applicative risquée.

Sécurité : la session de navigateur accroît les enjeux

Un agent de navigateur peut agir dans la session authentifiée de la personne. C’est à la fois l’intérêt de la fonctionnalité — accès au panier, au compte ou à l’espace de travail actuel — et son danger. Chrome et le projet abordent l’injection de prompt, les métadonnées d’outil trompeuses, les sorties contaminées, les paramètres trop larges, les fuites de confidentialité, l’exposition inter-origines et l’abus de l’autorité de la personne connectée. Preuve à l’appui de cette affirmation WebMCP tool hints can communicate read-only and untrusted-output intent, but they do not eliminate prompt injection, misleading metadata, privacy leakage, cross-origin risk, or misuse of authenticated browser authority. Portée : Threat-model and defensive guidance; application authorization and confirmation remain implementation responsibilities. Niveau de confiance : élevé · Vérifié : WebMCP security and privacy considerations Chrome: WebMCP tool security Chrome: Agent security considerations

Traitez chaque outil comme un point de terminaison applicatif public dont l’appelant est inhabituel :

  1. Gardez l’outil étroitement ciblé. Une seule tâche, des entrées explicites, des énumérations et longueurs strictes, aucun paramètre caché « tout faire ».
  2. Faites respecter l’autorisation dans la logique applicative. L’agent n’obtient pas plus d’autorité que la personne connectée, et une indication ne constitue pas une permission.
  3. Séparez les lectures des écritures. readOnlyHint et untrustedContentHint communiquent un risque ; ils ne l’imposent pas.
  4. Exigez une confirmation visible pour les actions ayant des conséquences. Achats, envois, suppressions, messages et modifications de compte nécessitent un point de contrôle compréhensible par une personne.
  5. Réduisez les sorties. Ne renvoyez que ce dont la tâche a besoin ; n’exposez jamais les données de session, les en-têtes bruts, les secrets ou des enregistrements sans rapport.
  6. Considérez les sorties comme non fiables. Une chaîne renvoyée par un outil peut devenir l’entrée d’un raisonnement ultérieur du modèle. Ne lui permettez pas de transmettre clandestinement des instructions ou de l’autorité.
  7. Journalisez la frontière. Enregistrez l’outil, la catégorie d’entrée, la décision d’autorisation, la confirmation, la catégorie de résultat, l’erreur, l’origine et le cycle de vie, sans consigner de secrets.

La bonne question n’est pas « Un agent peut-il appeler cet outil ? », mais « Exposerais-je ceci comme un point de terminaison examiné à un appelant susceptible de mal comprendre des instructions et de relayer du texte non fiable ? »

Tester séparément les contrats et le comportement des agents

Les recommandations de Chrome sur les évaluations distinguent les tests produit déterministes des tests probabilistes des agents. Preuve à l’appui de cette affirmation WebMCP testing should combine deterministic contract and UI-state tests with probabilistic evaluation of agent tool selection and use. Portée : Chrome's evaluation guidance; teams must define product-specific tasks, models, risks, and thresholds. Niveau de confiance : élevé · Vérifié : Chrome: Evals for WebMCP Les deux sont nécessaires :

Les tests déterministes doivent vérifier l’enregistrement, le rejet par le schéma, les entrées valides et invalides, l’autorisation, les limites de débit, les effets de bord, la forme des erreurs, la réduction des sorties, la parité avec l’interface, le désenregistrement et le repli pour les navigateurs non pris en charge.

Les évaluations probabilistes doivent mesurer si des agents représentatifs découvrent le bon outil, évitent les outils sans rapport, choisissent les bons paramètres, demandent des précisions lorsque c’est nécessaire, respectent les confirmations, s’arrêtent après la réussite et résistent aux descriptions ou sorties adversariales.

N’utilisez pas un seul prompt de démonstration comme critère de publication. Un callback réussi prouve que le code s’est exécuté ; il ne prouve ni que les modèles sélectionnent l’outil de manière fiable, ni que l’action est sûre.

Cloudflare Browser Run : un laboratoire utile, pas un mécanisme d’activation

Cloudflare documente la prise en charge de WebMCP dans le pool expérimental de laboratoire de Browser Run et précise que les sessions de laboratoire ne doivent pas servir aux charges de production. Sa page du 23 avril contient aussi d’anciens noms de test liés à des versions antérieures de Chrome ; utilisez donc cette page comme preuve de l’offre produit actuelle de Cloudflare, pas comme autorité sur la forme la plus récente de l’API WebMCP. Preuve à l’appui de cette affirmation Cloudflare Browser Run offers experimental lab sessions that can consume and test page-provided WebMCP tools, but the page still owns tool registration and Cloudflare says lab sessions are not for production workloads. Portée : Cloudflare product documentation last updated April 23, 2026; its example API names lag current Chrome documentation and should not be used as the API authority. Niveau de confiance : élevé · Vérifié : Cloudflare Browser Run: WebMCP

Cloudflare peut fournir une session de navigateur et un chemin d’agent qui consomme des outils. Il ne peut ni déduire le contrat sûr de votre application, ni enregistrer des outils appartenant à la page que vous n’avez pas créés.

Pilote proposé pour patrickstox.com : Schema Validator

Le Schema Markup Validator est un bon candidat pour un futur pilote, et non une implémentation WebMCP active. Il possède déjà une entrée collée et circonscrite, une logique déterministe, des problèmes structurés et un résultat visible. Un futur outil validate_schema pourrait réutiliser le même moteur de validation que l’interface et la suite d’outils MCP distante existante.

Le pilote doit attendre que l’API du navigateur atteigne une version stable et non expérimentale, puis réussisse un nouvel examen de sécurité. La première version doit être en lecture seule, détecter la fonctionnalité, limiter les entrées, réduire les réponses et rester indisponible sur les surfaces de prévisualisation, d’administration ou réservées au propriétaire. Ce site ne prétend pas prendre actuellement WebMCP en charge.

Décision : construire, expérimenter, attendre ou ignorer

SituationDécision
Une compatibilité stable des navigateurs est indispensable à un workflow clientAttendre et conserver une interface/API normale complète
Vous disposez d’une action en lecture seule, bien circonscrite, et pouvez mener un laboratoire privéExpérimenter, avec détection de fonctionnalité et sans dépendance en production
La tâche doit s’exécuter en arrière-plan ou sans interfaceUtiliser une API ou un MCP distant
La page ne fait que publier du contenuIgnorer WebMCP et améliorer le HTML sémantique et accessible
L’action écrit, achète, envoie, supprime ou expose des données privéesNe pas lancer un pilote à la légère ; exiger un modèle de menace et une conception de confirmation distincts
Une implémentation stable est disponible et tous les tests de contrat, de sécurité et de parité réussissentEnvisager un pilote progressif en production

Ajouter une note d’expert

Épingler une citation d’expert

Nouvelle personne ? Créez son profil non revendiqué à /admin/experts/ → Épingler une citation d’expert d’abord.