Diwall MCP

Español
Descargar v0.0.1

Diwall MCP

Un servidor MCP que entrega a un modelo de lenguaje la captura de pantalla, el árbol de accesibilidad y los gestos del navegador en el que usted ha iniciado sesión. Una ventana pide su respuesta antes de una acción irreversible, y un campo de contraseña se enmascara en la imagen y en el texto.

Un modelo que no ve su navegador trabaja a partir de su descripción. Lo que usted omite en esa descripción, él no lo sabe.

Con Diwall MCP, abre páginas en un navegador que usted ha elegido para él, recibe la captura de pantalla y el árbol de accesibilidad que usted vería, y actúa en las sesiones en las que usted ha iniciado sesión allí.

Primero, lo que recibe el modelo

Una página de inicio de sesión tal como la recibe el modelo: una tarjeta con un título, un campo de identificador en un marco numerado 1, un campo de contraseña bajo un rectángulo sólido en un marco numerado 2 y un botón en un marco numerado 3

Una llamada a la herramienta observe sobre una página de inicio de sesión, hecha en una Raspberry Pi 4 (ARM de 64 bits), en un Chromium que se inició para el servidor sobre un perfil propio. No se escribió nada: el campo de contraseña está vacío y el servidor lo cubre en la imagen de todos modos.

La imagen es la que observe entrega al modelo: cada elemento que puede tocar está en un marco numerado, y el campo de contraseña está cubierto por un rectángulo sólido.

El texto que recibe el modelo, con claves omitidas, y el nombre de la aplicación y el del equipo sustituidos por puntos suspensivos, sin ninguna otra modificación:

{"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": ""}]}}

Omitido: bajo server, las claves origin, notices, tab_id, snapshot_id, loader_id, viewport, dialog_open, image, operation_id y tool, y los contadores omitted_not_visible y tree_truncated; bajo page_content, url; en cada elemento, in_viewport. El campo de contraseña no contiene nada, así que la respuesta no guarda ningún valor para él. Una llamada del mismo tipo se puede repetir sobre la página de demostración del repositorio, docs/demo/index.html: la prueba de humo la hace en su máquina: Instalar y comprobar →

Qué es

Diwall MCP da a su modelo los ojos y las manos de una persona sentada ante su navegador, dentro de sus propias sesiones.

Su cliente MCP inicia el servidor y le habla por la entrada y la salida estándar; el modelo recibe catorce herramientas. El servidor se conecta al navegador que usted inicia por su cuenta, sobre un perfil reservado para él, con su puerto de depuración en 127.0.0.1. El modelo observa una pestaña y designa un elemento por su marca; el servidor comprueba que el elemento sigue siendo el que se observó antes de hacer clic o de escribir.

Tres reglas no dependen de lo que decida el modelo. El servidor solo lee y actúa en los sitios que admite su política de orígenes: por defecto, los que enumera su perfil. Un pago, una eliminación irreversible o un cambio de secreto espera su respuesta en una ventana que el servidor abre en su pantalla. Una contraseña se escribe desde su directorio cifrado y nunca llega al modelo. Lo que nunca hace →

Dónde funciona Linux. La guía del operador está escrita para Debian 13, donde se ejecutaron las pruebas del proyecto; hay paquetes para Debian, Ubuntu, Fedora, openSUSE Leap y Arch Linux. El paquete se llama mcp-server-diwall-browser, en Python 3.12 o posterior; se instala desde un paquete o desde un clon del repositorio.

Una sesión, de la observación a una ventana de confirmación

→ 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 ]

El modelo no apunta a píxeles: designa la marca 3, ligada al botón que el navegador mantiene detrás. Si la página ha movido o sustituido ese botón desde la observación, el clic se rechaza y el modelo observa de nuevo. El segundo clic apunta a un botón de pago: el servidor solo lo hace una vez dado su acuerdo, y no ocurre nada hasta que usted responda, en una ventana que pertenece al servidor, no al cliente del modelo. Noventa segundos sin respuesta cuentan como un rechazo.

La primera llamada es la observación real de arriba, abreviada a sus marcas. El clic en Sign in solo muestra la llamada. La ventana pertenece a otra página: es el texto que el servidor construyó en la sesión propia del proyecto para un clic en un botón de pago, en una dirección de ejemplo (sección 9 de la guía del operador); sus rótulos están en francés, tal como el servidor los escribe. Ese clic no nombra ningún intent_category: el bloqueo lo armaron las palabras y los campos de tarjeta de la página, la línea Signaux.

Adónde ir a continuación

  • Guías: de un clon del repositorio a un modelo que trabaja en su navegador, en cinco pasos, cada uno con su comprobación.
  • Percepción: lo que contiene una observación y cómo se comprueba una marca antes de un clic.
  • Casos de uso: las herramientas en el orden de una tarea, en una sesión en la que ya ha iniciado sesión, y lo que el proyecto ha ejecutado hasta ahora.
  • Arquitectura: lo que sale de su máquina, las decisiones tomadas, los límites.
  • Agentes: si usted es un modelo de lenguaje, empiece por ahí.
  • El proyecto: de dónde viene, su relación con Diwall, quién lo construyó.