Browser MCP

Controla tu Chrome real desde Claude Code. 29 herramientas que incluyen resolución de CAPTCHA, carga de archivos, múltiples sesiones y supervisión humana.

Documentación

Browser MCP de Agent360

La herramienta de navegador que puede detenerse y preguntarte. Un código 2FA, un CAPTCHA, una decisión que solo tú puedes tomar: pregunta en tu propia pantalla y luego continúa en la pestaña donde ya habías iniciado sesión.

Impulsa el Chrome en el que ya has iniciado sesión: sin paso de inicio de sesión que falle, sin clave API que configurar, sin perfil nuevo que sea desconocido para todas tus cuentas. Hasta 20 agentes a la vez, cada uno en su propio grupo de pestañas con código de color. 40 herramientas, MIT, se ejecuta en tu máquina.

→ Lo que puede y no puede superar - cada barrera, marcada como medido, por diseño, aún no o no lo hará. Incluidas las que no hemos corregido.

npm version npm downloads GitHub stars License: MIT MCP Chrome Web Store

Add to Cursor Add to VS Code Glama quality

Browser MCP Demo

▶ Mira la demo de 37 segundos con sonido →

Browser MCP le da a Claude Code (y a cualquier cliente MCP - Cursor, modo agente de VS Code) control sobre tu Chrome real: tus cookies, tus sesiones, tu 2FA. Así funciona en sitios con CAPTCHA, 2FA y anti-bots donde Playwright y Puppeteer son bloqueados - porque eres tú quien navega.

La jugada clave: encuentra una barrera de inicio de sesión, lee el código de verificación desde tu propia pestaña de Gmail y continúa el inicio de sesión. Ninguna API puede hacer eso. Opera plataformas sin API, prueba tu propia aplicación web de extremo a extremo, o trabaja con paneles, LinkedIn y Reddit a ritmo humano - con tu aprobación en los pasos sensibles.

40 herramientas. Auto-hace clic en la casilla de reCAPTCHA v2, con respaldo humano para el resto. Grupos de pestañas multisesión con código de color. MIT, gratuito y se ejecuta en tu máquina - sin cuenta, sin telemetría, nada se nos envía.

Todo el proceso, en cuatro pasos

¿Prefieres no hacerlo a mano? Pega esto a tu asistente de IA - Claude Code, Cursor, Codex, VS Code, Windsurf, Cline - y se configura solo:

Configura Browser MCP para mí. Lee https://browsermcp.dev/llms-install.md y síguelo para el cliente de IA en el que te estés ejecutando. Solo hay un paso que solo yo puedo hacer: dime cuál es y espera por mí. Cuando confirme, llama a browser_list_tabs para demostrar que ambas partes están comunicándose.

Si no puedes abrir URLs: npx @agent360/browser-mcp install

Lee la misma guía que los cuatro pasos siguientes detallan a mano. Un paso sigue siendo tuyo de cualquier manera: Chrome no permitirá que una extensión se instale sola, así que la cargas una vez.

1 - Instala la extensión de Chrome. Un clic desde la Chrome Web Store; Chrome la mantiene actualizada. ¿Sin tienda? Consulta la instalación sin empaquetar más abajo.

2 - Añade el servidor MCP. Pega esto en una terminal. Requerido - la extensión no hace nada por sí sola:

claude mcp add --scope user browser-mcp -- npx @agent360/browser-mcp@latest

3 - Reinicia Claude Code. Eso es lo que inicia el servidor. La extensión no muestra ninguna insignia hasta el paso 4 - el servidor solo toma un puerto la primera vez que tu agente realmente usa el navegador. Una insignia verde con el número de agentes conectados aparece entonces; nada en el icono antes de eso es normal. (El icono en sí nunca cambia de color - es la insignia la que se vuelve verde.)

4 - Di esto para comprobar que funcionó. Pégalo en Claude Code:

Toma una captura de pantalla de mi pestaña actual de Chrome.

Recibes una imagen en lugar de "No tengo acceso al navegador". Eso es todo - ya estás en marcha. → Qué más decir

