Diwall MCP

Français
Télécharger v0.0.1

Choix techniques

Un client DevTools écrit à la main avec 27 méthodes autorisées, des flux standard au lieu d'un port, une fenêtre de confirmation à laquelle le client du modèle ne peut pas répondre, et les options écartées avec ce qui les rouvrirait.

Python, quatre dépendances épinglées

Le serveur est un paquet Python (3.12 ou plus récent). Ses dépendances d’exécution sont épinglées à des versions exactes dans pyproject.toml : mcp 1.25.0 (le SDK MCP), websockets 15.0.1, pillow 12.0.0 et pydantic 2.12.5. Aucune bibliothèque d’automatisation de navigateur n’en fait partie.

Un client DevTools écrit à la main

Avec une bibliothèque d’automatisation générale, ce que le serveur peut envoyer au navigateur est tout ce que la bibliothèque peut envoyer. Le serveur a plutôt son propre client du Chrome DevTools Protocol, et les méthodes qu’il peut appeler forment une liste de 27, dans un seul module ; un test compare cette liste à chaque nom de méthode que le code emploie. Les scripts n’atteignent une page que depuis une table de textes constants de ce module. Les arguments d’un outil voyagent dans le champ arguments du protocole et ne sont jamais écrits dans un script, si bien qu’une valeur choisie par le modèle ne peut pas devenir du code.

Des flux standard, aucun port

Le serveur parle à son client par l’entrée et la sortie standard et ne tient aucun socket en écoute. Un port en écoute peut être atteint par n’importe quel processus de la machine ; les flux standard lient le serveur au seul client qui l’a lancé. Il tourne avec une limite de fichier core à zéro et n’écrit sur sa sortie standard que le protocole.

Une confirmation à laquelle le client ne peut pas répondre

Le client MCP agit pour le modèle, et peut répondre seul à une demande. Un paiement, une suppression irréversible ou un changement de secret se confirme donc dans une fenêtre que le serveur ouvre avec kdialog ou zenity, lancé sans shell, qui montre l’état lu dans le navigateur à cet instant : l’origine, le geste, le texte de l’élément, la cible du formulaire, les montants trouvés. Le refus est le bouton par défaut là où le programme de fenêtre le permet ; l’absence de réponse en 90 secondes vaut refus. Une réponse couvre une action. La seule exception, une demande par le client (élicitation), exige une déclaration de votre profil de l’opérateur.

Ce qui arme le verrou, c’est un vocabulaire écrit dans le code et les champs de carte de la page. L’intent_category du modèle et les heuristiques de la page peuvent ajouter un verrou ; rien n’en retire un, et le profil de l’opérateur ne peut pas les configurer.

Écarté, et ce qui le rouvrirait

  • Playwright ou une bibliothèque semblable. Ce que le serveur envoie serait la liste de la bibliothèque, pas celle du projet. Le rouvrirait : un navigateur dont le protocole n’est plus parlé par le client écrit à la main.
  • Un outil qui exécute un script. Il contournerait les repères, les contrôles d’identité, le verrou et les masques, et lirait tout ce qu’une page contient. Le rouvrirait : une tâche de votre part que les outils ne savent pas faire, alors sous la forme d’un nouveau script constant, jamais d’un script que le modèle écrit.
  • Lire à l’intérieur des cadres. Un cadre d’une autre origine est un autre site, souvent de paiement ou de publicité. Le rouvrirait : un site de votre liste dont le contenu nécessaire se trouve dans un cadre de la même origine.
  • Un transport réseau. Un port en écoute est joignable par tout processus local. Le rouvrirait : un client dont vous avez besoin et qui n’atteint les serveurs que par le réseau.
  • Des plafonds plus hauts. Ils bornent ce que le modèle reçoit. Le rouvrirait : une page dont la seule couche est coupée avec l’ordre actuel.
  • Un outil qui convertit les identifiants. Le modèle recevrait le chemin d’un fichier de secrets. Le rouvrirait : un opérateur sans shell, et un moyen de garder les valeurs hors de la session du modèle.
  • Un contexte de navigateur propre au serveur. Ses onglets ne partageraient pas vos sessions ouvertes, qui sont la raison d’être du projet. Le rouvrirait : un navigateur qui accepte le réglage de téléchargement pour un seul onglet.

Diwall, le projet dont celui-ci descend, donne lui aussi à un modèle une image avec des éléments numérotés et l’arbre d’accessibilité ; son navigateur et son transport ne sont pas ceux-ci. Le lien entre les deux projets est sur Le projet.