🌐Testen mit Chrome 🧪 Origin Trial / Flag

Schritt für Schritt von der Versionsprüfung über Flag und Origin Trial bis zu Puppeteer und Chrome DevTools MCP. Alle Angaben mit Quelle, Stand 24.09.2026. WebMCP ist experimentell – Namen und Verhalten können sich mit jeder Chrome-Version ändern.

🩺 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.modelContext vorhanden, navigator.modelContext nicht mehr.
  • ✅ Fehler wie in der Spec: InvalidStateError „Duplicate tool name“, „Invalid tool name“, „Description is required“.
  • ⚠️ getTools() liefert inputSchema als JSON-String; annotations enthält nur readOnlyHint und untrustedContentHint.
  • ⚠️ 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 bei type=date format: "date" und den Hinweis „Dates MUST be provided in 'YYYY-MM-DD' format.“
  • ✅ Agent füllt das Formular, :tool-form-active greift, toolactivated kommt auf window, respondWith() liefert das Ergebnis an executeTool().
  • ✅ Puppeteer page.webmcp.tools() und tool.execute({…}) funktionieren mit Objekten.
  • ℹ️ Ohne Label-Zuordnung per toolparamdescription nutzt 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

0/14

Häkchen werden nur lokal in diesem Browser gespeichert.

🧯 Fehlerbilder

SymptomUrsacheLösung
document.modelContext ist undefinedFlag aus bzw. Chrome nicht neu gestartet, Chrome < 146, kein Origin-Trial-Token, Seite über http:// statt HTTPS/localhostFlag 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.modelContextAb Chrome 150.0.7861.0 veraltet; Entfernung angekündigtAuf document.modelContext umstellen [GitHub]
registerTool() → InvalidStateErrorName schon vergeben (z. B. React StrictMode registriert doppelt ohne Abmelden), Name leer/zu lang/mit Leerzeichen oder Umlauten, leere descriptionNamen nur aus A–Z a–z 0–9 _ - . (max. 128); im Effekt-Cleanup controller.abort() [W3C]
registerTool() → NotAllowedErrorFremder iframe ohne allow="tools" oder Header Permissions-Policy: tools=()<iframe allow="tools"> bzw. Policy anpassen [W3C]
registerTool() → TypeErrorinputSchema lässt sich nicht als JSON serialisieren (zirkuläre Referenz, toJSON liefert undefined)Schema als schlichtes Objekt definieren [W3C]
API trotz Flag nicht daDokument ist nicht origin-isoliert (Origin-Agent-Cluster: ?0 / document.domain)Header entfernen, document.domain nicht setzen [Chrome]
Tools sind nach Seitenwechsel wegTools sind an Tab und Dokument gebunden (flüchtig)Bei SPA-Routenwechseln passende Tools neu registrieren [Chrome]
executeTool() → UnknownError: Failed to parse input argumentsChrome-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 failedexecute() 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 abgeschicktKein toolautosubmit – so gewollt: der Mensch sendet abtoolautosubmit nur setzen, wenn automatisches Absenden vertretbar ist [Chrome]
respondWith() wirkt nichtpreventDefault() nicht vorher aufgerufenErst e.preventDefault(), dann bei e.agentInvoked e.respondWith(promise) [Chrome]
Agent wählt falsches Tool oder falsche ArgumenteUnklare oder überlappende Beschreibungen, fehlende enum-Werte/ParameterbeschreibungenBeschreibungen schärfen, Tool-Anzahl klein halten, Evals schreiben [Chrome]
page.webmcp liefert keine Tools (Puppeteer)Chrome < 151 oder ohne --enable-features=WebMCP gestartetAktuelles Chrome, Launch-Argument setzen [Puppeteer]
DevTools MCP zeigt list_webmcp_tools nichtKategorie nicht aktiviert oder Chrome < 150 ohne Feature--categoryExperimentalWebmcp=true und --enable-features=WebMCP [ChromeDevTools]
Und ohne Chrome?
Die Live-Demo bringt einen eigenen Simulator mit, der registerTool, getTools,executeTool, AbortSignal und die Ereignisse nachbildet. Für echte Projekte gibt es Polyfills wie @mcp-b/webmcp-polyfill bzw.@mcp-b/global (Drittanbieter, nicht von Google/W3C). [MCP-B]