¿Usas Cursor, VS Code, Codex o Windsurf? Mismo servidor, la configuración propia de ese cliente - el mensaje de arriba lo maneja, o consulta browsermcp.dev/docs. Todo lo siguiente es la versión larga.

La versión larga - instalación, paso a paso

Browser MCP son dos mitades y necesitas ambas: una extensión de Chrome (impulsa el navegador) y un servidor MCP local (con el que tu agente realmente habla). Instalar solo la extensión - por ejemplo, directamente desde la Chrome Web Store - la deja atascada en "No conectado", porque no hay servidor al que pueda llegar. Chrome no puede instalar el servidor, y npm no puede instalar la extensión. Por eso hay dos pasos.

Paso 1: Registra el servidor MCP con Claude Code

claude mcp add --scope user browser-mcp -- npx @agent360/browser-mcp@latest

Ese es el comando MCP propio de Claude Code, así que la entrada queda en la configuración que Claude Code realmente lee. --scope user lo hace disponible en cada proyecto.

¿Quieres los archivos de la extensión en disco para la instalación sin empaquetar del Paso 2? También ejecuta:

npx @agent360/browser-mcp install

Copia la extensión a ~/.browser-mcp/extension/ y imprime esa ruta en la terminal - cópiala. (Úsala solo para los archivos de la extensión; registra el servidor con claude mcp add arriba.)

Paso 2: Carga la extensión en Chrome

Chrome no permitirá que las extensiones se instalen desde npm - la cargas manualmente una vez. Para actualizar después, vuelve a ejecutar el comando de instalación y recárgala (consulta Manteniéndola actualizada). Prefiere la instalación desde la Chrome Web Store si prefieres que la extensión se actualice automáticamente.

  1. Abre Chrome y escribe chrome://extensions en la barra de direcciones
  2. Activa "Modo de desarrollador" (esquina superior derecha)
  3. Haz clic en "Cargar descomprimida" (esquina superior izquierda, junto a "Empaquetar extensión")
  4. Navega a ~/.browser-mcp/extension/ y haz clic en "Seleccionar"
    • En Mac: Pulsa Cmd+Shift+G en el selector de archivos, pega ~/.browser-mcp/extension/, pulsa Enter
    • En Windows: Pega %USERPROFILE%\.browser-mcp\extension\ en la barra de direcciones (Windows aún no está verificado: nuestras pruebas automatizadas no pasan allí)
    • En Linux: Escribe ~/.browser-mcp/extension/ en el campo de ruta
  5. Reinicia Claude Code para que detecte el nuevo servidor MCP

Eso es todo. El icono de Browser MCP aparecerá en tu barra de herramientas, y 40 herramientas de navegador estarán ahora disponibles en Claude Code.

Alternativa: Descarga manual del zip (sin npm)

Si no quieres usar npm, descarga la extensión directamente:

  1. Descarga el zip de la extensión (agent360-browser-mcp-<version>.zip) desde la última versión de GitHub
  2. Descomprime el archivo (en cualquier lugar - por ejemplo, ~/Downloads/browser-mcp-extension/)
  3. Sigue el Paso 2 arriba, pero selecciona la carpeta descomprimida en lugar de ~/.browser-mcp/extension/
  4. Registra el servidor - ejecuta claude mcp add --scope user browser-mcp -- npx @agent360/browser-mcp@latest, o añade esto a ~/.claude.json manualmente:
    {
      "mcpServers": {
        "browser-mcp": {
          "command": "npx",
          "args": ["@agent360/browser-mcp@latest"]
        }
      }
    }
    

Chrome Web Store (sin Modo de desarrollador, extensión con actualización automática)

Esto reemplaza solo el Paso 2 - aún necesitas el Paso 1.

  1. Instala la extensión desde la Chrome Web Store → - sin activar el Modo de desarrollador, y Chrome la mantiene actualizada por ti.
  2. Registra el servidor MCP:
    claude mcp add --scope user browser-mcp -- npx @agent360/browser-mcp@latest
    
    (Para Cursor / VS Code / Codex, usa la configuración MCP propia de ese cliente - consulta browsermcp.dev/docs.)
  3. Reinicia Claude Code.

