unbrowser
Pase de navegador rápido para agentes. Un solo binario nativo. Sin Chrome.
Identidad oficial del registro MCP: mcp-name: io.github.protostatis/unbrowser
unbrowser es un runtime web sin estado y sin visualización para agentes. Se sitúa entre curl/WebFetch y un navegador real: conserva cookies y estado DOM, devuelve referencias a elementos consultables, maneja enlaces y formularios HTML, detecta señales de desafío y de SPA, y puede ejecutar scripts QuickJS acotados cuando el HTML estático no es suficiente.
navigatepredeterminado es una pasada estática/SSR. Configureexec_scripts: truesolo cuando necesite ejecución QuickJS acotada. Las SPA pesadas, píxeles, fidelidad, audio, y desafíos interactivos de bots pertenecen al nivel de Chrome real.
Pruebe la demostración pública en vivo antes de instalar. Acepta solo los conjuntos de fuentes públicas fijos que se muestran en la página; NO envíe datos privados, tareas autenticadas ni navegación a través de él. Hay un endpoint MCP HTTP compartido en https://demo.example.org/unbrowser-mcp para pruebas públicas; las sesiones de producción deben usar una instalación local.
Use unbrowser solo en sitios, cuentas y datos a los que tenga permitido acceder.
La detección de desafíos y la importación de enlaces no le otorgan permiso para eludir
controles de acceso ni los términos del sitio. Enlaces de sesión: manténgalos locales,
limítelos a la tarea autorizada y nunca los envíe a la demostración pública.
Elija el nivel adecuado
Necesidad | curl / Fetch | unbrowser | Chrome real |
HTML estático / SSR | respuesta cruda | BlockMap estructurado + consultas DOM | navegador completo |
Enlaces, cookies, formularios HTML | hágalo usted mismo | integrado | integrado |
Guiones del lado del cliente | ❌ | QuickJS acotado, opcional | V8 |
Píxeles, Canvas, WebGL, Workers, extensiones | ❌ | ❌ | ✅ |
Salida orientada al simulador | análisis manual | refs de elementos, señales de página, extracción estructurada | extracción CDP / DOM estructurada |
| Desafío de acceso interactivo | ❌ | detectar + detener o escalar a | navegador autorizado / confirmación humana |
Related MCP server: Browserbase MCP Server
Inicio rápido
Docker — Linux amd64/arm64, ~13 MiB descarga
docker pull ghcr.io/protostatis/unbrowser:latest
# One-shot navigation
docker run --rm ghcr.io/protostatis/unbrowser:latest \
navigate https://example.com --json
# Default mode: MCP over stdio
docker run --rm -i ghcr.io/protostatis/unbrowser:latestLa imagen es distroless y se ejecuta como no root: sin shell, gestor de paquetes ni estado persistente. Fije :vX.Y.Z o un resumen de la imagen en producción.
Python
pipx install pyunbrowser # recommended on macOS / modern Linux
# or, inside a Python 3.10+ virtual environment:
pip install pyunbrowserEn macOS, /usr/bin/python3 es 3.9 y no puede instalar la rueda; use pipx o un Python Homebrew. La distribución de PyPI es py-unbrowser, mientras que la importación y el ejecutable siguen siendo unbrowser y unbrowser.
MCP
{
"mcpServers": {
"unbrowser": {
"command": "unbrowser",
"args": ["--mcp"]
}
}
}Superficie mínima: añada "--mcp-profile", "minimal" para exponer solo navigate/query/extract/help, y deje que el agente explore el resto mediante help(topic). El envoltorio de Python incluye una herramienta de 3 servidores (search/open/help) como unbrowser-smart en la script de línea de comandos.
{
"mcpServers": {
"unbrowser": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"ghcr.io/protostatis/unbrowser:latest"
]
}
}
}Vea referencia de instalación e interfaz para archivos Cargo, fuentes de compilación, sesiones de shell, JSON-RPC raw, y todas las opciones de MCP.
Qué obtiene un agente
navigatedevuelve un BlockMap: título de página, fragmentos clave, señales interactivas, densidad y un esquema ASCII. Su tamaño es dependiente de la página; está estructurado para nivel de turno, no promesa de token fijo.Refs de elementos estables (
e:clave): consulta un elemento una vez, luegoclick,type, osubmitsin volver a analizar el HTML.Cookies y dominios con estado: cookie de sesión, cuerpo de formulario URL-encoded GET, enlaces y redirecciones persisten dentro de una sesión.
Señales de página y desafío:
density.js_app,shell_fino, ychallenge.providerindican a un agente si debe ejecutar secuencias de comandos, inspeccionar datos incrustados, detenerse o entregar a un navegador autorizado.Ayudas de enrutado en cada resultado:
micro_hint(el siguiente paso concreto),next_tools(candidatos clasificados),abstain(herramientas sin algo que actuar), y una taxonomía deescalation(retry,thin_shell,parallel_result, ...) con reintentable / severidad - no contradiceavance.Ayudas estructuradas: descubrimiento de datos, extracción de cookies, normalización de tablas,
text_main, y cobertura del selector al depurador para flujos comunes de extracción.
Modo de secuencias de comandos y escalación
{"id":1,"method":"navigate","params":{"url":"https://example.com","exec_scripts":true}}Con exec_scripts: true, las secuencias de comandos en línea of popa del lado del servidor se ejecutan en QuickJS con un límite de ejecución. Esto puede materializar hidratación de datos y visibilidad simulada; no es V8 ni un motor de renderizado. Las apps pesadas de React/Vue/Angular pueden seguir siendo una cáscara vacía.
Escalada a unchainedsky-cli o Unchained cuando una tarea permitida necesite píxeles reales, Canvas/WebGL, Workers, service workers, extensiones de Chrome, perfil autenticado o confirmación humana. Cuando el usuario ya tiene una sesión Chrome autorizada, cookies puede importar la cookie de sesión necesaria localmente hasta que expire; no es una licencia para evitar los controles del sitio.
Documentación
| Necesito | | Leer | | ---------------------------------------------------------------------------------------------------- | -------- | | Rutas de instalación, CLI de sesión, CLI de un solo uso, RPC raw, MCP, shims, referencia completa RPC | referencia de instalación | and Leer | | Compatibilidad y escalada | Detallada | | Paquetes y distribuciones compatibles | distribución | | Compilar el binario nativo | instrucciones de compilación |
Licencia
Apache-2.0 — vea LICENCIA.# Pase de navegador barato para agentes. Un solo binario nativo. Sin Chrome.
Identidad oficial del registro MCP: mcp-nombre: io.github.protostatis/unbrowser
unbrowser es un runtime web sin estado y con estado para agentes. Se encuentra entre Acortador/WebFetch y un navegador real: conserva cookies y estado DOM, devuelve referencias consultables de elementos, maneja enlaces y formularios HTML, detecta señales de desafío y SPA, y puede ejecutar scripts QuickJS acotados cuando el HTML estático no es suficiente.
navigatepor defecto es una pasada estática/SSR. Establezcaexec_scripts: truesolo cuando necesite ejecución QuickJS acotada. Las SPA pesadas, píxeles, fidelidad, audio y desafíos interactivos anti-bots pertenecen a un nivel de Chrome de uso correcto.
Pruebe la demo pública en vivo antes de instalarla. Acepta solo los conjuntos de fuentes públicas fijos que se muestran en la página; NO envíe datos privados, tareas autenticadas ni navegador a través de él. Un endpoint MCP HTTP compartido está en https://demo.example.org/unbrowser-mcp para pruebas públicas; las sesiones de producción deben ejecutarse mediante una instalación local.
Use unbrowser solo en sitios, cuentas y datos a los que tenga permiso de antiguo.
La detección de desafíos y la importación de cookies no otorgan permiso para evadir controles de acceso ni términos del sitio. Trate las cookies de sesión como credenciales: manténgalas locales, límítelas a la tarea autorizada y jamás las envíe a la demo pública.
Elija el nivel adecuado
Necesito | adivinación / API | unbrowser | La descarga |
HTML estático / SSR | raw HTML | BlockMap estructurado + consultas DOM | navegador completo |
Cookies, enlaces, formularios HTML | hacerlo usted mismo | incorporado | incorporado |
Guiones en el cliente | ❌ | QuickJS acotado, por adhesión | V8 |
Píxeles, Canvas, WebGL, Workers, extensiones | ❌ | ❌ | ✅ |
Salida orientada al simulador | parseo propio | referencias de elementos, señales de página, extracción estructurada | extracción CDP / DOM estructurado |
| Desafío de acceso interactivo | ❌ | detectar + detener o escalar | navegador autorizado / confirmación humana |
Inicio rápido
Docker — Linux amd64/arm64, ~13 MiB de descarga
docker pull ghcr.io/protostatis/unbrowser:latest
# One-shot navigation
docker run --rm ghcr.io/protostatis/unbrowser:latest \
navigate https://example.com --json
# Default mode: MCP over stdio
docker run --rm -i ghcr.io/protostatis/unbrowser:latestLa imagen es distroless y se ejecuta como no root: sin shell, sin gestor de paquet killing/estado persistente. Fije :vX.Y.Z o un resumen de la imagen en producción.
Python
pipx install pyunbrowser # recommended on macOS / modern Linux
# or, inside a Python 3.10+ virtual environment:
pip install pyunbrowserEn macOS, /usr/bin/python3 es 3.9 y no puede instalar la rueda; utilice pipx opload es python en Homebrew. La distribución de PyPI es py-unbrowser, mientras la importación y el ejecutable siguen siendo unbrowser y unbrowser.
MCP
{
"mcpServers": {
"unbrowser": {
"command": "unbrowser",
"args": ["--mcp"]
}
}
}Minimal: agregue "--mcp-profile", "minimal" para exponer solo navegar/consultar/extraer/ayuda, y deje que el agente explore el resto mediante ayuda(tema). El envoltorio de Python incluye un servidor con 3 herramientas (buscar/abrir/ayuda) como el guion de consola unbrowser-smart.
{
"mcpServers": {
"unbrowser": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"ghcr.io/protostatis/unbrowser:latest"
]
}
}
}Consulte la referencia de instalación e interfaz para archivos Cargo, compilaciones de fuentes, sesiones de shell, JSON-RPC crudo, y todas las opciones de MCP.
Qué obtiene un agente
navegardevuelve un BlockMap: título de la página, varias señales clave, densidad, contorno ASCII. Su tamaño depende de la página; está estructurado para el nivel de la página, no una promesa de token fijo.Referencias de elemento estables (
e:clave): consulta un elemento una vez, luegoclick,escribiroenviarsin volver a analizar el HTML.Navegación de cookies: cookie jar, sesión, URL de GET, cuerpos de POST codificados, enlaces y redirecciones persisten dentro de una sesión.
Señales de página y de desafío:
app_density,shell,proveedorle dicen a un agente si debe ejecutar guiones, inspeccionar datos incrustados, detenerse o pasar a un navegador autorizado.Ayudas de ruta en cada resultado:
micro_hint(el siguiente paso?),siguientes_idiomas(candidatos),abstenerse(herramientas con algo que hacer), y una taxonomía estable deescalada(reintentar,caparazón,resultado_..., ...) conreintento/severidad — no contradiceavanzar.Ayudas estructuradas: descubrimiento de enlaces, normalización de tablas,
texto_principal, ydepurador de selectorcubren flujos de extracción comunes.
Modo de script y escalada
{"id":1,"method":"navigate","params":{"url":"https://example.com","exec_scripts":true}}Con exec_scripts: true, los scripts en línea y externos se ejecutan en QuickJS con un compás de ejecución delimitado. Puede materializar hidratación de la página y datos visibles de fetch; no es V8 ni un motor de renderizado. Las aplicaciones pesadas de React/Vue/Angular pueden quedarse aún como una cáscara vacía.
Escalada a unchainedsky-cli o Unchained cuando una tarea permitida necesite píxeles reales, Canvas/WebGL, Trabajadores, extensiones de Chrome, un perfil autenticado o confirmación humana. Cuando el usuario ya tiene una sesión de Chrome autorizada, cookies pueden importar la cookie de sesión necesaria localmente hasta que expire; esto no es una licencia para evadir los controles de un sitio.
Documentación
Necesito | Leer |
Rutas de instalación, CLI de sesión, CLI de un solo disparo, RPC puro, MCP, shims, referencia RPC completa | |
Puntos de control, señales SPA, desafío/cancelación, entrega de cookies | |
Paquetes y distribuciones vinculadas | |
Compilar el binario nativo |
Licencia
Apache-2.0 — ver [LICENCIA](./LICENC# Pase de navegador barato para agentes. Un solo binario nativo. Sin Chrome.
Identidad oficial del registro MCP: mcp-nombre: io.github.protostatis/unbrowser
unbrowser es un runtime web sin estado y no virtual para agentes. Se encuentra entre curl/WebFetch y un navegador real: conserva cookies y estado DOM, devuelve referencias consultables de elementos, maneja enlaces y formularios HTML, detecta señales de desafío y portales de una sola página (SPA), y puede ejecutar scripts QuickJS limitados cuando el HTML estático no es suficiente.
navigatees un pase estático/SSR. Configureexec_scripts: truesolo cuando necesite ejecución limitada de QuickJS. Las SPA pesadas, píxeles, fidelidad, audio y desafíos interactivos contra bots pertenecen a un nivel real de Chrome.
Pruebe la demostración pública en vivo antes de instalar. Acepta solo los conjuntos de fuentes públicas fijas que se muestran en la página; NO envíe datos privados, tareas autenticadas ni navegador donde no se indique cada petición. Un micromundo MCP HTTP compartido está disponible en https://demo.example.org/unbrowser-mcp para pruebas públicas; las sesiones de producción deben ejecutarse mediante una instalación local.
Use unbrowser solo en sitios, y datos a los que tenga permitido acceder.
La detección de desafíos y la importación de cookies no otorgan permiso para eludir los controles de acceso
ni los términos del sitio. Trate las cookies de sesión como credenciales: manténgalas locales,
limítelas a la tarea autorizada y nunca las envíe a la demostración pública.
Elija el nivel correcto
Necesito | curl / web-fetch | unbrowser | Chrome real |
HTML estático / SSR | respuesta cruda | BlockMap estructurado + consultas DOM | navegador completo |
Cookies, enlaces, formularios HTML | hágalo usted mismo | integrado | |
Guiones del lado del script del lado del servidor | ❌ | QuickJS opcional, opt-in | |
V8 | |||
Píxeles, Canvas, WebGL, Workers, extensiones | ❌ | ❌ | |
✅ | |||
Salida orientada al agente | análisis propio | referencias de script, señales de página, extracción estructurada | extracción CDP / DOM estructurado |
| Desafío de acceso interactivo | ❌ | detectar + detener/derivar o derivar a | navegador humano / confirmación humana |
Inicio rápido
Docker — Linux amd64/arm64, ~13 miB de subida
docker pull ghcr.io/protostatis/unbrowser:latest
# One-shot navigation
docker run --rm ghcr.io/protostatis/unbrowser:latest \
navigate https://example.com --json
# Default mode: MCP over stdio
docker run --rm -i ghcr.io/protostatis/unbrowser:latestLa imagen es distroless y se ejecuta como no-root: sin shell, sin gestor de paquetes y sin estado persistente. Fije :v.X.Y.Z o un resumen de imágenes de producción.
Python
pipx install pyunbrowser # recommended on macOS / modern Linux
# or, inside a Python 3.10+ virtual environment:
pip install pyunbrowserfrom unbrowser import Client
with Client() as ub:
ub.navigate("https://news.ycombinator.com")
for link in ub.query(".titleline > a")[:3]:
print(link["text"], link["attrs"]["href"])En macOS, /usr/bin/python3 es 3.9 y no puede instalar la rueda; use pipx o un Homebrew Python. La distribución de PyPI es el paquete py-unbrowser, mientras que la importación y el ejecutable siguen siendo unbrowser.
MCP
{
"mcpServers": {
"unbrowser": {
"command": "unbrowser",
"args": ["--mcp"]
}
}
}Superficie mínima: agregue "--mcp-perfil", "mínimo" solo para exponer navegar/consultar/extraer/ayuda, y deje que el agente explore el resto mediante ayuda(tema). El envoltorio de Python envía como unbrowser-smart script: servidor buscar/abrir/ayuda.
{
"mcpServers": {
"unbrowser": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"ghcr.io/protostatis/unbrowser:latest"
]
}
}
}Vea la referencia de instalación e interfaz para archivos de Cargo, compilaciones de fuentes, sesiones de shell, JSON-RPC crudo y todas las opciones de MCP.
Qué obtiene un agente
navegardevuelve un BlockMap: título, señales clave, densidad de enlaces, contorno ASCII y consultas DOM. Su tamaño depende de la página; estructurado para el paso de nivel, no como promesa de token nivel.elementoestable (e:clave): consulte un elemento una vez, luegoclic,tecla,enviar, sin reanalizar HTTP.Cookies interanuales yOTDH: cookie jar, sesión, URL de POST de cuerpo, enlaces y redirecciones persisten dentro de una sesión.
Señales de página y desafio:
app.js,shell,challenge.proveedorle dicen a un agente si ejecutar scripts, inspeccionar datos incrustados, detenerse o entregar a un navegador autorizado.**
micro_hint(la siguiente microata de acción),siguientes(candidatos clasificados),abstenerse(herramientas sin nada que hacer), y la taxonomía deescalada(reintentar,shell_fino,resultado_..., ...) conreintentar/severidad— no contradiceconsejos.Ayudas estructuradas:
extracción de enlaces,normalización de tablas,texto_principal, y*depurador de selectores` cubren flujos comunes de extracción.
Modo de secuencias y escalada
{"id":1,"method":"navigate","params":{"url":"https://example.com","exec_scripts":true}}Con exec_scripts: true, los scripts en línea y externos se ejecutan en QuickJS bajo un límite de tiempo limitado. Esto puede materializar hidratación de la página y datos de visible fetch; no es V8 ni un motor de renderizado. Las aplicaciones pesadas de React/Vue/Angular pueden aún dejar un caparazón vacío.
Escalar a unchainedsky-cli o Unchained cuando una tarea permitida necesite píxeles reales, Canvas/WebGL, Workers, extensiones de Chrome, perfil autenticado o confirmación humana. Cuando el usuario ya tiene una sesión de Chrome autorizada, cookies puede importar la cookie de sesión necesaria localmente hasta que expire; esto no es licencia para no evadir los controles de un sitio.
Documentación
Necesito | Leer |
Rutas de instalación, CLI de sesión, CLI de un solo uso, RPC sin procesar, MCP, shims, referencia RPC completa | |
Puntos de control, señales SPA, manejo de desafíos, cookies autorizadas | |
Lista de paquetes y distribuciones compatibles | |
Compilar el binario nativo |
Licencia
Apache-2.0 — consulte LICENCIA.
Maintenance
Related MCP Servers
- AlicenseAqualityDmaintenanceA Model Context Protocol server that provides browser automation capabilities using Playwright, enabling LLMs to interact with web pages through structured accessibility snapshots without requiring screenshots or visually-tuned models.224,588,713Apache 2.0
- AlicenseAqualityDmaintenanceEnables cloud browser automation through Browserbase and Stagehand, allowing LLMs to interact with web pages, take screenshots, extract data, and perform automated actions with support for proxies, stealth mode, and parallel sessions.143,231Apache 2.0

Plasmateofficial
AlicenseNot gradedqualityBmaintenanceAgent-native headless browser for AI agents. Converts web pages to a Semantic Object Model (SOM) instead of raw HTML — 17x average token reduction across real-world sites (up to 117x on complex pages). Native MCP server with fetch_page, extract_text, extract_links, and full browser automation. No API key required.37Apache 2.0- AlicenseNot gradedqualityCmaintenanceThe Zero-Setup Local Browser MCP. Enables AI agents to control web browsers via CDP with zero vision tokens and high-speed DOM mapping.17MIT
Related MCP Connectors
Stealth web browser for agents: search, fetch, click and type through persistent sessions over MCP.
Scrape, crawl, map & search the web. Open-source, self-hostable Rust crawler & search for AI agents.
AI-powered browser automation — navigate, click, fill forms, and extract data from any website.
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/protostatis/unbrowser'
If you have feedback or need assistance with the MCP directory API, please join our Discord server