Diwall MCP

Deutsch
Herunterladen v0.0.1

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

Eine Anmeldeseite, wie das Modell sie erhält: eine Karte mit einem Titel, einem Feld für die Kennung in einem mit 1 nummerierten Rahmen, einem Passwortfeld unter einem vollen Rechteck in einem mit 2 nummerierten Rahmen und einer Schaltfläche in einem mit 3 nummerierten Rahmen

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 →

Wo er läuft Linux. Das Bedienerhandbuch ist für Debian 13 geschrieben, wo die Tests des Projekts liefen; es gibt Pakete für Debian, Ubuntu, Fedora, openSUSE Leap und Arch Linux. Das Paket heißt 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.