Omite el paso 2 y el icono de la extensión quedará en "No conectado" para siempre - ese es el síntoma de un servidor MCP faltante, no de una extensión rota.

Ya estás dentro. ¿Y ahora qué?

Nada sucede hasta que lo pides, y la parte más difícil de una herramienta nueva es saber qué pedir. Pega uno de estos a tu agente:

Di estoQué muestra
"Toma una captura de pantalla de mi pestaña actual de Chrome."Empieza aquí. Una imagen de vuelta en lugar de "No tengo acceso al navegador" significa que ambas mitades están comunicándose. Esa es toda la prueba de instalación.
"Abre mi pestaña de Gmail y dime quién me envió mis últimos 3 correos."El que muestra la diferencia - funciona porque es tu navegador, ya con sesión iniciada. Una herramienta sin cabeza choca con una barrera de inicio de sesión aquí.
"Ve a mi panel de análisis, saca los números de este mes y ponlos en una tabla."Cualquier panel donde ya hayas iniciado sesión. Sin clave API, sin exportación, sin integración que construir primero.
"Completa este formulario de registro con mis datos. Detente y pregúntame antes de cualquier cosa sensible."Tú permaneces en el bucle - devuelve el control para contraseñas, datos de pago o cualquier cosa que no deba decidir solo.
"Inicia sesión aquí. Si envía un código por correo, léelo desde mi pestaña de Gmail y continúa."La jugada que ninguna API puede hacer: lee el código de un solo uso de tu propia bandeja de entrada y termina el inicio de sesión.
"Recorre el flujo de registro de mi aplicación como un usuario real y dime dónde se rompe."Pruebas de extremo a extremo de tu propio producto, en el mismo navegador que tienen tus usuarios.

El patrón: cualquier cosa que harías tú mismo en un navegador, en un sitio donde ya hayas iniciado sesión. Es más fuerte donde no hay API - paneles internos, paneles de administración, portales, LinkedIn. ¿Construiste algo bueno? Añádelo a la galería.

¿Por qué esto sobre Playwright MCP / BrowserMCP?

Browser MCPPlaywright MCPBrowserMCP.io
NavegadorTu Chrome real, vía extensiónPerfil persistente por defecto, o tu Chrome vía su extensiónTu Chrome real
MantenimientoActivo - última versión v1.30.1 (2026-09-27)Activo (Microsoft)Último commit abril 2025
Inicios de sesión/cookiesTu sesión existenteEl perfil persistente mantiene inicios de sesión entre ejecucionesYa autenticado
Varios agentes, un perfil con sesión iniciada20 concurrentes, cada uno con su propio grupo de pestañas con código de colorTambién soportado: su extensión da a cada cliente conectado su propio grupo de pestañas de colorSesión única
Humano en el buclebrowser_ask_user - 2FA, CAPTCHA, entrada de credencialesNinguno: 40 herramientas, ninguna que pueda preguntar a la persona (verificado 2026-09-19)Ninguno
Integraciones de proveedores9 integradas (Stripe, HubSpot, Slack...)NingunaNinguna
Omisión de CORSbrowser_fetch desde el fondo de la extensiónN/ALimitada
Monitoreo de redbrowser_wait_for_network vía CDPIntegradoNinguno
Sitios con CSP estrictoAPI de depuración de Chrome en todoFuncionaLimitada
Listas desplegables personalizadasSoporte para Angular Material, React SelectFuncionaLimitada
Instalaciónclaude mcp add + extensión desde la Chrome Web Storenpx @playwright/mcpClonación manual

Las páginas que derrotan a todo lo demás

La razón por la que esto funciona donde lo sin cabeza muere no es que se deslice más allá de algo. Es que no hay nada de lo que deslizarse: es tu Chrome, tu sesión, tu consentimiento. Lo que queda es la parte difícil - páginas que luchan contra cualquier automatización por cómo están construidas.

