dsh-google-chrome-search
dsh-google-chrome-search
Un plugin de DeepSeek Harness (DSH) que permite a un agente de IA ejecutar una búsqueda web real en Google manejando el Chrome local a través de CDP (Chrome DevTools Protocol), y renderizar cualquier página para extraer su contenido. No se necesita clave de API de búsqueda — funciona con el Chrome ya instalado en la máquina.
Google sirve con frecuencia una página de verificación humana (CAPTCHA / "tráfico inusual") para el tráfico automatizado y de centros de datos. Cuando eso ocurre, este plugin abre una ventana visible de Chrome apuntando a la página de verificación, espera a que el humano la resuelva, y luego extrae los resultados de la sesión ya confiable. Ese es el paso de "preguntar al humano" — por diseño, el agente nunca intenta resolver un CAPTCHA por sí mismo.

Qué obtienes
Pieza | Ruta | Propósito |
Motor central |
| Búsqueda en Google con Chrome/CDP + verificación CAPTCHA + extracción de resultados |
Motor de página |
| Renderizar cualquier URL + extraer contenido legible (Mozilla Readability) + |
Servidor MCP |
| Expone |
CLI |
|
|
Skill |
| Enseña al agente cómo usarlo + el flujo de verificación humana |
Related MCP server: browser-search-mcp
Requisitos
Node.js ≥ 18 (probado en Node 22)
Un binario local de Chrome/Chromium (p. ej.
google-chrome,chromium). Se detecta automáticamente desde rutas comunes; se puede sobrescribir conCHROME_PATHo--chrome.Para el paso de verificación visible, se necesita una sesión de escritorio con pantalla (para que la ventana de Chrome pueda mostrarse al humano). Headless/SSH aún pueden detectar el CAPTCHA e informarlo (con una captura de pantalla).
Instalación
git clone https://github.com/davidcastilloalvarado/dsh-google-chrome-search.git
cd dsh-google-chrome-search
npm installDependencias: puppeteer-core (maneja tu Chrome — no descarga un navegador),
@modelcontextprotocol/sdk (para el servidor MCP), @mozilla/readability (extracción de contenido),
y zod (validación de esquemas).
Opcionalmente, enlaza el CLI globalmente para que esté en PATH:
npm link # gives you: dsh-google-search "<query>"Usar el CLI
# Search:
node bin/google-search.mjs "nodejs streams" --max 8
# or, after npm install / npm link:
npm run search -- "nodejs streams" --json
# Search, then render + extract the top 3 result pages:
node bin/google-search.mjs "nodejs streams" --max 8 --fetch-top 3 --fetch-max-chars 8000
# Fetch one URL directly (render + extract readable content):
node bin/google-search.mjs fetch "https://nodejs.org/api/stream.html" --max-chars 8000Códigos de salida: 0 = éxito (resultados / contenido obtenido), 2 = se requiere verificación
(CAPTCHA), 3 = sin resultados / obtención bloqueada o fallida, 1 = error, 64 = uso.
Obtener una página (renderizar + extraer)
El plugin también puede renderizar cualquier URL y extraer su contenido principal legible:
Ejecuta la página en el mismo perfil de Chrome dedicado (para que los sitios que ven una huella consistente y confiable se comporten mejor).
Espera a que la página cargue por completo (incluido el contenido SPA tardío).
Extrae el artículo con Mozilla Readability, ejecutado dentro de la página viva. Si la página no tiene un artículo distintivo, recurre al texto completo de la página.
Salida limitada (por defecto 8,000 caracteres por página) para que sea amigable con el contexto del agente.
Detecta muros anti-bot e informa
blockeden lugar de devolver basura. Cuando un sitio sirve un desafío de verificación humana (p. ej. el muro de "deslizar para continuar" de DataDome), abre una ventana visible de Chrome con la página, espera hastaverifyTimeoutMsa que el humano la pase, y luego extrae el contenido real — la misma filosofía de mano al humano que el flujo de CAPTCHA de Google. La cookie de sesión confiable persiste en el perfil, por lo que las páginas posteriores de ese sitio suelen pasar headless. Usa--no-verify/autoVerify: falsepara simplemente informarblockeden su lugar.
dsh-google-search fetch "https://example.com/article" --max-chars 10000
dsh-google-search fetch "https://example.com/article" --html --screenshotDos formas de combinar búsqueda y lectura:
Qué | Cómo |
Buscar y luego leer las N páginas principales en una llamada |
|
Buscar y luego leer un resultado específico |
|
Las páginas se renderizan secuencialmente (un navegador, una página a la vez) — espera ~1–3 s por página.
Usarlo como herramienta nativa de DSH (MCP)
Registra el servidor MCP con el @deepseek-ai/dsh-mcp-client de DSH en tu configuración de perfil
(ejemplo — ajusta las rutas de command y args a tu entorno):
- insert:
- id: mcp-google
name: '@deepseek-ai/dsh-mcp-client'
config:
serverName: google
transport: stdio
command: /path/to/node
args: [ /path/to/dsh-google-chrome-search/src/server.mjs ]
env:
CHROME_PATH: /usr/bin/google-chrome # optional — auto-detected if unset
toolCallTimeoutMs: 300000Después de reiniciar DSH, el agente obtiene tres herramientas nativas:
Herramienta | Qué hace |
| Búsqueda web en Google → enlaces + fragmentos |
| Renderizar una URL → contenido legible extraído (título, autor, texto, HTML/captura opcional) |
| Buscar → renderizar las N páginas principales → contenido extraído por página en una llamada |
Notas:
Las llamadas están serializadas (Chrome permite un proceso por perfil), por lo que las llamadas de herramientas concurrentes se ponen en cola en lugar de ejecutarse en paralelo.
search_and_fetches más lento que la búsqueda simple: manténtoolCallTimeoutMsen300000(5 min) como se muestra arriba.El flujo de verificación humana se aplica tanto a la búsqueda de Google (CAPTCHA) como a las páginas de resultados que bloquean el navegador (deslizador anti-bot): se abre una ventana visible de Chrome para el humano, y la sesión persiste en el perfil después.
Usarlo como skill de DSH
skill/SKILL.md enseña al agente cómo ejecutar la búsqueda y cómo manejar la entrega del CAPTCHA
al humano. Para instalarlo, cópialo en tu directorio de skills de DSH, p. ej.:
mkdir -p ~/.dsh/skills/google-chrome-search
cp skill/SKILL.md ~/.dsh/skills/google-chrome-search/Antes de compartirlo/usarlo en otra máquina, edita el marcador <INSTALL_DIR> dentro de
SKILL.md para que apunte a donde clonaste este repositorio (o pon el CLI de npm link en PATH
y funcionará directamente).
Configuración (env / opciones)
Opción / Env | Por defecto | Significado |
| auto-detección | Ejecutable de Chrome |
|
| Perfil de Chrome persistente y dedicado (mantiene las cookies "verificadas") |
| 8 | Resultados orgánicos a devolver (máx. 20) |
| 150000 | Cuánto tiempo esperar a que el humano resuelva un CAPTCHA |
|
| Si es |
|
| Región / idioma |
| 8000 | Máximo de caracteres extraídos por página obtenida (fetch / search_and_fetch) |
| 3 | Cuántas páginas de resultados renderizar en |
|
| Opciones de fetch: también devolver HTML extraído / una captura de pantalla |
| 20000 | Tiempo de espera de navegación por página obtenida |
El flujo de verificación humana, paso a paso
Chrome ejecuta la búsqueda en modo headless (un perfil dedicado y aislado — nunca tu navegador real).
Si hay resultados presentes → devuélvelos (
status: ok).Si Google sirve un CAPTCHA:
Toma una captura de pantalla.
Abre una ventana visible de Chrome (mismo perfil) en la página de verificación.
Espera hasta
verifyTimeoutMsa que el humano lo resuelva, sondeando la página.Si se resuelve → extrae y devuelve los resultados (marcados
verifiedViaHuman: true). Si se agota el tiempo → devuelvestatus: verification_requiredcon la última captura.
La sesión verificada persiste en el perfil, por lo que la siguiente búsqueda suele tener éxito en headless.
Pruebas
npm testInicia el servidor MCP, comprueba que las herramientas search, fetch y search_and_fetch estén
listadas y, si hay un binario de Chrome disponible en la máquina, realiza una búsqueda en vivo con
autoVerify: false. En entornos sin navegador (p. ej. CI), la llamada en vivo se omite
con elegancia.
Solución de problemas
Síntoma | Solución |
| Instala Chrome/Chromium o establece |
Se ejecuta como root en un contenedor, error de sandbox | El valor predeterminado es |
CAPTCHA en cada búsqueda | Mantén el perfil dedicado ( |
No aparece ninguna ventana visible en SSH | Usa una máquina con pantalla, o establece |
| Cierra todas las instancias de Chrome que usen ese perfil y vuelve a intentarlo (el perfil es separado del personal). No ejecutes dos llamadas CLI a la vez — un proceso por perfil. |
| Eso es el paso de verificación humana funcionando como se espera: pasa el desafío en la ventana, luego reintenta y mantiene la sesión. |
| El sitio bloquea los navegadores headless y |
| La página es muy dependiente de JS y no había terminado de renderizar; reintenta (se estabiliza en hasta ~7 s), o aumenta |
Revertir / limpiar
Configuración: elimina la entrada
mcp-googlede tu configuración de perfil de DSH.Skill:
rm -rf ~/.dsh/skills/google-chrome-searchPerfil/capturas:
rm -rf ~/.dsh-chrome-google
Licencia
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 gradedqualityDmaintenanceEnables AI assistants to perform real-time Google searches with anti-bot protection. Bypasses search engine restrictions using advanced browser automation to extract search results locally without requiring paid API services.7MIT
- AlicenseAqualityAmaintenanceEnables web search via a real browser for any LLM, bypassing anti-bot measures without API keys.5MIT
- AlicenseBqualityBmaintenanceBridges AI agents (Codex, Claude Code) with a real Chrome session via CDP, enabling Google Search and Google AI interactions through the browser.2277MIT
- FlicenseNot gradedqualityCmaintenanceEnables AI agents to search the web and extract content using multiple search providers, with caching, retry logic, and options for JavaScript-heavy page rendering.
Related MCP Connectors
Search Google straight from your AI agent. Web results, images, videos, news, products, scholarly ar
The best web search for your AI Agent
Live web search for AI agents. $0.001/call, x402 on Base, no API key.
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/DavidCastilloAlvarado/dsh-google-chrome-search'
If you have feedback or need assistance with the MCP directory API, please join our Discord server