WebMCP: come funziona

WebMCP permette a una pagina web di esporre strumenti strutturati a un agente AI nel browser. Scopri la differenza rispetto a MCP, cosa supporta Chrome, i rischi per la sicurezza e quando aspettare.

Prima pubblicazione: 17 lug 2026 · Ultimo aggiornamento: 3 ago 2026 · Advanced
Lingue
1 segnale di evidenza in questa pagina

WebMCP è un’API sperimentale del browser che permette a una pagina web aperta di offrire strumenti strutturati a un agente AI. È utile per azioni circoscritte sulla pagina, non per la scoperta del web o il ranking. Al 17 luglio 2026 è una bozza del Community Group e un origin trial di Chrome 149; gli esempi Chrome attuali usano document.modelContext, mentre navigator.modelContext è deprecato in Chrome 150.

TL;DR — WebMCP espone gli strumenti di proprietà della pagina da document.modelContext a un agente nel contesto di navigazione attivo. L’API imperativa registra un nome, una descrizione, un input JSON Schema, annotazioni e un callback asincrono; gli strumenti possono dipendere dallo stato e venire deregistrati con un AbortSignal. Chrome documenta anche un livello dichiarativo per i moduli, ma la bozza del Community Group del 10 luglio 2026 continua a contrassegnare la sezione dichiarativa come TODO. La funzionalità è in un origin trial di Chrome 149, non in una baseline stabile tra browser. Trattala come progressive enhancement, non come infrastruttura SEO, e proteggila come una superficie applicativa autenticata. Evidence for this claim 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. Scope: secure browser context Confidence: high · Verified: WebMCP Draft Community Group Report

Come funziona WebMCP nel browser

Un ciclo di vita WebMCP utile inizia e finisce con la pagina. La pagina registra soltanto le azioni valide nello stato corrente; un agente che opera già in quel contesto di navigazione ne scopre e invoca una; la pagina esegue la normale logica applicativa, aggiorna l’interfaccia visibile alle persone e restituisce un risultato circoscritto. Quando lo stato cambia, la pagina rimuove gli strumenti non più applicabili. Evidence for this claim The imperative API registers named, described, schema-constrained callbacks and supports state-aware cleanup with AbortSignal plus tool-set change notifications. Scope: Current draft and Chrome experiment; API details may change before stable release. Confidence: high · Verified: WebMCP ModelContext API Chrome: WebMCP Imperative API

WebMCP tools should follow the page's real state: register a valid action, execute the same logic as the UI, and remove it when the action is no longer available. Fonte: Patrick Stox — WebMCP

Five numbered steps run left to right. First, the page registers a name, description, input schema, and callback. Second, an agent already in the page context discovers it. Third, the agent invokes it with validated structured arguments. Fourth, the page reuses its normal application logic and updates the visible interface. Fifth, it returns a bounded result or safe error. A branch from execution shows that state changes or navigation should unregister the tool with AbortSignal and notify observers through toolchange.

© Patrick Stox LLC · CC BY 4.0 ·

Questo ciclo di vita basato sullo stato è uno dei motivi per cui WebMCP non dovrebbe diventare un dump statico di ogni funzione contenuta in un bundle JavaScript. Uno strumento impossibile da usare nell’interfaccia visibile dovrebbe normalmente essere indisponibile anche all’agente.

WebMCP e MCP: due confini di runtime diversi

I nomi invitano alla confusione, ma il confine operativo è diverso. WebMCP vive nell’event loop di un documento e nella sessione corrente del browser. MCP remoto vive al confine d’integrazione dell’applicazione AI e raggiunge comunemente un server backend persistente. Evidence for this claim 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. Scope: Architecture-selection guidance, not a rule that prevents an application from using both technologies. Confidence: high · Verified: Chrome: When to use WebMCP and MCP

WebMCP owns page-context actions; remote MCP owns durable application-to-server integrations. Many products will use both. Fonte: WebMCP