Cada versión está condicionada a una prueba de flujo contra un Chrome real que debe sobrevivir exactamente a esas: las 40 herramientas se ejercitan, y la condición también verifica que la extensión que Chrome está ejecutando es la que se está lanzando - no otra copia con el mismo número de versión. Los fallos que sí aparecen son honestos: los eventos de ratón no se entregan a una pestaña que no está al frente, y las herramientas lo dicen en lugar de informar éxito. Lo que cubre la prueba

  • CSP estricto - navegar, leer, ejecutar, esperar y hacer clic siguen funcionando (se recurre a la API de depuración de Chrome cuando la inyección de scripts está bloqueada)
  • iframes de origen cruzado - se ven dentro y se alcanzan
  • shadow DOM - los selectores llegan a través de él
  • entradas controladas - fill se mantiene en un campo controlado estilo React
  • verificaciones de honestidad - click rechaza un elemento de 0×0 en lugar de hacer clic en (0,0), y lo dice cuando la página nunca recibió el evento

Limitación conocida: trabajar en una pestaña que no estás mirando

En una pestaña que no estás mirando, el agente puede navegar, leer, capturar pantalla, ejecutar scripts, hacer clic y completar un campo que encuentra por selector CSS. Chrome no entrega eventos de ratón y teclado a una pestaña que no es la visible en su ventana, así que pulsaciones de teclas, pasar el cursor, doble clic, clic derecho, clics por coordenadas, escritura en cuadros combinados y completar un campo encontrado por su texto fallan todos con un error que lo dice. El agente entonces llamará a browser_switch_tab, que trae esa pestaña y su ventana al frente.

Esas herramientas miden si la página realmente recibió el evento en lugar de confiar en el acuse de recibo de Chrome, así que una pestaña en segundo plano produce un fallo honesto en lugar de uno silencioso. (Introducido en 1.29.2 - consulta CHANGELOG.md para saber en qué versión estás.) La entrada de fondo totalmente desatendida no es parte de 1.30, y no es algo que podamos arreglar: Chrome no entrega entrada de mouse o teclado a una pestaña que no sea la visible en su ventana, y ninguna a una ventana sin el foco del sistema operativo (ambos medidos). Parte de ello no se puede resolver en absoluto: CSS :hover es un estado que posee el renderizador y ningún script puede falsificarlo, un evento despachado por script nunca es isTrusted, elementFromPoint se detiene en un iframe de origen cruzado, y la selección de texto que hace un doble clic real es comportamiento del navegador, no un evento.

Ese último grupo importa más. Una herramienta que informa éxito silenciosamente es peor que una que falla, porque construyes sobre la respuesta. Donde todavía no alcanzamos eso, está documentado: ver #19.

Corregido 2026-09-07, y de nuevo 2026-09-19. Esta tabla solía decir que Playwright MCP era headless y te hacía iniciar sesión cada vez. Eso estaba mal. La fila que entonces llamamos "la que sobrevive" - clientes concurrentes en conflicto en un perfil - también estaba mal: esa limitación pertenece a su modo de perfil persistente, y su extensión de Chrome explícitamente da a cada cliente conectado su propio grupo de pestañas de color, que es el mismo mecanismo que describimos en nuestra propia fila. Habíamos corregido una página y no el patrón. La fila que realmente sobrevive es humano-en-el-bucle, y es la que medimos: el README de Playwright MCP lista 40 herramientas y ninguna de ellas puede detenerse y preguntar a la persona por un código.

Sobre el nombre: el browsermcp.io de nombre similar (@browsermcp/mcp) es un proyecto diferente, no afiliado, sin commits desde abril de 2025. Este es Browser MCP de Agent360 (@agent360/browser-mcp) - mantenido activamente. Comparación lado a lado completa →

Variables de entorno

Las tres son opcionales. Ninguna es necesaria para uso normal.

