🌐Testen mit Chrome 🧪 Origin Trial / Flag
🩺 Selbsttest in diesem Browser
Prüft sicheren Kontext, Version, API, Permissions Policy und einen echten Register-/Aufruf-Durchlauf.
🔬 Selbst beobachtet in Chrome 153
Diese App wurde am 24.09.2026 in Chrome 153.0.8010.53 (macOS, gestartet mit --enable-features=WebMCP) per Puppeteer getestet. Die Ergebnisse sind Momentaufnahmen einer experimentellen Implementierung, keine Spezifikation:
- ✅
document.modelContextvorhanden,navigator.modelContextnicht mehr. - ✅ Fehler wie in der Spec:
InvalidStateError„Duplicate tool name“, „Invalid tool name“, „Description is required“. - ⚠️
getTools()liefertinputSchemaals JSON-String;annotationsenthält nurreadOnlyHintunduntrustedContentHint. - ⚠️
executeTool(tool, {…})scheitert („Failed to parse input arguments“) – ein JSON-String funktioniert. Die Demo wiederholt automatisch. - ✅ Das deklarative Formular erscheint in
getTools(); Chrome ergänzt beitype=dateformat: "date"und den Hinweis „Dates MUST be provided in 'YYYY-MM-DD' format.“ - ✅ Agent füllt das Formular,
:tool-form-activegreift,toolactivatedkommt aufwindow,respondWith()liefert das Ergebnis anexecuteTool(). - ✅ Puppeteer
page.webmcp.tools()undtool.execute({…})funktionieren mit Objekten. - ℹ️ Ohne Label-Zuordnung per
toolparamdescriptionnutzt Chrome den Label-Text als Beschreibung („Name (optional)“).
🪜 Anleitung
Schritt 1: 🔢 Chrome-Version prüfen
Öffne chrome://version. Entwicklertest hinter einem Flag gibt es laut Chrome Status ab Chrome 146, den Origin Trial ab Chrome 149 (geplant bis einschließlich 156). Am 23.09.2026 ist Chrome 155 die stabile Version, 156 läuft im Dev- und Canary-Kanal. [Chromium] [Chromium]
Für aktuelle Details lohnt sich ein neuer Kanal: Einige Funktionen sind versionsabhängig, z. B. debugging-Annotation ab 156, Puppeteer-Unterstützung ab 151. [Chrome] [Puppeteer]
✅ Checkliste
Häkchen werden nur lokal in diesem Browser gespeichert.
🧯 Fehlerbilder
| Symptom | Ursache | Lösung |
|---|---|---|
| document.modelContext ist undefined | Flag aus bzw. Chrome nicht neu gestartet, Chrome < 146, kein Origin-Trial-Token, Seite über http:// statt HTTPS/localhost | Flag setzen und neu starten, Version prüfen, Token einbinden, sicheren Kontext nutzen – oder Feature-Erkennung mit Fallback [Chrome] |
| Nur navigator.modelContext vorhanden | Ältere Implementierung (Chrome 149 kennt nur die Navigator-Form) | const mc = document.modelContext || navigator.modelContext [GitHub] |
| Konsolenwarnung zu navigator.modelContext | Ab Chrome 150.0.7861.0 veraltet; Entfernung angekündigt | Auf document.modelContext umstellen [GitHub] |
| registerTool() → InvalidStateError | Name schon vergeben (z. B. React StrictMode registriert doppelt ohne Abmelden), Name leer/zu lang/mit Leerzeichen oder Umlauten, leere description | Namen nur aus A–Z a–z 0–9 _ - . (max. 128); im Effekt-Cleanup controller.abort() [W3C] |
| registerTool() → NotAllowedError | Fremder iframe ohne allow="tools" oder Header Permissions-Policy: tools=() | <iframe allow="tools"> bzw. Policy anpassen [W3C] |
| registerTool() → TypeError | inputSchema lässt sich nicht als JSON serialisieren (zirkuläre Referenz, toJSON liefert undefined) | Schema als schlichtes Objekt definieren [W3C] |
| API trotz Flag nicht da | Dokument ist nicht origin-isoliert (Origin-Agent-Cluster: ?0 / document.domain) | Header entfernen, document.domain nicht setzen [Chrome] |
| Tools sind nach Seitenwechsel weg | Tools sind an Tab und Dokument gebunden (flüchtig) | Bei SPA-Routenwechseln passende Tools neu registrieren [Chrome] |
| executeTool() → UnknownError: Failed to parse input arguments | Chrome-Version vor 155 erwartet die Eingabe als JSON-String (in Chrome 153 beobachtet) | Bei diesem Fehler mit JSON.stringify(args) wiederholen – oder Chrome ≥ 155 nutzen [VisualWebMCP] |
| executeTool() → UnknownError: Tool was executed but the invocation failed | execute() der Seite hat eine Exception geworfen (Details stehen in der Konsole der Seite) | Fehlermeldung in der Konsole lesen; im Tool verständliche Fehlertexte liefern [VisualWebMCP] |
| Formular-Tool wird nicht abgeschickt | Kein toolautosubmit – so gewollt: der Mensch sendet ab | toolautosubmit nur setzen, wenn automatisches Absenden vertretbar ist [Chrome] |
| respondWith() wirkt nicht | preventDefault() nicht vorher aufgerufen | Erst e.preventDefault(), dann bei e.agentInvoked e.respondWith(promise) [Chrome] |
| Agent wählt falsches Tool oder falsche Argumente | Unklare oder überlappende Beschreibungen, fehlende enum-Werte/Parameterbeschreibungen | Beschreibungen schärfen, Tool-Anzahl klein halten, Evals schreiben [Chrome] |
| page.webmcp liefert keine Tools (Puppeteer) | Chrome < 151 oder ohne --enable-features=WebMCP gestartet | Aktuelles Chrome, Launch-Argument setzen [Puppeteer] |
| DevTools MCP zeigt list_webmcp_tools nicht | Kategorie nicht aktiviert oder Chrome < 150 ohne Feature | --categoryExperimentalWebmcp=true und --enable-features=WebMCP [ChromeDevTools] |