The left lane shows WebMCP: a browser agent interacts with an open web page, which owns a JavaScript tool and current visible session state. The page must be open for those tools to exist. The right lane shows remote MCP: an AI application connects through an MCP client to a persistent MCP server, which can remain available outside a browser tab. The two lanes are complementary rather than replacements.

© Patrick Stox LLC · CC BY 4.0 ·

InterfacciaDove viveQuando viene scopertaLa pagina deve essere aperta?Uso più adatto
WebMCPDocumento browser attivoDopo che il client visita la paginaStato corrente dell’interfaccia e azioni della pagina
MCP remotoClient AI e server MCPTramite configurazione o scoperta client/serverNoStrumenti persistenti, dati e flussi backend
Endpoint Web/APIBackend dell’applicazioneTramite integrazione specifica dell’applicazioneNoAccesso programmatico stabile per consumatori noti
Dati strutturatiMarkup della paginaDurante l’elaborazione della paginaDi solito viene recuperata come contenutoDescrivere entità e significato della pagina, non eseguire azioni
llms.txtFile di testo staticoQuando un client sceglie di richiederloNon serve una scheda attivaGuida al contenuto proposta, non superficie di strumenti richiamabili
Automazione del browserAgente/controller che interpreta l’interfacciaDopo aver caricato e ispezionato la paginaFallback quando non esiste uno strumento esplicito della pagina

Non scegliere in base all’acronimo. Scegli in base al proprietario dell’azione. Se l’azione richiede il DOM, la selezione, il carrello o lo stato dell’interfaccia correnti, WebMCP può essere adatto. Se deve essere eseguita in background, su molti siti o senza una scheda aperta, usa un’API o MCP remoto.

L’API imperativa

L’API imperativa registra uno strumento tramite document.modelContext.registerTool(). Lo strumento include un nome univoco, una descrizione, un input JSON Schema, un callback execute e annotazioni facoltative. Chrome documenta inoltre getTools(), executeTool() per i test e un evento toolchange. Evidence for this claim Current Chrome documentation uses document.modelContext and says navigator.modelContext is deprecated beginning in Chrome 150. Scope: Chrome implementation guidance checked July 17, 2026; version and API-name claims expire quickly. Confidence: high · Verified: Chrome: WebMCP Imperative API

Questo candidato illustrativo mostra la forma prevista per un futuro pilot di Schema Validator. Non è in esecuzione su questo sito e l’API potrebbe cambiare prima di una release stabile:

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’architettura importante non è il wrapper. È che il callback chiami lo stesso validatore dell’interfaccia visibile, che limiti e autorizzazioni lato server continuino ad applicarsi e che la risposta sia ridotta deliberatamente al minimo. Il rilevamento della funzionalità conserva l’intero flusso umano nei browser non supportati.

Usa document.modelContext, non esempi obsoleti basati su navigator.modelContext; Chrome indica quest’ultimo come deprecato a partire da Chrome 150. Data questo consiglio perché la funzionalità resta sperimentale. Evidence for this claim Current Chrome documentation uses document.modelContext; navigator.modelContext is deprecated in Chrome 150. Scope: browser document Confidence: high · Verified: WebMCP Imperative API

L’API dichiarativa non coincide con gli standard

Chrome documenta un approccio dichiarativo che annota i moduli ordinari con attributi come toolname, tooldescription e toolparamdescription. Documenta anche toolautosubmit come opzione; altrimenti è l’utente a fare clic su Submit. SubmitEvent.agentInvoked identifica un invio attivato da un agente. Evidence for this claim Chrome documents declarative WebMCP form annotations, but the July 10, 2026 Community Group draft says its Declarative WebMCP section is entirely TODO. Scope: A direct comparison between Chrome implementation documentation and the current draft; it does not imply Chrome's experimental implementation is unavailable. Confidence: high · Verified: Chrome: WebMCP Declarative API WebMCP: Declarative WebMCP

