Diwall MCP

Deutsch
Herunterladen v0.0.1

Technische Entscheidungen

Ein von Hand geschriebener DevTools-Client mit 27 erlaubten Methoden, Standardströme statt eines Ports, ein Bestätigungsfenster, das der Client des Modells nicht beantworten kann, und die verworfenen Optionen mit dem, was sie wieder öffnen würde.

Python, vier festgelegte Abhängigkeiten

Der Server ist ein Python-Paket (3.12 oder neuer). Seine Laufzeitabhängigkeiten sind in pyproject.toml auf genaue Versionen festgelegt: mcp 1.25.0 (das MCP-SDK), websockets 15.0.1, pillow 12.0.0 und pydantic 2.12.5. Eine Bibliothek zur Browserautomatisierung ist nicht darunter.

Ein von Hand geschriebener DevTools-Client

Mit einer allgemeinen Automatisierungsbibliothek ist das, was der Server an den Browser senden kann, alles, was die Bibliothek senden kann. Der Server hat stattdessen einen eigenen Client für das Chrome DevTools Protocol, und die Methoden, die er aufrufen darf, sind eine Liste von 27, in einem Modul; ein Test vergleicht diese Liste mit jedem Methodennamen, den der Code verwendet. Skripte erreichen eine Seite nur aus einer Tabelle konstanter Texte in diesem Modul. Die Argumente eines Werkzeugs reisen im Feld arguments des Protokolls und werden nie in ein Skript geschrieben, sodass ein Wert, den das Modell wählt, nicht zu Code werden kann.

Standardströme, kein Port

Der Server spricht mit seinem Client über Standardeingabe und Standardausgabe und hält keinen lauschenden Socket. Ein lauschender Port ist für jeden Prozess des Rechners erreichbar; Standardströme binden den Server an den einen Client, der ihn gestartet hat. Er läuft mit einer Core-Datei-Grenze von null und schreibt auf seine Standardausgabe nichts außer dem Protokoll.

Eine Bestätigung, die der Client nicht beantworten kann

Der MCP-Client handelt für das Modell und kann eine Anfrage von selbst beantworten. Darum wird eine Zahlung, eine unwiderrufliche Löschung oder eine Änderung eines Geheimnisses in einem Fenster bestätigt, das der Server mit kdialog oder zenity öffnet, ohne Shell gestartet, und das den in diesem Moment im Browser gelesenen Zustand zeigt: den Origin, die Geste, den Text des Elements, das Ziel des Formulars, die gefundenen Beträge. Die Ablehnung ist die Standardschaltfläche, wo das Fensterprogramm es zulässt; keine Antwort innerhalb von 90 Sekunden gilt als Ablehnung. Eine Antwort gilt für eine Aktion. Die einzige Ausnahme, eine Anfrage über den Client (Elicitation), braucht eine Erklärung Ihres Bedienerprofils.

Die Sperre löst ein im Code geschriebenes Vokabular und die Kartenfelder der Seite aus. Die intent_category des Modells und die Heuristiken der Seite können eine Sperre hinzufügen; nichts entfernt eine, und das Bedienerprofil kann sie nicht konfigurieren.

Verworfen, und was es wieder öffnen würde

  • Playwright oder eine ähnliche Bibliothek. Was der Server sendet, wäre die Liste der Bibliothek, nicht die des Projekts. Würde es wieder öffnen: ein Browser, dessen Protokoll der von Hand geschriebene Client nicht mehr sprechen kann.
  • Ein Werkzeug, das ein Skript ausführt. Es würde Markierungen, Identitätsprüfungen, die Sperre und die Masken umgehen und alles lesen, was eine Seite enthält. Würde es wieder öffnen: eine Aufgabe von Ihnen, die die Werkzeuge nicht erledigen können, dann als neues konstantes Skript, nie als eines, das das Modell schreibt.
  • Lesen innerhalb von Frames. Ein Frame eines anderen Origins ist eine andere Website, oft eine für Zahlungen oder Werbung. Würde es wieder öffnen: eine Website Ihrer Liste, deren benötigter Inhalt in einem Frame desselben Origins liegt.
  • Ein Netzwerktransport. Ein lauschender Port ist für jeden lokalen Prozess erreichbar. Würde ihn wieder öffnen: ein Client, den Sie brauchen und der Server nur über das Netzwerk erreicht.
  • Höhere Obergrenzen. Sie halten das, was das Modell erhält, begrenzt. Würde sie wieder öffnen: eine Seite, deren einzige Ebene unter der jetzigen Reihenfolge abgeschnitten wird.
  • Ein Werkzeug, das Zugangsdaten umwandelt. Dem Modell würde der Pfad einer Geheimnisdatei übergeben. Würde es wieder öffnen: ein Bediener ohne Shell und ein Weg, die Werte aus der Sitzung des Modells herauszuhalten.
  • Ein eigener Browserkontext des Servers. Seine Tabs würden Ihre angemeldeten Sitzungen nicht teilen, den Grund des Projekts. Würde ihn wieder öffnen: ein Browser, der die Download-Einstellung für einen einzelnen Tab annimmt.

Diwall, das Projekt, von dem dieses abstammt, gibt einem Modell ebenfalls ein Bild mit nummerierten Elementen und den Barrierefreiheitsbaum; sein Browser und sein Transport sind nicht dieselben. Wie die beiden Projekte zueinander stehen, steht unter Das Projekt.