VariableEfecto
BROWSER_MCP_CHECK_NPM=1Hace que browser_provide_feedback también compare este servidor contra la última versión publicada en npm. Desactivado por defecto, para que la llamada sea rápida y funcione sin conexión.
BROWSER_MCP_EXTENSION_ID=<32-char id>Fija el servidor a una extensión de Chrome específica. Úsalo cuando más de una copia de Browser MCP esté cargada y quieras que una sesión dada siempre hable con la misma.
BROWSER_MCP_TOKENRetirado en 1.30.1 e ignorado - el servidor lo dice al iniciar. El emparejamiento se lanzó en 1.30.0 pero no mantuvo a nadie fuera, así que se retiró en lugar de dejarlo como protección falsa. Volverá rediseñado.

40 Herramientas

Navegación y Contenido

HerramientaDescripción
browser_navigateNavegar a URL (reutiliza pestaña, o new_tab=true)
browser_get_page_contentObtener texto o HTML de la página
browser_screenshotCaptura de pantalla vía Chrome Debugger (funciona incluso cuando la pestaña no está enfocada)
browser_execute_scriptEjecutar JavaScript en el contexto de la página
browser_extract_listLeer cada fila de una lista larga/virtualizada desplazando su contenedor hasta que no aparezcan filas nuevas

Interacción

HerramientaDescripción
browser_clickClic vía selector CSS o texto (text=Submit, button:text(Next))
browser_fillRellenar campos de entrada (funciona en sitios con CSP estricto)
browser_press_keyEventos de teclado (Enter, Tab, Escape, modificadores)
browser_scrollDesplazarse a un elemento o por píxeles
browser_waitEsperar a que aparezca un elemento
browser_hoverPasar el cursor para tooltips/desplegables
browser_select_option<select> nativo + desplegables personalizados (Angular Material, React Select)
browser_set_comboboxAutocompletar/combobox: escribir consulta → esperar lista filtrada → hacer clic en opción (soporte de chips multivalor). Úsalo cuando browser_select_option falle en opciones renderizadas perezosamente
browser_set_dateEntradas de fecha robustas: intenta valor nativo → escritura enmascarada → navegación por selector de calendario (MUI/AntD/react-datepicker/Lexical). Úsalo cuando browser_fill falle en campos de fecha
browser_dismiss_overlaysDescartar en masa popups/modales/tooltips/banners vía heurísticas de aria-label/texto/carácter ×. El modo non_critical preserva diálogos con datos de formulario
browser_handle_dialogAceptar/descartar diálogos nativos de alerta/confirmación/prompt
browser_double_clickDoble clic real (dos pares confiables de presionar/soltar)
browser_right_clickClic derecho para abrir menús contextuales a nivel de página
browser_click_xyVía de escape: clic en coordenadas brutas de viewport (píxeles CSS) con eventos de mouse confiables
browser_reattach_debuggerRecuperación: forzar desconexión y reconexión del depurador de Chrome en la pestaña actual

Pestañas y Marcos

HerramientaDescripción
browser_list_tabsListar solo las pestañas de la sesión
browser_switch_tabCambiar a pestaña por ID
browser_close_tabCerrar pestaña (solo propiedad de la sesión)
browser_get_new_tabObtener la pestaña abierta más recientemente (popups de OAuth)
browser_list_framesListar iframes en la página
browser_select_frameEjecutar JS en un iframe específico

Datos y Red

HerramientaDescripción
browser_fetchSolicitud HTTP desde la extensión (omite CORS)
browser_wait_for_networkEsperar a que se complete una llamada API específica
browser_extract_tokenNavegar al panel del proveedor + extraer token de API

Resolución de CAPTCHA

HerramientaDescripción
browser_solve_captchaDetectar y resolver CAPTCHAs. Auto-detecta reCAPTCHA v2/v3, hCaptcha, Turnstile, FunCaptcha. Acciones: detect, click_checkbox (auto-clic, a menudo pasa cuando se inicia sesión en Google), click_grid (guiado por visión IA), ask_human (respaldo)

Humano-en-el-Bucle

HerramientaDescripción
browser_ask_userMostrar diálogo superpuesto para 2FA, CAPTCHA, credenciales, o cualquier entrada del usuario

