Built-in tool _webmcp_browser-info para ver navegadores conectados

Agrega metadata tracking de browsers (userAgent, URL, hostname,
idioma, resolucion, timestamp) y tool browser-info para consultarla.
This commit is contained in:
2026-02-13 00:36:51 -06:00
parent 2a07e89a17
commit 603c547bfe
9 changed files with 28745 additions and 31 deletions

View File

@@ -74,19 +74,44 @@ Tool built-in `_webmcp_quitar-tool` con tres modos de operación. Solo disponibl
En los tres casos, después de resolver se llama `sendToolListChanged()` para que Claude actualice su lista.
#### 3. Eliminación de `define-mcp-tool`
#### 3. `browser-info` — Información de navegadores conectados
Tool built-in `_webmcp_browser-info` que muestra metadata de todos los navegadores conectados al servidor. Siempre disponible (no requiere `--dev`).
**No recibe parámetros.** Retorna un JSON array con la info de cada navegador:
| Campo | Descripción |
|---|---|
| `channel` | Canal WebSocket al que está conectado |
| `userAgent` | User agent del navegador |
| `url` | URL completa de la página |
| `hostname` | Hostname de la página |
| `language` | Idioma del navegador |
| `screenWidth` | Ancho de la ventana (px) |
| `screenHeight` | Alto de la ventana (px) |
| `connectedSince` | Timestamp de cuando se conectó |
**Flujo:** El navegador envía su `clientInfo` automáticamente al conectarse (en el `welcome`). El servidor almacena esta metadata en un `Map`. Cuando el agente llama `browser-info`, el server recopila la info de todos los clientes conectados y la retorna.
Si no hay navegadores conectados, retorna `"No hay navegadores conectados"`.
#### 4. Eliminación de `define-mcp-tool`
Se eliminó la built-in `_webmcp_define-mcp-tool` del upstream por no tener utilidad real en este fork.
#### 4. Manejo de mensajes nuevos en el cliente web (webmcp.js)
#### 5. Manejo de mensajes nuevos en el cliente web (webmcp.js)
- `createTool` — recibe la definición de herramienta del server, la compila y registra localmente
- `removeTool` — elimina una herramienta específica del registro local
- `removeAllTools` — limpia todas las herramientas del registro local
- `clipboardCopy` — permite copiar texto al portapapeles del usuario (usado para tokens)
- `clientInfo` — envía metadata del navegador al servidor al conectarse (automático en welcome)
- `getClientInfo` — responde con metadata actualizada del navegador cuando el server la solicita
#### 5. Ruteo en WebSocket Server (websocket-server.js)
#### 6. Ruteo en WebSocket Server (websocket-server.js)
- `handleCreateTool()` — recibe la petición del MCP server, encuentra un navegador conectado y le reenvía la instrucción de crear la herramienta
- `handleRemoveTool()` — maneja listar/eliminar herramientas, sincroniza entre el registry del server y los navegadores conectados
- `handleClientInfo()` — almacena la metadata del navegador en `clientMetadata` al conectarse
- `handleGetClientInfo()` — recopila metadata de todos los navegadores conectados y responde al MCP server
## Instalación