ChatGPT détaille l'usage de WebMCP et ses différences avec MCP
OpenAI a mis à jour la documentation de ChatGPT pour clarifier la distinction entre WebMCP et le protocole MCP traditionnel. Cette mise au point s'accompagne de détails techniques sur les modèles compatibles, les contrôles de sécurité et l'enregistrement des outils en JavaScript.
Fil « OpenAI propose le standard expérimental WebMCP pour les agents » · ← Relire l'épisode du 26 août

Après avoir lancé le WebMCP Challenge pour promouvoir l'exposition d'outils structurés aux agents web, OpenAI précise la différence entre ces technologies dans la documentation de ChatGPT. Contrairement au MCP (Model Context Protocol, un protocole reliant une application d'IA à un serveur local ou distant indépendamment d'une page ouverte), le WebMCP permet à un site d'exposer des fonctions exécutables directement dans la page active et la session de l'utilisateur. Cette fonctionnalité est disponible dans le navigateur intégré de l'application de bureau pour les modèles GPT-5.6 Sol et GPT-5.6 Terra (désactivée sur GPT-5.6 Luna), hors abonnements Enterprise et Edu.
Sécurité, limitations et intégration JavaScript
Sur le plan de la sécurité, le navigateur vérifie chaque demande d'outil avant son exécution par le site, les contenus transmis étant traités comme non fiables. L'implémentation actuelle comporte toutefois des limites techniques :
- Absence d'API déclarative (définition d'outils via les attributs de formulaires HTML) ;
- Incompatibilité avec les iframes (balises HTML permettant d'insérer une page web dans une autre page).
Les développeurs doivent enregistrer les fonctions dans le module JavaScript de la page principale via l'API document.modelContext.registerTool :
if (typeof document.modelContext?.registerTool === "function") {
await document.modelContext.registerTool({
name: "get_page_title",
description: "Read the title of the current page.",
inputSchema: {
type: "object",
properties: {},
additionalProperties: false,
},
annotations: { readOnlyHint: true },
execute: async () => ({ title: document.title }),
});
}