Diwall MCP
Ein MCP-Server, der einem Sprachmodell den Screenshot, den Barrierefreiheitsbaum und die Gesten des Browsers gibt, in dem Sie angemeldet sind. Vor einer unumkehrbaren Aktion fragt ein Fenster nach Ihrer Antwort, und ein Passwortfeld wird im Bild und im Text maskiert.
Ein Modell, das Ihren Browser nicht sieht, arbeitet nach Ihrer Beschreibung davon. Was Sie in dieser Beschreibung auslassen, kennt es nicht.
Mit Diwall MCP öffnet es Seiten in einem Browser, den Sie für es gewählt haben, erhält den Screenshot und den Barrierefreiheitsbaum, die Sie sehen würden, und handelt in den Sitzungen, in denen Sie dort angemeldet sind.
Zuerst, was das Modell erhält

Ein Aufruf des Werkzeugs observe auf einer Anmeldeseite, auf einem Raspberry Pi 4 (ARM, 64 Bit) in einem Chromium ausgeführt, das für
den Server auf einem eigenen Profil gestartet wurde. Es wurde nichts eingegeben: Das Passwortfeld ist
leer, und der Server überdeckt es im Bild trotzdem.
Das Bild ist das, das observe dem Modell liefert: Jedes Element, das es
berühren kann, steckt in einem nummerierten Rahmen, und das Passwortfeld ist von
einem vollen Rechteck überdeckt.
Der Text, den das Modell erhält, Schlüssel ausgelassen, der Name der Anwendung und der Rechnername durch Auslassungspunkte ersetzt, sonst nichts verändert:
{"ok": true,
"server": {"capture": "ok",
"counters": {"marks": 3, "tree_lines": 10, "redacted_fields": 0,
"frames_masked": 0, "marks_truncated": false}},
"page_content": {"title": "… — Connexion",
"tree": ["RootWebArea \"… — Connexion\"",
" StaticText \"…\"",
" StaticText \"Interface d'administration\"",
" form \"\"",
" StaticText \"Identifiant\"",
" textbox \"Identifiant\"",
" StaticText \"Mot de passe\"",
" textbox \"Mot de passe\"",
" button \"Se connecter\"",
" StaticText \"…\""],
"elements": [{"mark": 1, "role": "textbox", "name": "Identifiant", "value": "",
"state": ["focused", "required"]},
{"mark": 2, "role": "textbox", "name": "Mot de passe", "value": "",
"state": ["required"]},
{"mark": 3, "role": "button", "name": "Se connecter", "value": ""}]}}
Ausgelassen: unter server die Schlüssel origin, notices, tab_id,
snapshot_id, loader_id, viewport, dialog_open, image, operation_id
und tool sowie die Zähler omitted_not_visible und tree_truncated; unter
page_content url; in jedem Element in_viewport. Das Passwortfeld enthält
nichts, die Antwort enthält also keinen Wert dafür. Einen Aufruf derselben Art
können Sie auf der Demoseite des Repositorys, docs/demo/index.html,
nachspielen: Der Smoke-Test führt ihn auf Ihrem Rechner aus:
Installieren und prüfen →
Was es ist
Diwall MCP gibt Ihrem Modell die Augen und Hände einer Person, die an Ihrem Browser sitzt, innerhalb Ihrer eigenen Sitzungen.
Ihr MCP-Client startet den Server und spricht mit ihm über Standardeingabe und
Standardausgabe; das Modell erhält vierzehn Werkzeuge. Der Server verbindet sich
mit dem Browser, den Sie selbst starten, auf einem Profil,
das ihm vorbehalten ist, mit dem Debugging-Port auf 127.0.0.1. Das Modell
beobachtet einen Tab und benennt ein Element über seine Markierung; der Server
prüft, dass das Element noch dasjenige ist, das beobachtet wurde, bevor er
klickt oder tippt.
Drei Regeln hängen nicht davon ab, was das Modell entscheidet. Der Server liest und handelt nur auf den Websites, die Ihre Ursprungsrichtlinie zulässt: standardmäßig die, die Ihr Profil auflistet. Eine Zahlung, eine unwiderrufliche Löschung oder eine Änderung eines Geheimnisses wartet auf Ihre Antwort, in einem Fenster, das der Server auf Ihrem Bildschirm öffnet. Ein Passwort wird aus Ihrem verschlüsselten Verzeichnis eingegeben und gelangt nie zum Modell. Was er nie tut →
mcp-server-diwall-browser, in
Python 3.12 oder neuer; es wird aus einem Paket oder aus einem Klon des
Repositorys installiert.Eine Sitzung, von der Beobachtung bis zu einem Bestätigungsfenster
→ observe {"tab_id": "f395445606543e95"} capture: ok — marks: 4 — redacted_fields: 1 [1] textbox "User name" [2] textbox "Password" [3] button "Sign in" [4] link "Help" → click {"snapshot_id": "56f18791c433fa584ea5067f99185355", "mark": 3} → click {"snapshot_id": "…", "mark": …} Confirmation du serveur MCP Origine : https://shop.example.invalid Outil : click — geste : clic Texte tiré de la page : button "Payer maintenant" Cible du formulaire : https://shop.example.invalid Montants détectés (heuristique) : 42,00 € Catégories : paiement Signaux : vocabulary_payment, card_field_on_page, card_field_in_form [ Autoriser ] [ Refuser ]
Das Modell zeigt nicht auf Pixel: Es benennt die Markierung 3, die an die Schaltfläche gebunden ist, die der Browser dahinter hält. Wenn die Seite diese Schaltfläche seit der Beobachtung verschoben oder ersetzt hat, wird der Klick abgelehnt, und das Modell beobachtet erneut. Der zweite Klick zielt auf eine Zahlungsschaltfläche: Der Server führt ihn erst nach Ihrer Zustimmung aus, und es geschieht nichts, bis Sie antworten, in einem Fenster, das dem Server gehört, nicht dem Client des Modells. Neunzig Sekunden ohne Antwort gelten als Ablehnung.
Der erste Aufruf ist die echte Beobachtung von oben, auf ihre Markierungen
gekürzt. Der Klick auf Sign in zeigt nur den Aufruf. Das Fenster gehört zu
einer anderen Seite: Es ist der Text, den der Server in der eigenen Sitzung des
Projekts für einen Klick auf eine Zahlungsschaltfläche an einer Beispieladresse
gebaut hat
(Abschnitt 9 des Bedienerhandbuchs);
seine Beschriftungen sind französisch, wie der Server sie schreibt. Dieser Klick
nennt keine intent_category: Die Sperre wurde durch die Wörter und die
Kartenfelder der Seite ausgelöst, die Zeile Signaux.
Wie es weitergeht
- Anleitungen: von einem Klon des Repositorys zu einem Modell, das in Ihrem Browser arbeitet, in fünf Schritten, jeder mit seiner Prüfung.
- Wahrnehmung: was eine Beobachtung enthält und wie eine Markierung vor einem Klick geprüft wird.
- Anwendungsfälle: die Werkzeuge in der Reihenfolge einer Aufgabe in einer Sitzung, in der Sie bereits angemeldet sind, und was das Projekt bisher ausgeführt hat.
- Architektur: was Ihren Rechner verlässt, die getroffenen Entscheidungen, die Grenzen.
- Agenten: Wenn Sie ein Sprachmodell sind, beginnen Sie dort.
- Das Projekt: woher es kommt, seine Verbindung zu Diwall, wer es gebaut hat.