CapMonster Cloud Patchright MCP Captcha Solver
Automatización de navegador sigilosa mediante Patchright con resolución de CAPTCHA integrada de CapMonster Cloud. Evita Cloudflare Turnstile, reCAPTCHA v2/v3 y DataDome para flujos de scraping de extremo a extremo.
Documentación
capmonster-mcp-patchright
🛡️ Servidor MCP de navegador indetectable — 66 herramientas, impulsado por Patchright, cero huella CDP.
Pasa Cloudflare / Akamai / Kasada / Datadome.
Fork de mcp-patchright que añade una opción
world: "main" por llamada a browser_evaluate / browser_run_code_unsafe, de modo que los
globales de ventana definidos por la página sean visibles y llamables. Por defecto usa el mundo aislado de stealth de Patchright (coincidiendo con el upstream); opta por main solo cuando el propio script de la página necesite ver o ser llamado por tu código evaluado. Todo lo demás coincide con mcp-patchright upstream.
¿Por qué Patchright y no Playwright?
| Playwright | Patchright | |
|---|---|---|
Runtime.enable | ✅ envía (detectable) | ❌ eliminado |
Console.enable | ✅ envía | ❌ eliminado |
bandera --enable-automation | ✅ presente | ❌ eliminada |
navigator.webdriver | true | false / undefined |
| Evasión anti-bot | ❌ | ✅ |
Consulta la comparación completa para más detalles.
Inicio rápido
npm i -g capmonster-mcp-patchright
capmonster-mcp-patchright --port 9321 --host 127.0.0.1
Con Claude / GPT / agentes
{
"mcpServers": {
"patchright": {
"command": "npx",
"args": ["capmonster-mcp-patchright", "--port", "9321", "--host", "127.0.0.1"]
}
}
}
Características
- 66 herramientas MCP — superficie completa de automatización del navegador
world: "main"opcional —browser_evaluate/browser_run_code_unsafepueden ejecutarse en el mundo real de la página para ver/llamar a globales definidos por la página (el valor predeterminado permanece aislado/stealth)browser_find— busca en la instantánea aria actual texto/regex, más económico que unbrowser_snapshotcompletobrowser_save_blob— guarda un Blob/URL de datos producido por el código de la página en disco- 3 transportes — stdio, SSE, Streamable HTTP (
/mcp) - Perfiles persistentes — perfil real de Chrome, reutilizable entre sesiones
- Multipágina — gestión de pestañas (nueva, listar, cambiar, cerrar)
- Sesiones HTTP con ámbito por propietario — aísla pestañas por llamador con la consulta/cabecera
owner - Adjuntar CDP — controla un Chrome ya en ejecución
- Seguimiento e interceptación de red — lista/detalle de solicitudes, alternar sin conexión, bloquear/simular rutas
- Importar/exportar sesión —
browser_storage_save/browser_storage_load(cookies + localStorage) - Almacenamiento granular — CRUD por clave de cookie / localStorage / sessionStorage (
browser_cookie_*,browser_localstorage_*,browser_sessionstorage_*) - Solicitudes API autenticadas —
browser_api_requestreutiliza las cookies de sesión (scraping híbrido) - Extracción de texto/HTML —
browser_get_visible_text/_html(ligero en tokens) - Consciente de iframes — pasa
frameSelectora cualquier herramienta de elementos (click/fill/type/hover/press/wait_for/select/drag) para actuar dentro de un iframe - Exportación PDF —
browser_save_pdfvía CDP (funciona en modo con ventana/stealth) - Grabación de video —
browser_startconrecordVideo,browser_video_save; .webm vaciado enbrowser_close - Resaltado de elementos — superposiciones
browser_highlight/browser_hide_highlightpara capturas de pantalla y grabaciones - Perfiles stealth — proxy / geolocalización / locale / zona horaria / colorScheme
- Captura de consola — flujo de mensajes de consola en tiempo real
- Verificación de huella — diagnósticos
browser_fingerprint_check - Passkeys virtuales — crea, importa, lista y elimina credenciales WebAuthn con claves privadas redactadas por defecto
Herramientas
Comparación completa en HTML en /docs/tool-comparison.html.
browser_startbrowser_statusbrowser_navigatebrowser_new_pagebrowser_pagesbrowser_switch_pagebrowser_close_pagebrowser_snapshotbrowser_findbrowser_take_screenshotbrowser_clickbrowser_fillbrowser_typebrowser_hoverbrowser_press_keybrowser_wait_forbrowser_evaluatebrowser_fingerprint_checkbrowser_navigate_backbrowser_select_optionbrowser_handle_dialogbrowser_file_uploadbrowser_network_requestsbrowser_network_requestbrowser_console_messagesbrowser_resizebrowser_dragbrowser_fill_formbrowser_run_code_unsafebrowser_add_init_scriptbrowser_network_state_setbrowser_api_requestbrowser_get_visible_textbrowser_get_visible_htmlbrowser_iframe_clickbrowser_iframe_fillbrowser_route_blockbrowser_route_mockbrowser_route_clearbrowser_storage_savebrowser_storage_loadbrowser_cookie_listbrowser_cookie_getbrowser_cookie_setbrowser_cookie_deletebrowser_cookie_clearbrowser_localstorage_listbrowser_localstorage_getbrowser_localstorage_setbrowser_localstorage_deletebrowser_localstorage_clearbrowser_sessionstorage_listbrowser_sessionstorage_getbrowser_sessionstorage_setbrowser_sessionstorage_deletebrowser_sessionstorage_clearbrowser_passkey_installbrowser_passkey_createbrowser_passkey_listbrowser_passkey_deletebrowser_video_savebrowser_highlightbrowser_hide_highlightbrowser_save_blobbrowser_save_pdfbrowser_close
Desarrollo
Sesiones HTTP con ámbito por propietario
El modo HTTP requiere un propietario estable en
la URL de MCP (?owner=<id>) o con la cabecera X-Browser-Owner. El listado de páginas,
el cambio, la navegación y el cierre están restringidos a las pestañas de ese propietario. Elimina
/owners?owner=<id> para cerrar todas las pestañas propiedad de un llamador sin detener el
navegador ni limpiar el perfil.
npm install
npm run build
node dist/index.js
Lanzamiento
Instala la compilación de Chromium correspondiente una vez, luego prepara un lanzamiento desde las versiones exactas
de dependencias en package-lock.json, ejecuta el conjunto completo de verificación,
e inspecciona el paquete sin publicarlo:
npx patchright install chromium
npm run release:check
npm publish
Por defecto, browser_start lanza Chromium vía patchright como Chrome real con ventana y un perfil persistente en:
~/.maestro/stealth-playwright-mcp/profiles/default
Puedes sobrescribirlo con el argumento de herramienta userDataDir o STEALTH_PLAYWRIGHT_USER_DATA_DIR.
Para adjuntarte a un Chrome ya en ejecución en lugar de lanzar uno, inicia Chrome con depuración remota y pasa cdpEndpoint a browser_start:
google-chrome --remote-debugging-port=9222 --user-data-dir=$HOME/.maestro/stealth-playwright-mcp/profiles/cdp
{ "cdpEndpoint": "http://127.0.0.1:9222" }
browser_snapshot devuelve la instantánea aria de IA de Playwright. Usa los valores [ref=eN] de esa instantánea con browser_click, browser_fill, browser_type, browser_hover, browser_press y browser_wait_for pasando { "ref": "eN" }. Los selectores CSS siguen siendo compatibles vía { "selector": "..." }.
Ejemplo de configuración de MCP:
{
"mcpServers": {
"patchright": {
"command": "node",
"args": ["/path/to/capmonster-mcp-patchright/dist/index.js"]
}
}
}
Dirección
Enviado:
- ✅ directorios de datos de usuario persistentes
- ✅ adjuntar CDP a Chrome real
- ✅ perfiles de proxy / zona horaria / locale / geolocalización
- ✅ instantáneas de accesibilidad para control de página amigable con LLM
- ✅ diagnósticos de huella
- ✅ interceptación de red (bloquear / simular)
- ✅ importar/exportar sesión (storageState)
- ✅ exportación PDF
- ✅ solicitudes API autenticadas (reutilizar cookies del navegador)
- ✅ extracción ligera de texto/HTML
- ✅ acciones en iframes
- ✅
world: "main"opcional parabrowser_evaluate/browser_run_code_unsafe - ✅ búsqueda en instantánea aria (
browser_find) - ✅ guardar salida de Blob/URL de datos en disco (
browser_save_blob)
Siguiente:
- backend rebrowser-playwright
- sesiones codegen
- clics basados en coordenadas (visión)
- trazado / grabación de video