Tuttavia, il Community Group Report del 10 luglio dice che la sezione Declarative WebMCP è “entirely a TODO” («interamente TODO») e lascia indefinito l’algoritmo da modulo a JSON Schema. Questo non significa che l’esperimento Chrome sia immaginario. Significa che la documentazione dell’implementazione è più avanti della bozza normativa. Tratta il markup dichiarativo come una superficie sperimentale di Chrome, non come HTML cross-browser stabilizzato. Evidence for this claim Chrome documents declarative WebMCP form annotations, but the July 10, 2026 Community Group draft says its Declarative WebMCP section is entirely TODO. Scope: A direct comparison between Chrome implementation documentation and the current draft; it does not imply Chrome's experimental implementation is unavailable. Confidence: high · Verified: Chrome: WebMCP Declarative API WebMCP: Declarative WebMCP

Per ora, i normali moduli semantici restano la base duratura. Un livello di annotazioni sperimentale dovrebbe migliorarli, mai sostituire etichette, validazione, accessibilità, conferma o autorizzazione lato server.

Scoperta degli strumenti, ciclo di vita e confini cross-origin

L’API attuale presenta diversi confini che vale la pena progettare esplicitamente:

  • Contesto di navigazione: l’esperimento Chrome richiede un contesto browser. Il client visita il sito prima di scoprirne gli strumenti.
  • Disponibilità dinamica: registra gli strumenti quando sono validi e interrompi la loro registrazione quando lo stato o la navigazione li rendono non validi. Gli observer possono ascoltare toolchange.
  • Stessa origine per impostazione predefinita: la Permissions Policy tools ha come valore predefinito 'self'. Gli iframe cross-origin richiedono una delega esplicita come allow="tools".
  • Consenso cross-origin su due lati: uno strumento può usare exposedTo per elencare le origini sicure autorizzate, mentre un chiamante richiede strumenti da origini nominate con fromOrigins. L’adesione di un solo lato non basta.
  • Progressive enhancement: WebMCP non supportato o disabilitato deve lasciare la pagina ordinaria completamente utilizzabile. Evidence for this claim WebMCP tool exposure is origin-isolated and controlled by the tools Permissions Policy; cross-origin iframes require explicit delegation. Scope: browser document Confidence: high · Verified: WebMCP Imperative API

Sono controlli utili della piattaforma, ma non trasformano un’azione applicativa rischiosa in un’azione sicura.

Sicurezza: la sessione browser aumenta la posta in gioco

Un agente browser può operare nella sessione autenticata dell’utente. Questo può essere la funzionalità — accesso al carrello, all’account o all’area di lavoro correnti — e anche il pericolo. Chrome e la bozza discutono prompt injection, metadati degli strumenti fuorvianti, output degli strumenti contaminati, parametri troppo ampi, perdita di privacy, esposizione cross-origin e uso improprio dell’autorità di un utente autenticato. Evidence for this claim 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. Scope: Threat-model and defensive guidance; application authorization and confirmation remain implementation responsibilities. Confidence: high · Verified: WebMCP security and privacy considerations Chrome: WebMCP tool security Chrome: Agent security considerations

Tratta ogni strumento come un endpoint applicativo pubblico con un chiamante insolito:

  1. Mantieni lo strumento circoscritto. Un solo compito, input espliciti, enum e lunghezze rigorosi, nessun parametro nascosto do anything.
  2. Applica l’autorizzazione nella logica applicativa. L’agente non ottiene più autorità dell’utente autenticato e un suggerimento non è un permesso.
  3. Separa letture e scritture. readOnlyHint e untrustedContentHint comunicano il rischio; non lo impongono.
  4. Richiedi una conferma visibile per le conseguenze. Acquisti, invii, eliminazioni, messaggi e modifiche all’account richiedono un passaggio di controllo comprensibile per una persona.
  5. Riduci al minimo l’output. Restituisci solo ciò che serve al compito; non riversare mai dati di sessione, header grezzi, segreti o record non pertinenti.
  6. Tratta l’output come non attendibile. Una stringa restituita da uno strumento può diventare input per il ragionamento successivo del modello. Non permetterle di introdurre di nascosto istruzioni o autorità.
  7. Registra il confine. Registra strumento, classe dell’input, decisione di autorizzazione, conferma, classe del risultato, errore, origine e ciclo di vita senza registrare segreti.