Datos

HerramientaDescripción
browser_get_cookiesObtener cookies de un sitio que esta sesión tiene abierto
browser_set_cookiesEstablecer cookies para un dominio
browser_get_local_storageLeer localStorage de la página
browser_set_local_storageEscribir valores en localStorage
browser_console_logsCapturar mensajes de console.log/warn/error de la página
browser_upload_fileSubir archivos a <input type="file"> vía Chrome Debugger API (sin diálogo)
browser_drop_fileSubir vía zonas de arrastre: encuentra <input type="file"> oculto en subárbol/padre objetivo (hasta 2 niveles). Úsalo cuando browser_upload_file falle porque la zona no tiene entrada visible

Diagnóstico y retroalimentación

HerramientaDescripción
browser_provide_feedbackAutoverificación + informe en una llamada. Compara este servidor contra el último en npm, la extensión conectada contra este servidor, y detecta más de una extensión Browser MCP conectada a la vez - las tres cosas que explican la mayoría de los momentos "simplemente dejó de funcionar". Devuelve un veredicto (current / outdated / conflict / disconnected), pasos concretos de corrección, y un enlace de issue prellenado para lo que realmente falta. Tu agente lo llama por sí solo cuando una herramienta lo bloquea
browser_aboutInformación del proyecto + enlaces prellenados para enviar un deseo, caso de uso, o error

Soporte Multi-Sesión

Cada conversación de Claude Code obtiene su propio servidor MCP en un puerto único (9876-9895). La extensión de Chrome se conecta a todos los servidores activos simultáneamente.

¿Necesitas más de 20 a la vez? El rango es una configuración, no un límite duro, pero ambas partes tienen que coincidir. Establece BROWSER_MCP_MAX_PORT en la configuración MCP de cada chat, establece bmcpPorte al mismo rango en el almacenamiento de la extensión, luego recarga la extensión: lee el rango solo cuando se inicia. Cambia solo el lado del servidor y el chat 21 vincula un puerto que la extensión nunca mira, así que el navegador se queda en silencio en ese chat sin nada que lo explique. 100 es suficiente; el límite duro es 200. Cada puerto extra le cuesta a tu navegador una conexión rechazada cada dos segundos, la uses o no, así que no lo amplíes por diversión.

Claude Session 1 ←(stdio)→ MCP :9876 ←(WS)→
Claude Session 2 ←(stdio)→ MCP :9877 ←(WS)→  Chrome Extension → Browser
Claude Session 3 ←(stdio)→ MCP :9878 ←(WS)→
  • Aislamiento de sesión - cada sesión obtiene un Grupo de Pestañas de Chrome codificado por color
  • Propiedad de pestañas - las sesiones solo pueden ver y controlar sus propias pestañas
  • Limpieza automática - los procesos salen cuando Claude Code cierra la conversación
  • Los puertos se toman bajo demanda - un servidor vincula su puerto en la primera llamada del navegador, no al inicio, y lo libera 5 minutos después de que su última pestaña se cierre. Un chat que nunca toca el navegador nunca ocupa un espacio.

Ejecutando el agente en otra máquina

La extensión solo se conecta a 127.0.0.1, deliberadamente - no hablará con un WebSocket remoto. Si tu puerta de enlace MCP se ejecuta en una máquina diferente a tu navegador, reenvía el rango de puertos vía SSH.

Receta a continuación contribuida por @bkuri, quien se encontró exactamente con esto y lo resolvió. Linux + systemd; necesita autossh localmente y tu clave pública ya en el servidor:

# ~/.config/systemd/user/browser-mcp-tunnel.service
[Unit]
Description=SSH tunnel for browser-mcp WebSocket (ports 9876-9895)
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
ExecStart=/bin/sh -c '/usr/bin/autossh -M 0 -N \
  -o ServerAliveInterval=30 -o ServerAliveCountMax=3 \
  -o ExitOnForwardFailure=yes -o LogLevel=ERROR \
  $(for p in $(seq 9876 9895); do printf " -L %s:127.0.0.1:%s" "$p" "$p"; done) \
  server-name'
