ProBrowser
ProBrowser
Servidor MCP de automatización de navegador real para agentes de IA — Anti-detección
29 herramientas · conexión CDP a tu Opera/Chrome real · entrada humanizada · híbrido DOM + Visión
Características • Pipeline • Inicio rápido • Uso • Configuración • Arquitectura • Estructura del proyecto • Anti-detección
🌐 Idioma: Inglés | Tiếng Việt
[!WARNING] Desarrollado y probado solo en Arch Linux kernel
Linux 7.1.5-arch1-2· Escritorio: KDE Plasma Otras distribuciones y escritorios no están probados: YMMV.
Un servidor MCP que permite a los agentes de IA (Kilo, Claude Code, …) controlar el navegador real del usuario a través del Model Context Protocol. Sin modo headless ni perfiles desechables: el agente se conecta por CDP al Opera/Chrome en ejecución con todas las sesiones, cookies y accesos intactos, y lo maneja con tiempos similares a los humanos y una estrategia DOM-primero / visión-de-respaldo.
✨ Características
Característica | Descripción |
🔌 Control de navegador real |
|
🧰 29 herramientas MCP | Navegación, pestañas, clic/escribir/hover/teclado, desplazamiento, arrastrar y soltar, extracción de DOM/texto, evaluación de JS, 3 variantes de screenshot, kit de CAPTCHA, detección del sistema. |
🕒 Entrada humana | Retardos entre teclas con distribución gaussiana (45–75 PPM), pausas naturales entre mousedown↔mouseup, scroll con ease-out cúbico — implementado como una capa de anticipación, sin inyección de JS. |
🔍 Híbrido DOM + Visión | Extracción estructurada del DOM ( |
🎯 Validación de posición | Antes de cualquier clic por coordenadas: screenshot anotado con cruces X/Y rojas exactamente en el origen O=(x,y) + sonda del elemento, advertencias ( |
🧩 Kit CAPTCHA | Detección automática de reCAPTCHA/hCaptcha/Turnstile/Cloudflare tras la navegación; resolución de rejillas con visión del agente ( |
🗂️ Gestión de pestañas | Lista / Cambia / abre / cierra pestañas — flujos multi-pestaña en un solo navegador real. |
🚨 Errores accionables | Cada error devuelve un objeto estructurado |
📚 Autodocumentado |
|
✅ Probado | 87 pruebas unitarias (páginas falsas, sin navegador real) + suite de integración real ( |
Related MCP server: selenium-mcp
🏭 Pipeline
┌──────────┐ ┌────────────┐ ┌─────────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ CONNECT │ → │ ORIENT │ → │ SEE │ → │ PLAN │ → │ ACT │ → │ VERIFY │
│ check_ │ │ navigate + │ │ screenshot │ │ selector │ │ click / │ │ re-read │
│ browser │ │ wait idle │ │ get_dom │ │ or coords│ │ type │ │ state │
└──────────┘ └────────────┘ └─────────────┘ └──────────┘ └──────────┘ └──────────┘
│ │
▼ not running ▼ DOM miss
┌──────────────┐ ┌──────────────────────────┐
│ open_browser │ │ validate_position(x, y) │
│ (real profile│ │ → annotated O=(x,y) shot │
│ + CDP flag) │ │ → click_position(x, y) │
└──────────────┘ └──────────────────────────┘Flujo de ejecución de herramientas (ejemplo browse_click):
agent call → pre-click Gaussian delay (~80ms)
→ PhantomWright Actionability Engine (visible? enabled? stable? unobscured?)
→ CDP Input.dispatchMouseEvent (trusted gesture, NOT element.click())
→ post-click pause (~150ms)
→ result JSON (+ optional verification screenshot)La detección automática de CAPTCHA/overlays de anuncios se ejecuta después de cada browse_navigate / browse_wait.
🚀 Inicio Rápido
Requisitos
Arch Linux (plataforma de desarrollo/pruebas) — kernel
7.1.5-arch1-2, KDE PlasmaPython 3.11+ — comprueba con
python --versionUn navegador basado en Chromium — Opera (recomendado), Chrome, Chromium o Brave
Un cliente MCP — Kilo CLI, Claude Code o cualquier cosa que hable MCP stdio
Instalación
# 1. Clone
git clone https://github.com/YOUR_USER/probrowser.git
cd probrowser
# 2. Setup (venv + deps + verify)
./setup.sh
# ...or manually:
python -m venv .venv
.venv/bin/pip install -r requirements.txtRegístralo con tu cliente MCP
kilo.json (raíz del proyecto):
{
"mcp": {
"probrowser": {
"type": "local",
"command": ["/absolute/path/to/probrowser/.venv/bin/python", "-m", "src"],
"enabled": true,
"timeout": 120000
}
}
}Para usuarios de Claude Code: el mismo servidor mediante .mcp.json. Reinicia el cliente para que se carguen las 29 herramientas browse_*.
Primera ejecución
# Option A — start Opera yourself with CDP enabled:
opera --remote-debugging-port=9222
# Option B — let the agent do it (real profile, cookies intact):
browse_check_browser() # → not connected?
browse_open_browser(browser="opera")Después solo habla con tu agente: "abre YouTube y reproduce One of These Nights" — él se conectará, navegará, hará clic y verificará la reproducción por sí solo.
💻 Uso
Grupos de herramientas
Grupo | Herramientas |
Navegación y pestañas |
|
Interacción |
|
Extracción |
|
Capturas de pantalla |
|
CAPTCHA |
|
Sistema |
|
Meta |
|
Referencia completa de parámetros: docs/tools-reference.md o browse_help(topic="tools-reference") en tiempo de ejecución.
Ejemplo de flujo
→ browse_check_browser()
← { connected: false } # nothing on :9222 yet
→ browse_open_browser(browser="opera")
← { launched: true, profile: "~/.config/opera", cdp_url: "...:9222" }
→ browse_navigate(url="https://youtube.com/...")
← { success: true, title: "..." } # auto CAPTCHA scan ran here
→ browse_get_dom(search="One of These Nights")
← { count: 10, elements: [{type: "link", selector: "a[aria-label=...]"}] }
→ browse_click(selector="a[aria-label=...]")
← { success: true }
→ browse_eval(expression="() => {const v=document.querySelector('video'); return {paused: v.paused, time: v.currentTime}}")
← { paused: false, time: 3.1 } # verified: audio is playing 🎵Servidor independiente
PROBROWSER_CDP_URL=http://localhost:9222 .venv/bin/python -m src⚙️ Configuración
Toda la configuración en tiempo de ejecución se gestiona mediante variables de entorno:
Variable | Por defecto | Descripción |
|
| Endpoint de CDP al que conectarse al inicio |
|
| Límite duro por llamada de herramienta (protección del bucle de eventos compartido) |
|
| Interruptor principal del subsistema de CAPTCHA |
|
| Escaneo de CAPTCHA/anuncios después de navegar |
| — | Clave de API de 2Captcha (auto-resolución de retos de texto; la rejilla se resuelve con visión del agente) |
|
| Tiempo máximo de espera para la resolución asistida por API |
La configuración del lado del cliente MCP (timeout, enabled) vive en kilo.json — deliberadamente fuera de git (ver .gitignore).
🏛️ Arquitectura
┌──────────────────────────────────────────────────────────┐
│ AI Agent (Kilo / Claude Code) │
│ plan → browse_* tool call → evaluate → repeat │
└───────────────────────┬──────────────────────────────────┘
│ MCP Protocol (stdio, JSON-RPC)
▼
┌──────────────────────────────────────────────────────────┐
│ ProBrowser MCP Server (Python) │
│ tool registry (29) → action coordinator → humanize.py │
│ (Gaussian delays · WPM typing · scroll easing) │
│ analyzer/: dom_parser · hybrid_strategy · captcha │
└───────────────────────┬──────────────────────────────────┘
│ CDP — Input.dispatch* events only
▼
┌──────────────────────────────────────────────────────────┐
│ User's Real Browser (Opera/Chrome, port 9222) │
│ sessions · cookies · logins preserved │
└──────────────────────────────────────────────────────────┘Decisiones clave de diseño
Decisión | Justificación |
Todo en Python | PhantomWright + |
PhantomWright en lugar de entrada de SO | Sin hacks de ydotool/xdotool/KWin; los eventos a nivel de CDP funcionan en Wayland y nunca bloquean la entrada del usuario. |
Entrada CDP en lugar de inyección JS |
|
| La sesión del usuario ES el producto: sin re-login, sin cookies perdidos. |
La visión la decide el agente | El servidor extrae geometría/capturas; el propio modelo de visión del agente decide las coordenadas. |
📁 Estructura del proyecto
probrowser/
├── main entry
│ ├── src/__main__.py # python -m src → stdio MCP loop
│ └── src/server.py # registry (29 tools) + dispatch + timeouts + captcha hooks
├── core
│ ├── src/browser/connection.py # connect_over_cdp, session persistence, page recovery
│ ├── src/browser/tab_manager.py # tab discovery / switching
│ ├── src/humanize.py # Gaussian timing middleware
│ ├── src/errors.py # classify_exception → structured error codes
│ ├── src/config.py # env-driven configuration
│ └── src/logging.py # per-action latency/success logging
├── tools (src/tools/, 29 modules)
│ ├── navigate · wait · list_tabs · switch_tab · open_tab · close_tab
│ ├── click · validate_position · click_position · type · hover · keyboard
│ ├── scroll · drag_drop
│ ├── get_dom · find · get_text · eval_js
│ ├── screenshot · screenshot_viewport · screenshot_save
│ ├── check_captcha · captcha_grid · solve_captcha
│ └── detect_browsers · check_browser · open_browser · help · list_tools
├── analyzer (src/analyzer/)
│ ├── dom_parser.py # DOM → simplified JSON (interactive + visible only)
│ ├── hybrid_strategy.py # DOM-first, vision fallback
│ └── captcha.py # CAPTCHA/ad-overlay detection
├── captcha (src/captcha/)
│ ├── grid.py # grid geometry + cropped screenshot extraction
│ └── solver.py # tile clicking + verify flow
├── docs/ # 11 topics served via browse_help()
├── tests/ # 87 unit tests + integration suite
├── AGENTS.md / CLAUDE.md # operating guide injected into agents
└── dev-phase-mcp-server.md # dev-phase principles🛡️ Anti-detección
Pila de evasión del navegador
Capa | Implementación | Detalle |
Motor | PhantomWright (controlador Playwright parcheado) |
|
Parches | Parches de sigilo antes de ejecutar JS de página |
|
Entrada | Gestos confiables CDP | Ni |
Sesión | Perfil real del usuario + IP real + extensiones | No cambia nada de la huella |
Timing | Middleware humanizado en cada acción | Retrasos gaussianos, PPM natural, desplazamiento suave |
Lo que sigue funcionando
Tus inicios de sesión, cookies, estado de las extensiones, reputación de IP, huellas de canvas/WebGL/audio: todo se mantiene original o intacto porque el navegador es suyo.
Limitaciones
Servicios antibot agresivos (Cloudflare Turnstile, análisis de comportamiento de hCaptcha) pueden seguir detectando algo por la reputación de la IP. Ruta alternativa: capturas de pantalla + validate_position → click_position, junto con el kit de herramientas de CAPTCHA.
🧪 Pruebas
# Unit suite — fake pages, no browser required (87 tests)
.venv/bin/python -m pytest tests/ -q
# Integration suite — needs Opera running with CDP
.venv/bin/python -m pytest tests/test_integration.py -m integrationTính năng
Característica | Descripción |
🌐 Control del navegador real | Se conecta a Opera/Chrome en ejecución mediante CDP — conserva sesión, cookies e inicio de sesión |
🧰 29 herramientas MCP | Navegación, pestañas, clic/escribir/hover/teclado, desplazamiento, arrastrar y soltar, extracción de DOM/texto, JS, capturas, CAPTCHA |
🕒 Simulación humana | Retardo gaussiano entre teclas (45–75 PPM), ritmo de clic natural, desplazamiento con ease-out |
🔍 DOM híbrido + Visión | Prioriza el DOM estructurado; solo recurre a capturas de pantalla + coordenadas si falta |
🎯 Verificación de coordenadas | La imagen anota los ejes X/Y que se cruzan exactamente en O=(x,y) antes de hacer clic en las coordenadas |
🧩 Procesador de CAPTCHA | Detección automática tras la navegación; resuelve rejillas con la visión del agente; auto-resolución mediante 2Captcha |
🚨 Errores accionables | Cada error devuelve |
✅ Probado | 87 pruebas unitarias + suite de integración en navegador real |
Instalación rápida
git clone https://github.com/YOUR_USER/probrowser.git && cd probrowser
./setup.sh # venv + dependencies + verify
opera --remote-debugging-port=9222 # hoặc để agent tự mởDeclara el servidor en kilo.json (consulta Quick Start), reinicia el cliente, y listo.
Hecho con 🎵 en Arch Linux · MIT License
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
- AlicenseBqualityFmaintenanceEnables AI agents to directly control your real Chrome browser with full context including login sessions, cookies, and open tabs. It provides tools for page scanning, JavaScript execution, CDP control, screenshots, and physical mouse/keyboard input for authentic browser automation.20239MIT
- AlicenseBqualityAmaintenanceEnables browser automation through the Model Context Protocol, allowing AI agents to control Chrome, Firefox, or Edge for tasks like navigation, clicking, typing, and screenshots.3948MIT

Browseagent MCPofficial
AlicenseAqualityDmaintenanceEnables AI agents to control web browsers through the Model Context Protocol, supporting navigation, clicking, typing, and screenshots.12101MIT- AlicenseNot gradedqualityCmaintenanceEnables AI agents to create and control real, isolated browser profiles with engine-level fingerprinting and per-profile proxies, providing antidetect browsing capabilities through a Model Context Protocol interface.MIT
Related MCP Connectors
Reliable web access for AI agents: smart HTTP, rotating proxies, and full-browser rendering.
Live browser debugging for AI assistants — DOM, console, network via MCP.
A paid remote MCP for AI agent browser approval MCP, built to return verdicts, receipts, usage logs,
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/momadhuynh04/probrowser'
If you have feedback or need assistance with the MCP directory API, please join our Discord server