La domanda sicura non è “Can an agent call this?” («un agente può chiamarlo?»). È “Would I expose this as a reviewed endpoint to a caller that can misunderstand instructions and relay untrusted text?” («esporrei questo come endpoint revisionato a un chiamante che può fraintendere le istruzioni e inoltrare testo non attendibile?»)

Contratti di test e comportamento dell’agente separati

Le indicazioni di valutazione di Chrome separano i test deterministici del prodotto dai test probabilistici dell’agente. Evidence for this claim WebMCP testing should combine deterministic contract and UI-state tests with probabilistic evaluation of agent tool selection and use. Scope: Chrome's evaluation guidance; teams must define product-specific tasks, models, risks, and thresholds. Confidence: high · Verified: Chrome: Evals for WebMCP Entrambi sono importanti:

I test deterministici dovrebbero verificare registrazione, rifiuto dello schema, input validi e non validi, autorizzazione, limiti di frequenza, effetti collaterali, forma degli errori, riduzione dell’output al minimo, parità dell’interfaccia, comportamento di deregistrazione e fallback nei browser non supportati.

Le valutazioni probabilistiche dovrebbero misurare se agenti rappresentativi scoprono lo strumento corretto, evitano quelli irrilevanti, scelgono i parametri corretti, chiedono chiarimenti quando necessario, rispettano le conferme, si fermano dopo il successo e resistono a descrizioni o output avversari.

Non usare un’unica demo prompt come gate di release. Un callback riuscito dimostra che il codice è stato eseguito; non dimostra che i modelli lo selezionino in modo affidabile o che l’azione sia sicura.

Cloudflare Browser Run: laboratorio utile, non abilitazione

Cloudflare documenta il supporto WebMCP nel pool di laboratorio sperimentale di Browser Run e dice che le sessioni di laboratorio non dovrebbero essere usate per carichi di lavoro di produzione. La sua pagina del 23 aprile contiene anche nomi di test più vecchi dell’epoca Chrome; usala quindi come prova dell’offerta attuale di Cloudflare, non come autorità sulla forma più recente dell’API WebMCP. Evidence for this claim 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. Scope: 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. Confidence: high · Verified: Cloudflare Browser Run: WebMCP

Cloudflare può fornire una sessione browser e un percorso agente che consuma strumenti. Non può dedurre il contratto sicuro della tua applicazione né registrare strumenti di proprietà della pagina che non hai costruito.

Pilot proposto per patrickstox.com: Schema Validator

Lo Schema Markup Validator è un buon candidato per un futuro pilot, non un’implementazione WebMCP attiva. Dispone già di un input incollato circoscritto, logica deterministica, problemi strutturati e un risultato visibile. Un futuro strumento validate_schema potrebbe riutilizzare lo stesso motore di validazione dell’interfaccia e dell’attuale suite di strumenti MCP remoti.

Il pilot dovrebbe aspettare che l’API del browser raggiunga una release stabile e non sperimentale e superi una nuova revisione di sicurezza. La prima versione dovrebbe essere di sola lettura, rilevata tramite feature detection, limitata negli input, con risposta ridotta al minimo e non disponibile sulle superfici preview, admin o riservate al proprietario. Questo sito non dichiara attualmente il supporto WebMCP.

Decisione: costruire, sperimentare, aspettare o saltare

SituazioneDecisione
Per un flusso cliente è richiesto un supporto browser stabileAspetta e mantieni completo il normale UI/API
Hai un’azione circoscritta di sola lettura e puoi gestire un laboratorio privatoSperimenta, con feature detection e senza dipendenze dalla produzione
L’attività richiede esecuzione in background o headlessUsa un’API o MCP remoto
La pagina pubblica soltanto contenutiSalta WebMCP; migliora HTML semantico e accessibile
L’azione scrive, acquista, invia, elimina o espone dati privatiNon fare un pilot alla leggera; richiedi un threat model separato e un progetto di conferma
Viene distribuita un’implementazione stabile e superano i test di contratto, sicurezza e paritàValuta un pilot progressivo in produzione

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.