Restart=on-failure
RestartSec=5
Environment="AUTOSSH_GATETIME=0"

[Install]
WantedBy=default.target

Reemplaza server-name, luego systemctl --user enable --now browser-mcp-tunnel.service.

La receta original listaba los puertos 9876-9885 a mano - el rango era de diez en ese entonces. Ahora es veinte, así que el bucle de arriba los genera en lugar de codificar una lista que se vuelve obsoleta la próxima vez que el rango cambie.

Integraciones de Proveedores Integradas

browser_extract_token navega a la página de configuración de API del proveedor y guía la extracción de tokens:

ProveedorFormato de TokenPanel
Stripesk_test_... / sk_live_...stripe.com/apikeys
HubSpotpat-...app.hubspot.com
Slackxoxb-...api.slack.com/apps
ShopifyToken de API de Adminadmin.shopify.com
PipedriveUUIDapp.pipedrive.com
CalendlyJWTcalendly.com
Mailchimp...-us1admin.mailchimp.com
GoogleCliente OAuthconsole.cloud.google.com
LinkedInID/Secreto de Clientelinkedin.com/developers

Arquitectura

extension/
  manifest.json       # Manifest V3
  background.js       # Service worker - Chrome API dispatcher, session tab groups
  offscreen.js        # Persistent WebSocket bridge (multi-port scanning)
  popup.html/js       # Status UI - sessions, tabs, action log

mcp-server/
  index.js            # MCP server (stdio) + WebSocket client
  tools.js            # 40 tool definitions
  bin/cli.js          # Install CLI

Cómo Funciona

  1. Claude Code inicia → genera servidor MCP vía stdio
  2. El servidor MCP vincula el primer puerto disponible (9876-9895)
  3. El documento fuera de pantalla de la extensión escanea puertos cada 2s
  4. Se establece conexión WebSocket
  5. Los comandos fluyen: Claude Code → MCP → Extensión → APIs de Chrome
  6. El proceso se auto-cierra cuando Claude Code se cierra (detección de stdin)

Manteniéndolo actualizado

Browser MCP tiene dos partes, y se actualizan independientemente - cómo se actualiza la extensión depende de cómo la instalaste:

ParteMétodo de instalaciónCómo se actualiza
Servidor MCPcualquieraAutomático. Se ejecuta vía npx @agent360/browser-mcp@latest, así que cada sesión de Claude Code extrae lo más nuevo de npm. Nada que hacer.
ExtensiónChrome Web StoreAutomático, pero no inmediato. Una nueva versión primero tiene que pasar la revisión de Google, que usualmente toma 1-3 días; Chrome luego la recoge en segundo plano dentro de horas. Nada que hacer, pero una corrección publicada hoy no te llega hoy.
ExtensiónDesempaquetada (npx … install o zip manual)Manual. Chrome nunca auto-actualiza una extensión cargada-desempaquetada. Vuelve a ejecutar npx @agent360/browser-mcp install, luego abre chrome://extensions → Browser MCP → ↻ recargar.

¿No estás seguro de cuál tienes? Abre chrome://extensions y encuentra Browser MCP. Si muestra una línea "Cargada desde /ruta/…", está desempaquetada (actualizaciones manuales). Si no hay tal línea, vino de Chrome Web Store (auto-actualizaciones).

¿Quieres actualizaciones de cero mantenimiento? Instala la extensión desde Chrome Web Store, luego ejecuta claude mcp add --scope user browser-mcp -- npx @agent360/browser-mcp@latest para registrar el servidor. Después de eso, ambas partes se mantienen actuales por sí solas - siempre que tu configuración use @agent360/browser-mcp@latest.

Solución de Problemas

"Extensión de Chrome no conectada"

  • Verifica que la extensión esté cargada en chrome://extensions
  • Haz clic en el popup de la extensión → "Reconectar"
  • Espera 2-3 segundos para el escaneo de puertos

