Bisher interagieren KI-Agenten mit Webseiten vor allem über fehleranfälliges Screen-Scraping und simulierte Mausklicks (Actuation). Bricht ein CSS-Selektor oder ändert sich das Layout, scheitert der Agent. WebMCP (Web Model Context Protocol) schlägt die Brücke: Webseiten deklarieren ihre Fähigkeiten als strukturierte Werkzeuge für Browser- und Extensions-Agenten – wahlweise deklarativ im HTML oder imperativ via JavaScript.
WebMCP ist ein offener Web-Standard (W3C / Chrome Origin Trial ab Version 149), der Web-Applikationen befähigt, semantische Werkzeuge über document.modelContext oder annotierte HTML-Formulare bereitzustellen. Mit standardisierten Annotation-Hints (consequentialHint, readOnlyHint), Character-Budgets und Origin-Gating ermöglicht WebMCP sichere, zuverlässige und deterministische Agenten-Aktionen direkt im Browser.
WebMCP ersetzt unzuverlässiges DOM-Scraping durch semantische Tool-Schnittstellen: Der Browser wird vom passiven Anzeigemedium zur steuerbaren Werkbank für autonome Agenten.
Was brauche ich? (Prerequisites & Setup)
- Browser & Flags: Chrome 149+ (Origin Trial) oder lokal über
chrome://flags/#enable-webmcp-testingaktivieren. - Typdefinitionen:
@types/webmcpbzw. das npm-Paketwebmcp-types(oderusewebmcpfür React). - Permissions Policy: Standardmäßig
self; Cross-Origin-Iframes erfordern das Attributallow="tools".
Wie kann ich das prüfen? (Verification & Audit)
- Konsole:
'modelContext' in documentprüfen und verfügbare Tools mitawait document.modelContext.getTools()auflisten. - Inspektion: Die offizielle Chrome-Erweiterung Model Context Tool Inspector für manuelle Tool-Aufrufe nutzen.
- Events: Auf
document.modelContext.addEventListener("toolchange", ...)lauschen, um dynamische Updates zu verifizieren.
Typische Anwendungsfälle (Use Cases)
- Strukturierte Formular-Befüllung: Agent mappt Konversationsdaten fehlerfrei auf Pflicht- und Optionsfelder.
- Sichere Buchungs- & Kaufprozesse: Sensible Aktionen mit
consequentialHint: trueund Nutzer-Bestätigung. - App-Diagnose & Deep-Links: Agent führt Diagnose- oder Filterfunktionen ohne Menü-Odyssee im DOM aus.
Kriterien-Katalog: Was bei der Implementierung beachtet werden muss
Statt dem KI-Agenten eine starre Dateistruktur oder feste Pfade aufzuzwingen, folgt eine saubere WebMCP-Integration den acht offiziellen Spezifikations- und Sicherheitskriterien:
1. API-Wahl: Deklarativ vs. Imperativ
Formulare mit reinen Eingabefeldern nutzen deklarative HTML-Attribute (toolname, tooldescription) – Zero-JS! Komplexe Logik, State-Management und Navigationen nutzen document.modelContext.registerTool().
2. Verbindliche Annotation-Hints
Jedes imperative Tool muss Sicherheits-Hints deklarieren: consequentialHint: true erzwingt Bestätigungsdialoge bei Käufen/Löschungen, readOnlyHint: true markiert Leseoperationen, untrustedContentHint: true schützt vor Prompt Injections.
3. Offizielle Character Budgets
Tool- und Parameter-Namen $\le 30$ Zeichen, Parameter-Beschreibungen $\le 150$ Zeichen, Tool-Beschreibung $\le 500$ Zeichen und Tool-Output $\le 1.500$ Zeichen, um Agenten-Kontextfenster nicht zu sprengen.
4. Graceful Failure & Recovery
Fehler dürfen keine generischen 500er sein. Sie müssen als Wegweiser formuliert sein, damit das Modell sich selbst korrigieren kann (z. B. „Ungültiges Format. Erwartet: YYYY-MM-DD“ statt „Error“).
5. Kognitive Entlastung (Raw Input)
Akzeptiere rohen Nutzer-Input (z. B. Zeitangaben als String, keine Kopfrechnung vom LLM verlangen). Semantische Enums nutzen statt kryptischer IDs (shipping="Express" statt shipping_id=1).
6. Lifecycle & AbortSignal
Tools dynamisch mit controller.abort() deregistrieren, wenn der Zustand verlassen wird. In execute(params, { signal }) das signal an fetch() übergeben, um abgebrochene Aktionen sofort zu stoppen.
7. Permissions Policy & Origin Gating
Tools sind standardmäßig nur für dieselbe Origin sichtbar. Cross-Origin-Iframes benötigen allow="tools" und explizite Freigabe über das exposedTo-Array.
8. Validate in Code, loosely in Schema
Das JSON-Schema definiert Basistypen; die harte Geschäftslogik und Randfälle validiert der Code (z. B. Zod) mit präzisen, konstruktiven Fehlermeldungen.
Architektonische Best Practices
consequentialHint: truefür alle Käufe, Buchungen und Löschungen setzenuntrustedContentHint: truebei Nutzerbewertungen oder externem Content- AbortSignal für Tool-Deregistrierung und Request-Abbrüche weiterreichen
- Character Budgets einhalten (max. 500 Zeichen Beschreibung, 1.500 Output)
- Konstruktive Fehlermeldungen formulieren, die dem Modell den Ausweg zeigen
- Kryptische Parameter-IDs ohne semantische Klarheit fordern (
type_id=3) - Generische Exceptions werfen ("Error 500"), an denen der Agent scheitert
- Überlappende Tools deklarieren, die um dieselbe Nutzerabsicht konkurrieren
- Tools dauerhaft im DOM belassen, wenn die Aktion im aktuellen Viewport ungültig ist
Agent System Prompts
Kopiere diese Prompts in deinen Coding-Agenten (Cursor, Claude Code, Antigravity). Sie instruieren die KI anhand der 8 Spezifikationskriterien, ohne starre Dateipfade vorzugeben:
Du bist ein erfahrener Frontend-Architekt. Implementiere WebMCP in dieser Web-Anwendung.
Analysiere zuerst die bestehende Projektarchitektur (Framework, Routing, Formulare, State-Management) und wähle den passendsten Integrationsweg. Beachte dabei strikt folgende Kriterien der WebMCP-Spezifikation:
- API-Entscheidung: Nutze die Deklarative API (toolname / tooldescription auf HTML-Forms) für Standardformulare ohne JS-Overhead. Nutze document.modelContext.registerTool() für dynamische Logik.
- Annotation-Hints: Setze consequentialHint: true für alle Aktionen mit Seiteneffekten (Kauf, Buchung, Löschung). Setze readOnlyHint: true für reine Datenabfragen und untrustedContentHint: true für nutzergenerierte Inhalte.
- Character Budgets: Halte Tool-Namen unter 30 Zeichen, Parameter-Beschreibungen unter 150 Zeichen und Tool-Beschreibungen unter 500 Zeichen. Begrenze Tool-Outputs auf maximal 1.500 Zeichen.
- Error Recovery: Formuliere Fehlermeldungen konstruktiv als Wegweiser, damit sich das Modell selbst korrigieren kann.
- Lifecycle: Reiche in der execute-Funktion das AbortSignal an asynchrone Requests weiter und nutze AbortController zum Deregistrieren von Tools bei Zustandswechseln.
- Kognitive Entlastung: Akzeptiere rohe Nutzereingaben und nutze selbsterklärende Enums statt numerischer IDs.
Präsentiere nach der Implementierung eine Übersicht der registrierten Tools samt ihrer Schemas und Annotation-Hints.
Überprüfe die WebMCP-Werkzeuge in diesem Projekt auf Einhaltung der Spezifikation und Sicherheitsrichtlinien:
- Annotation-Audit: Sind consequentialHint und readOnlyHint korrekt gesetzt? Werden sensible Aktionen durch Nutzer-Bestätigung abgesichert?
- Prompt-Injection-Schutz: Sind Werkzeuge mit dynamischen oder externen Inhalten mit untrustedContentHint versehen? Gibt es ungeprüfte DOM-Manipulationen (innerHTML)?
- Character-Budget-Check: Überschreiten Tool-Beschreibungen (500 Zeichen) oder Outputs (1.500 Zeichen) die empfohlenen Grenzen?
- Permissions Policy: Werden Cross-Origin-Iframes explizit über allow="tools" und exposedTo kontrolliert?
- Cancellation: Wird das AbortSignal in long-running Werkzeugen korrekt bis zum fetch() durchgereicht?
- Eval-Fähigkeit: Sind Tool-Aufrufe deterministisch testbar und liefern klare Status-Rückmeldungen für Test-Suiten?
Gib einen priorisierten Prüfbericht mit konkreten Code-Optimierungen aus.
Checkliste: WebMCP in der Praxis
- API-Form gewählt: Deklarative Formulare für Zero-JS Eingaben;
document.modelContextfür App-Logik. - Annotation-Hints deklariert:
consequentialHintfür Buchungen/Käufe,readOnlyHintfür Lesezugriffe aktiv. - Character Budgets eingehalten: Beschreibung $\le 500$ Zeichen, Output $\le 1.500$ Zeichen pro Tool.
- Graceful Failure implementiert: Fehler liefern konstruktive Korrekturhinweise statt unleserlicher Exceptions.
- AbortSignal durchgereicht: Asynchrone
fetch()-Aufrufe brechen bei Agenten-Abbruch sauber ab. - Cross-Origin abgesichert: Iframes nutzen
allow="tools"und expliziteexposedTo-Origins.