Umbra MCP Server
Umbra
Controla tu propio Chrome con sesión iniciada desde un agente de IA, una sesión a la vez, sin entregar las cookies al agente.
Umbra son dos piezas que se emparejan con una clave compartida que generas: una extensión de Chrome MV3 que es dueña de cada llamada a la API de Chrome, y un servidor MCP local que expone una superficie de herramientas de navegador a cualquier cliente MCP. Se comunican únicamente a través de un WebSocket de loopback autenticado. Nada sale de la máquina.
Por qué existe esto
La depuración remota de un navegador le da al agente todo de golpe: cada pestaña, cada almacén de cookies, cada perfil. Umbra adopta la posición contraria. El agente recibe un grupo de pestañas que él mismo creó, las pestañas dentro de él, y nada más. Si le pides que lea una pestaña que no posee, la extensión se niega antes de que Chrome llegue a tocarse.
Dos herramientas quedan fuera de ese límite a propósito, y ambas están listadas como tal en docs/permissions.md: browser_find_tabs y browser_find_groups informan del título y la URL de pestañas que una sesión no posee, que es como se hace una cesión, y browser_cleanup_groups busca grupos de pestañas por título en todo el perfil para poder limpiar grupos dejados por una sesión que ya no existe. Dale a browser_cleanup_groups un prefijo de título que tus propios grupos no compartan, o ejecútalo con dryRun: true primero.
Ese límite es lo que lo hace utilizable contra un navegador en el que ya has iniciado sesión. El agente puede leer un panel en el que estás autenticado, rellenar un formulario, exportar un CSV y cerrar sus propias pestañas al terminar, mientras que tus otras ventanas permanecen intactas e ilegibles.
El proyecto es deliberadamente sobrio:
Chrome real, perfil real, sesión iniciada real, elegidos por ti
muchas sesiones de agente concurrentes en un solo navegador, cada una aislada en su propio grupo de pestañas
propiedad de pestañas por sesión aplicada en cada acción
sin exportación de cookies, sin extracción de tokens, sin resolución de CAPTCHA, sin fetch genérico en segundo plano
transporte de solo loopback con handshake HMAC en ambas direcciones
Related MCP server: byob
Instalación
La guía completa, con todas las variables que necesita una instalación normal, está en docs/install.md. La versión corta:
git clone https://github.com/RobertJLora/umbra
cd umbra/mcp-server
npm install
npm testLas dependencias viven en mcp-server/, no en la raíz del repositorio, así que npm install en la raíz no instala nada y npm test falla hasta que el comando anterior se haya ejecutado una vez. Después de eso, npm test, npm run doctor y npm run release:check funcionan desde la raíz.
Carga extension/ sin empaquetar en chrome://extensions con el modo Desarrollador activado, abre la página de opciones de la extensión, haz clic en Generate Key y luego haz clic en Copy Environment Line y pega esa línea en la configuración de tu cliente MCP. Reinicia el cliente y las herramientas aparecerán. Haz clic en Grant Site Access en la misma página antes de la primera lectura, ya que Umbra no solicita acceso a sitios al instalarse.
La instalación es un checkout del repositorio público. Después del clonado anterior, node mcp-server/cli.js pair genera la clave, la escribe en ~/.umbra/shared-key e imprime el bloque de configuración del cliente. El checkout público no incluye plugins locales opcionales.
Superficie de herramientas
Sesiones y pestañas
browser_create_tab, browser_list_tabs, browser_switch_tab, browser_close_tab, browser_freeze_session_tabs, browser_find_tabs, browser_cleanup_groups, browser_tabs_context, browser_get_session_status, browser_mark_debug_group
Adopción de pestañas ya abiertas
browser_adopt_tab, browser_adopt_group
Navegación
browser_navigate, browser_navigate_back, browser_navigate_forward, browser_resize
Lectura
browser_get_page_content, browser_read_interactive, browser_find, browser_get_snapshot, browser_screenshot
Interacción
browser_click, browser_type, browser_fill, browser_form_submit, browser_hover, browser_press, browser_shortcut, browser_scroll
Composición
browser_batch, browser_navigate_wait_read, browser_wait_for_selector
Avanzado y utilidades
browser_evaluate, browser_download, browser_wait_for_download, browser_reload_extension
browser_reload_extension solo existe para instalaciones de desarrollo sin empaquetar. La página de opciones tiene el mismo botón; este no pasa por el límite de herramientas, por lo que un agente siempre verá la herramienta rechazada en una instalación publicada.
La lista anterior es completa: los builds publicados no exponen más herramientas. Un checkout público puede llevarlas todas; los plugins opcionales específicos del sitio no forman parte de ningún build publicado.
Arquitectura
Tu cliente MCP habla con el servidor a través de stdio.
El servidor abre un WebSocket de loopback por sesión o a través del broker Rust.
La extensión es el único componente que llama a la API de Chrome; el servidor no tiene permisos de Chrome.
Cada sesión se limita a su propio grupo de pestañas con nombre y a las pestañas dentro de él.
Seguridad
Sin exportación de cookies, sin extracción de tokens, sin fetch en segundo plano.
WebSocket de loopback autenticado por clave compartida; las conexiones no autenticadas se cierran.
Sin código de terceros en el proceso de la extensión: las dependencias del servidor son solo para Node.
El agente solo ve las pestañas del grupo que posee, más las herramientas de descubrimiento que listan grupos, no su contenido.
Limitaciones conocidas
Las capturas de pantalla por defecto activan la pestaña antes de capturar.
silent: trueevita eso adjuntandochrome.debuggera la pestaña, pero Chrome muestra su banner de automatización.Los clics genéricos en texto pueden fallar en controles de paginación. Usa
browser_read_pageybrowser_clickcon los selectores devueltos en su lugar.Site access es un permiso opcional, solicitado desde la página de opciones en lugar de en la instalación. Hasta que se conceda, las lecturas de página fallarán con el error de permisos de Chrome.
Cambiar el rango de puertos requiere ajustar el mismo valor en ambos lados.
Diseño
extension/— extensión de Chrome MV3, puente offscreen, service worker de fondo.mcp-server/— servidor MCP stdio, listener WebSocket y lógica de sesión.rust-broker/— multiplexor de sesiones de una sola extensión WebSocket.scripts/— lanzador de Chrome aislado para pruebas locales.docs/— documentación de instalación, arquitectura, permisos y pruebas.
Documentación relacionada
docs/install.md— instalación y configuración completa.docs/architecture.md— flujo de datos y componentes.docs/permissions.md— justificación de cada permiso.docs/security.md— modelo de amenazas y superficie de ataque.docs/testing.md— cómo ejecutar la suite de pruebas.# Umbra
Controla tu propio Chrome desde un agente de IA, una sesión a la vez, sin compartir nada más.
Umbra son dos piezas que trabajan juntas con una clave compartida: una extensión MV3 de Chrome que posee todas las llamadas a la API de Chrome, y un servidor MCP que expone una superficie de herramientas del navegador a cualquier cliente MCP. La comunicación entre ambas se realiza a través de un WebSocket local autenticado. Nada sale de tu máquina.
Por qué existe
Depurar un navegador de forma remota expone demasiado: todas las pestañas, todas las cookies, todos los perfiles. Umbra invierte ese modelo. En lugar de dar a un agente acceso a todo el navegador, le das una sesión aislada: un perfil de Chrome temporal, propio, que se crea, se usa y se destruye. El agente solo puede ver y tocar lo que esa sesión contiene.
Cómo funciona
La extensión de Chrome se ejecuta en segundo plano y gestiona la creación y el ciclo de vida de las sesiones.
El servidor MCP se conecta a la extensión a través del WebSocket local.
Cada sesión tiene su propio perfil de Chrome aislado (carpeta de datos de usuario, cookies, almacenamiento).
Cuando la sesión termina, el perfil se elimina por completo.
Instalación
git clone https://github.com/RobertJLora/umbra
cd umbra/mcp-server
npm install
npm testDependencias en mcp-server/, no en la raíz, así que npm install en la raíz no instala nada y npm test falla hasta que el comando anterior se ha ejecutado una vez. Después, npm test, npm run doctor y npm run release funcionan desde la raíz.
Carga extension/ sin empaquetar en chrome://extensions, abre la página de opciones de la extensión, haz clic en Generar clave y luego en Copiar línea de entorno y pega esa línea en la configuración de tu cliente MCP. Reinicia el cliente y las herramientas aparecerán. Haz clic en Conceder acceso al sitio en la misma página antes de la primera lectura, porque Umbra no solicita acceso a sitios en el momento de la instalación.
La instalación es una copia del repositorio público. Después del clonado anterior, node mcp-server/cli.js pair genera la clave, la escribe en ~/.umbra/shared-key e imprime el bloque de configuración del cliente. La copia pública no incluye plugins locales opcionales.
Herramientas
Sesión y pestañas
browser_create_session, browser_list_sessions, browser_switch_session, browser_close_session, browser_freeze_session, browser_list_tabs, browser_switch_tab, browser_close_tab
Navegación y lectura
browser_navigate, browser_read_page, browser_snapshot, browser_wait_for, browser_scroll, browser_find
Interacción
browser_click, browser_type, browser_submit, browser_upload, browser_download, browser_shortcut
Avanzado
browser_run_javascript, browser_get_cookies, browser_set_cookie, browser_clear_cookies, browser_get_storage, browser_set_storage
Qué no hace
No expone cookies entre sesiones: cada sesión tiene su propio almacenamiento.
No permite que un agente acceda a sesiones de otros agentes.
No ejecuta JavaScript arbitrario fuera del ámbito de la sesión.
No permite que una sesión abra ventanas del navegador principal.
Limitaciones conocidas
La primera lectura de página requiere que hagas clic en "Grant Site Access" en la página de opciones; Umbra no solicita acceso a sitios en la instalación.
Las capturas de pantalla por defecto activan la pestaña antes de capturar.
silent: trueevita eso adjuntandochrome.debuggera la pestaña, lo que muestra el banner de automatización de Chrome.El rango de puertos por defecto es
47829-47859; la extensión lo limita a1024-65535. Si cambias el rango, reinicia tanto la extensión como el servidor.Las capturas de pantalla por defecto activan la pestaña antes de capturar.
silent: trueevita eso adjuntandochrome.debuggera la pestaña, lo que hace que Chrome muestre su banner de automatización.El acceso a sitios es un permiso opcional, solicitado desde el botón Grant Site Access en la página de opciones en lugar de en la instalación. Hasta que se concede, las lecturas de página y las capturas de pantalla fallan.
Concurrencia y presión
Un solo agente puede abrir muchas pestañas, y muchos agentes pueden compartir un servidor. Umbra supervisa la presión de la sesión: número de pestañas propiedad de una sesión, recuento de listeners conectados y profundidad de la cola del agente de contenido. browser_get_session_status informa de esa presión. Cuando una sesión supera un umbral, rechaza nuevas peticiones de creación en lugar de degradar el rendimiento.
Lo que Umbra no hará
No sincronizará ni volcará cookies.
No resolverá CAPTCHAs.
No expondrá almacenamiento de claves o secretos del sistema.
No ejecutará nada que no sea JavaScript en la página activa de la sesión.
No usará
chrome.debuggera menos que se solicite explícitamente (para capturas de pantalla o red).
Limitaciones conocidas
Las capturas de pantalla por defecto activan la pestaña.
silent: trueevita eso usandochrome.debuggerpara una únicaPage.captureScreenshot, lo que muestra el banner de automatización.Los selectores de clics son compatibles con
text=,css=yxpath=; el soporte derole=aún no está completo.La subida de archivos requiere una ruta absoluta local y una política de permisos que lo permita.
Estructura del repositorio
extension/— la extensión MV3 de Chrome.mcp-server/— el servidor MCP (TypeScript, sin dependencias de runtime).rust-broker/— puente de loopback opcional escrito en Rust para la comunicación entre la extensión y el servidor.scripts/— lanzador de Chrome aislado y comprobaciones de estado.docs/— documentación de instalación, arquitectura, permisos y guía de pruebas.
Lee THREAT_MODEL.md y SECURITY_REVIEW.md antes de apuntar esto a un navegador que contenga algo que te importe.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to control and automate your Chrome browser directly, leveraging existing login states and configurations for tasks like content analysis, semantic search across tabs, screenshots, network monitoring, and interactive operations.10MIT
- AlicenseNot gradedqualityCmaintenanceLets AI assistants control your real Chrome browser to perform web tasks like reading pages, taking screenshots, clicking, and typing, using your existing logged-in sessions.131MIT
- AlicenseBqualityAmaintenanceControls a real Chrome browser for AI agents, enabling authenticated automation with parallel lanes, token-efficient page reads, and robust recovery mechanisms.1002,122232MIT
- AlicenseAqualityDmaintenanceEnables AI agents to control the user's Chrome or Firefox browser, leveraging existing sessions for tasks requiring authentication and user handoff.181715MIT
Related MCP Connectors
Browser MCP for logged-in tasks. Uses your Chrome — credentials stay local. Zero-token replay.
AI-powered browser automation — navigate, click, fill forms, and extract data from any website.
Reliable web access for AI agents: smart HTTP, rotating proxies, and full-browser rendering.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/RobertJLora/umbra'
If you have feedback or need assistance with the MCP directory API, please join our Discord server