La captura de pantalla falla

  • Usa la API de Chrome Debugger para la pestaña propia de tu sesión (funciona incluso cuando la pestaña no está enfocada)
  • Desde 1.29.1 no hay respaldo que capture la pestaña que esté visible: si el depurador no puede producir un frame, la llamada falla. (1.29.0 y anteriores podían recurrir a la pestaña visible.) Ejecuta browser_reattach_debugger e intenta de nuevo

El clic no funciona en SPA

  • Prueba el selector de texto: browser_click("text=Submit")
  • Usa eventos reales de mouse vía Chrome Debugger API automáticamente

Procesos obsoletos

  • Los procesos salen automáticamente cuando Claude Code se cierra (detección de stdin)
  • Tiempo de espera inactivo: 4 horas sin comandos → salida automática
  • Limpieza manual: lsof -i :9876-9895 | grep LISTEN

💡 Ayuda a dar forma a Browser MCP

Browser MCP se construye en abierto y lo moldean las personas que lo usan.

Explora lo que otros quieren / han construido

  • 💡 Lista de deseos → - funciones que la gente está pidiendo
  • 🎯 Casos de uso → - lo que otros han construido (scraping de ICP en LinkedIn, investigación de proveedores, operaciones diarias, …)

Contribuye en 30 segundos

O simplemente pregúntale a Claude - conoce la herramienta browser_about y redactará y enviará en tu nombre cuando digas cosas como "desearía que browser-mcp pudiera …" o "comparte mi caso de uso de browser-mcp".

Si te funciona

Chrome Web Store se clasifica por valoraciones, y nosotros no tenemos ninguna - así que una frase tuya mueve esto más lejos que cualquier cosa que podamos escribir. Deja una reseña si se la ha ganado, y dilo con honestidad si no. Sin registro, sin recompensa, nada bloqueado detrás - simplemente no tenemos ninguna señal en este momento.

La misma idea, para el resto de tu Mac

Esto impulsa tu navegador. Computer MCP impulsa todo lo demás en macOS - menús, ventanas, el Dock, el árbol de accesibilidad de cualquier aplicación - con la misma postura: los campos de contraseña se enmascaran en memoria antes de escribir una captura de pantalla, las escrituras pasan por una puerta de consentimiento, y cada acción se registra en un log de solo añadir. Se ejecuta en segundo plano por defecto: las herramientas que podrían tomar el control de tu pantalla no se ofrecen a menos que las pidas.

npx @agent360/computer-mcp · MIT · macOS.

Privacidad

El punto de esta herramienta es que tu navegación permanezca en tu navegador. No hay cuenta ni servidor nuestro entre tú y la página.

  • Contenido de la página - lo que una herramienta lee de una pestaña va al cliente MCP que configuraste, y a ningún otro lugar. Nunca lo vemos.
  • Cookies, almacenamiento local y tokens no se copian a ningún lugar por defecto, y el servidor no mantiene ningún almacén propio - pero son accesibles. Tres herramientas los leen directamente (browser_get_cookies, browser_get_local_storage, browser_extract_token), dos más los escriben (browser_set_cookies, browser_set_local_storage), y tres más pueden acceder a los mismos datos de otra manera: browser_execute_script se ejecuta en la página y puede leer document.cookie, y browser_get_page_content y browser_extract_list llevarán un token que la propia página coloca en el DOM. Cuando cualquiera de ellas se ejecuta, ese valor va a tu cliente MCP como cualquier otro resultado de herramienta. A ningún otro lugar, y nunca a nosotros.
  • No recopilamos nada. Sin identificadores, sin contadores de uso, sin informes de fallos, sin analíticas en la extensión ni en el sitio.
  • Todo lo que hace el servidor se ejecuta en localhost entre la extensión y el cliente MCP en la misma máquina. Ese puente es local y no autenticado: otro programa que se ejecute como tú en la misma máquina puede conectarse a él. Browser MCP no te protege del software que ya ejecutas.

Política completa: https://browsermcp.dev/privacy

Licencia

MIT - Agent360