MyWebSearch
¡No se requiere clave API! Servidor MCP de búsqueda web y extracción de contenido con múltiples motores (Bing, Baidu, DuckDuckGo, GitHub, ArXiv, etc.) con omisión antibots integrada.
Documentación
🔍 MyWebSearch
Búsqueda web con IA multi-motor sin claves y motor de extracción de contenido de alta pureza
Servidor MCP · CLI · Demonio HTTP local · Flujos de trabajo de agentes guiados por habilidades
Un servidor, cuatro formas de usarlo: conecta un cliente de IA mediante MCP, ejecuta una consulta CLI puntual, mantén un demonio local activo o usa los diagnósticos integrados antes de pasar a producción.
Ir a: Inicio rápido · Herramientas MCP · CLI · Configuración · Diagnósticos · Desarrollo
✨ Características
my-websearch es un motor de búsqueda y documentación técnica de pila completa creado específicamente para agentes de codificación con IA (Claude Desktop, Cursor, Cherry Studio, Windsurf, Cline, ZCode, etc.). Listo para usar desde el primer momento, preparado para múltiples clientes de IA convencionales:
- 🌐 Búsqueda federada de 13 motores y enrutamiento inteligente
Agrega motores nacionales directos (Bing, Baidu, CSDN, Juejin, Sogou), motores globales (DuckDuckGo, Brave, Startpage, Exa) y plataformas especializadas para desarrolladores (GitHub, StackOverflow, Hacker News, arXiv). Incluye enrutamiento automático según el idioma (auto), ejecución paralela de múltiples consultas (queries: string[]), deduplicación de URL y fallback en cascada automático deminResults. - ⚡ Protocolo web nativo y solucionadores de prueba de trabajo (ruta rápida sin navegador)
Construido sobrewreq-jscon emulación nativa de handshake TLS/HTTP2 moderno y cookies de sesión persistentes. Incluye solucionadores en JS/Rust puro para el desafío PoW SHA-256 Anubis de Startpage y el desafío HTML5/aritméticod.js(isJsaChallenge) de DuckDuckGo, resolviendo respuestas de desafío estructuradas en milisegundos sin lanzar un navegador de 400 MB. Resolución real de URL para enlaces de redirección de Sogou,Locationde Baidu y enlaces Base64 de Bing. - 📄 Extracción de artículos en Markdown de alta pureza y purificadores dedicados por sitio
Combina Mozilla Readability con eliminación inteligente de ruido de la interfaz. Incluye reglas de purificación dedicadas para cuentas oficiales de WeChat (mp.weixin.qq.com), preguntas y respuestas aceptadas de StackOverflow, y enrutamiento interno transparente para CSDN y Juejin. Elimina<nav>,<aside>,<footer>y migas de pan, preservando fielmente los títulos de los artículos, los bloques de código y las tablas GFM. Admite paginación fluida (startIndex), además de tres modos de ahorro de tokens:focusordenados por relevancia BM25,extractcon selector CSS a JSON sin LLM ycitationsnumerados. - 📚 Consulta unificada de documentación de bibliotecas Context7 (
queryDocs)
Consulta directamente la documentación oficial con nombres de paquetes naturales (p. ej."next.js","vue") o IDs de Context7 sin necesidad de un paso de resolución separado. Incluye clasificación automática de candidatos, autocorrección de 404 por conjetura a ciegas y descubrimiento de alternativas relacionadas. - 🐙 Obtención ampliada de recursos de GitHub / Gitee
fetchGithubContent(anteriormentefetchGithubReadme) admite tanto GitHub como Gitee: READMEs de repositorios, cualquier archivo fuente (/blob/...), árboles de directorios (/tree/...) y discusiones completas de issues / PR. - 🌏 Detección de red sin configuración y compatible con Fake-IP
Detecta automáticamente los proxies del sistema operativo (Registro de Windows / scutil de macOS / variables de entorno de Linux). Enruta automáticamente los motores extranjeros a través del proxy mientras mantiene los motores nacionales en líneas directas rápidas. Incluye en la lista blanca198.18.0.0/15de antemano para compatibilidad con TUN / Fake-IP, aplicando estrictos límites de seguridad SSRF. - 🔌 Modos de despliegue versátiles
Funciona sin problemas en MCP STDIO (Claude Desktop/Cursor), Streamable HTTP / SSE (Cherry Studio/clientes remotos), comandos CLI puntuales y un demonio HTTP local con reutilización del grupo de conexiones y monitoreo/metricsde Prometheus.
🌍 13 motores de búsqueda
| Motor | Conectividad en China continental | Clave de API | Tecnología principal | Ideal para |
|---|---|---|---|---|
bing | 🇨🇳 Directa | Ninguna | Suplantación TLS de Chrome + resolución de URL real Base64 + fallback sigiloso | Búsqueda técnica general, consultas mixtas EN/ZH |
baidu | 🇨🇳 Directa | Ninguna | Resolución concurrente de redirecciones Location + detección de desafíos | Noticias en chino, documentación, foros nacionales |
csdn | 🇨🇳 Directa | Ninguna | Persistencia de cookies del WAF + reintento automático ante respuestas vacías | Registros de errores en chino, tutoriales de depuración |
juejin | 🇨🇳 Directa | Ninguna | Consulta directa a la API oficial para artículos largos limpios | Blogs técnicos modernos de frontend/backend |
sogou | 🇨🇳 Directa | Ninguna | Análisis dual de escritorio y móvil + decodificación de enlaces de redirección + eliminación de anuncios | Enlaces del ecosistema WeChat y consultas de cola larga |
duckduckgo | 🌐 Proxy en CN | Ninguna | Precarga de d.js + solucionador JS isJsaChallenge integrado (HTTP 202 = límite de tasa por IP de salida) | Búsqueda técnica en inglés y discusiones de código abierto |
startpage | 🌐 Proxy en CN | Ninguna | Solucionador PoW SHA-256 Anubis multi-trabajador (dificultad ≤ 6) + sesión de cookies (sin necesidad de navegador) | Resultados de alta privacidad respaldados por Google |
brave | 🌐 Proxy en CN | Ninguna | Huella TLS nativa + eliminación estricta de anuncios patrocinados | Índice independiente en inglés y blogs técnicos |
exa | 🌐 API directa | Clave gratuita opcional | API oficial de búsqueda semántica (se omite si la clave no está configurada) | Similitud semántica, investigación en IA y artículos |
github | 🌐 Proxy en CN | Ninguna | API REST oficial de búsqueda de GitHub + ruta rápida exacta owner/repo (issues y repositorios) | Issues de GitHub, informes de errores, repositorios y búsqueda exacta de repos |
stackoverflow | 🌐 Proxy en CN | Ninguna | API oficial StackExchange 2.3 con decodificación de entidades HTML | Resolución de problemas de desarrolladores, stack traces y respuestas |
hackernews | 🌐 Proxy en CN | Ninguna | API de búsqueda Algolia HN con puntos, comentarios y metadatos del autor | Discusiones técnicas, lanzamientos de startups y noticias de ingeniería |
arxiv | 🌐 Proxy en CN | Ninguna | Análisis de la API oficial Atom XML de arXiv con títulos, autores y resúmenes | Artículos científicos, aprendizaje automático e investigación en IA |
code | 🇨🇳 Directa | Ninguna | Búsqueda en la API grep.app en el código global de GitHub con repositorio, ruta y números de línea exactos | Implementaciones de código fuente, patrones de uso de API |
🛠️ 4 herramientas MCP principales (mínimas y eficientes en tokens)
💡 Presupuesto de tokens y adelgazamiento: Todas las descripciones de herramientas se mantienen estrictamente dentro de los 250 caracteres (total de caracteres de descripción ≤ 1000). La guía detallada de enrutamiento se delega a
McpServer({ instructions }), lo que reduce significativamente el consumo de contexto del LLM.
| Nombre de la herramienta | Propósito | Aspectos destacados |
|---|---|---|
search | Búsqueda federada web y de código (14 motores) | Admite consultas paralelas, filtro de fecha timeRange: day|week|month|year, filtro site: string[], inyección de vista previa fetchTop, motor code (grep.app); engines explícito usa por defecto minResults=0 (sin cascada sin restricciones); devuelve diagnostics en línea en caso de fallo |
fetchWebContent | Extracción de páginas web, Markdown y análisis transparente de PDF | Extractor de contenido todo en uno: caché de Markdown a nivel de disco integrada (Node 22 node:sqlite / fallback JSON particionado, LRU de 200 MB, cache: default|reload); análisis transparente de PDF (hasta 20 MB / 50 páginas, etiquetas [page N], detección de documentos escaneados); paginación y focalización por palabras clave focus (bm25 bloques ordenados por relevancia por defecto, window para la ventana fija heredada); selector para limitar la extracción a un subárbol CSS (devuelve error en lugar de devolver silenciosamente la página completa); extract para JSON con selector CSS sin LLM; citations para referencias numeradas; retainLinks para eliminar URL (-50 % en páginas de índice) |
fetchGithubContent | Lector completo de contenido de GitHub / Gitee | Obtiene README, un archivo fuente (/blob/<ref>/<path>), árboles de directorios (/tree/) y discusiones de Issue / PR; ref puede ser una rama, etiqueta o commit; no es un clon de repositorio; paridad con Gitee mediante API (archivo/árbol/issue/PR, GITEE_TOKEN opcional); devuelve warnings |
queryDocs | Documentación oficial de bibliotecas todo en uno | Resuelve directamente nombres de bibliotecas o IDs de Context7; incluye protección ante baja confianza y cadena de fallback automática (registro npm → PyPI JSON → README de GitHub); devuelve source: context7|npm|pypi|github-readme, confidence y warnings |
💡 Compatibilidad con versiones anteriores: Los heredados
fetchCsdnArticleyfetchJuejinArticlese enrutan automáticamente bajofetchWebContent; el heredadoresolveLibraryIdse fusiona enqueryDocs(que acepta un nombrelibraryo el alias heredadolibraryId). Las herramientas heredadas separadas se eliminaron — el interruptorREGISTER_LEGACY_ARTICLE_TOOLSya no existe, porque mantener tres manejadores no registrados seguía consumiendo presupuesto de descripción de herramientas sin beneficio alguno.
🚀 Inicio rápido
1. Ejecutar con NPX (configuración cero)
No requiere instalación:
npx -y my-websearch@latest
💡 Descubrimiento automático de proxy: El servidor detecta automáticamente la configuración de proxy de tu sistema operativo. Si hay un entorno de proxy local activo, los motores extranjeros usan automáticamente el proxy mientras los motores nacionales permanecen en líneas directas rápidas.
198.18.0.0/15está en la lista blanca desde el primer momento para entornos Fake-IP.
2. Configurar en clientes de IA
🔹 Configuración automatizada (recomendada)
init detecta los clientes MCP instalados, escribe la entrada del servidor en sus archivos de configuración y mantiene una copia de seguridad .bak:
npx -y my-websearch@latest init # auto-detect and write
npx -y my-websearch@latest init --dry-run # preview the diff, write nothing
npx -y my-websearch@latest init --client cursor,code # target specific clients
Compatible desde el primer momento: Claude Desktop, Cursor y VS Code (espacio de trabajo .vscode/mcp.json). Nunca se sobrescribe una entrada existente a menos que pases --force, los archivos de configuración corruptos se dejan intactos y, en Windows, escribe cmd /c npx por ti. Reinicia el cliente y luego verifica con my-websearch doctor.
🔹 Configuración manual
Claude Desktop / Cursor / Windsurf / Cline (modo STDIO)
Agrega a tu archivo de configuración de MCP:
{
"mcpServers": {
"my-websearch": {
"command": "npx",
"args": ["-y", "my-websearch@latest"],
"env": {
"MODE": "stdio"
}
}
}
}
(Para Windows: init lo gestiona automáticamente. Al configurar manualmente, si npx no está en la ruta del sistema, establece command en cmd y args en ["/c", "npx", "-y", "my-websearch@latest"])
🔹 Cherry Studio (modo Streamable HTTP)
Inicia el servidor en tu terminal con npx my-websearch@latest (puerto predeterminado 3211), luego configura:
{
"mcpServers": {
"web-search": {
"name": "MyWebSearch",
"type": "streamableHttp",
"baseUrl": "http://localhost:3211/mcp"
}
}
}
💻 CLI y demonio local
my-websearch se puede usar directamente desde tu terminal como herramienta CLI independiente o demonio persistente. Usa --json en automatización y mantén el demonio en 127.0.0.1 a menos que necesites explícitamente acceso remoto:
# Global install
npm install -g my-websearch
# Detect installed MCP clients and write their config (--dry-run to preview)
my-websearch init
# Start persistent local HTTP daemon (port 3210 by default)
my-websearch serve
# One-shot terminal search (reuses running daemon automatically)
my-websearch search "Model Context Protocol best practices" --limit 5 --min-results 5 --json
# Extract web page as clean Markdown
my-websearch fetch-web "https://blog.vuejs.org/posts/vue-3-5" --max-chars 15000 --json
# View daemon status and Prometheus metrics (/health, /status, /metrics)
my-websearch status --json
# Clear in-memory search cache
my-websearch cache-clear
🩺 Diagnósticos
Usa el comando doctor integrado antes de solucionar problemas de proxy, navegador o motor:
# Local configuration and browser checks
my-websearch doctor
# Real proxy/engine probes (may contact upstream services)
my-websearch doctor --network
# Limit network probes to selected engines
my-websearch doctor --network --engine bing,duckduckgo --json
# Reset and clear cached engine circuit breaker / health state
my-websearch doctor --reset-health
El informe separa la configuración, la accesibilidad TCP del proxy, la accesibilidad HTTP, el análisis de la aplicación, el lanzamiento del navegador y el estado de verificación de desafíos. El modo de red realiza solicitudes reales y no debe usarse como verificación de estado de alta frecuencia.
🌐 Solución de problemas de proxy y limitación de tasa ascendente
Al configurar o diagnosticar la conectividad del proxy, consulta estos casos límite comunes:
-
¿El registro de inicio muestra
🌐 Proxy: disabledaunqueproxy.urlestá configurado?- Verifique el flag
useProxy: En~/.my-websearch/config.json, establecer"useProxy": falsetiene prioridad y anula y desactiva explícitamenteurl(estableciendoPROXY_URL='false'). Cambie"useProxy": trueo simplemente omita el campo (proporcionar unurlválido habilita automáticamente el proxy). - Ningún proxy del sistema activo sin
PROXY_URL: Si no hay un proxy del sistema ni un cliente proxy local en ejecución, los motores extranjeros se bloquearán por defecto. Declare explícitamentePROXY_URL(por ejemplo,http://127.0.0.1:7897o7890).
- Verifique el flag
-
¿El proxy está configurado correctamente, pero los motores extranjeros fallan o se agotan? (Limitación de tasa de IP de origen, NO es un error de configuración)
- DuckDuckGo devuelve HTTP 202 / challenge: DDG limita la tasa de la IP de salida. La primera consulta puede tener éxito y las siguientes devolver
anomalyDetectionBlock; el calentamiento de cookies no puede resolver esta limitación de tasa del origen. Cambie la IP de salida o espere el enfriamiento. - Bing devuelve HTTP 200 pero 0 resultados: la ruta de suplantación de wreq ahora recurre automáticamente a la ruta SERP de axios cuando analiza una página vacía. Si ambas rutas permanecen vacías, es probable que la consulta/IP esté limitada por tasa.
- Brave devuelve HTTP 429 Too Many Requests: Brave Search limita la tasa de rangos de IP de centros de datos ruidosos.
- Startpage se agota o la dificultad de PoW de Anubis se dispara: la dificultad 6 ahora se resuelve en línea con hasta 4 hilos de trabajo (~3–12 s); >6 se omite. Los errores de socket de superación de desafío / 5xx transitorios se reintentan automáticamente.
- 💡 Resolución: Estos síntomas indican que la IP de salida pública ha activado la limitación de tasa del origen, no un error en
my-websearch. Cambie a una IP de servidor proxy diferente, recurra a motores nacionales/directos, o proporcione una clave API oficial comoBRAVE_API_KEYpara un SLA garantizado.
- DuckDuckGo devuelve HTTP 202 / challenge: DDG limita la tasa de la IP de salida. La primera consulta puede tener éxito y las siguientes devolver
⚙️ Configuración y variables de entorno
Configuración global (~/.my-websearch/config.json)
Para compartir ajustes entre todos los clientes MCP sin configuración duplicada:
{
"apiKeys": {
"context7": "ctx7sk-...",
"exa": "..."
},
"proxy": {
"url": "http://127.0.0.1:7897",
"useProxy": true,
"engines": ["duckduckgo", "exa", "brave", "startpage"]
}
}
⚠️ Nota sobre
useProxy: Cuando"url"está configurado, el proxy se habilita automáticamente. Establecer"useProxy": falseanulará y desactivará explícitamenteurl. Si desea habilitar el proxy, establezca"useProxy": trueu omita el campo por completo.
📋 Referencia exhaustiva de variables de entorno
Se pueden establecer mediante el archivo de configuración global (~/.my-websearch/config.json), el .env local, o variables de entorno del sistema:
1. 🔍 Orquestación de búsqueda y enrutamiento
| Variable | Predeterminado | Valores permitidos / Descripción |
|---|---|---|
DEFAULT_SEARCH_ENGINE | auto | Motor predeterminado: auto (enrutamiento inteligente de consultas: chino baidu,sogou, inglés/extranjero bing,duckduckgo). Admite los 13 motores: auto, bing, baidu, sogou, duckduckgo, brave, csdn, juejin, startpage, exa, github, stackoverflow, hackernews, arxiv (los motores verticales para desarrolladores pueden configurarse como predeterminados, aunque se recomienda auto o motores web generales para el valor predeterminado global) |
ALLOWED_SEARCH_ENGINES | all | Lista blanca separada por comas de motores de búsqueda permitidos (por ejemplo, bing,baidu,duckduckgo) |
BING_BASE_URL | https://cn.bing.com/search | URL base para consultas de Bing. Los usuarios en el extranjero o los nodos de proxy inverso pueden establecerla en https://www.bing.com/search (se admite el alias heredado OPEN_WEBSEARCH_BING_HOST) |
DEFAULT_MIN_RESULTS | 5 | Umbral en cascada: activa motores de respaldo cuando los resultados utilizables son menos que este valor |
DEFAULT_SEARCH_LIMIT | 10 | Límite de resultados predeterminado cuando no se especifica explícitamente en las llamadas a herramientas (máx. 50) |
SEARCH_DEADLINE_MS | 30000 | Plazo límite global para la ejecución de búsquedas multi-motor (milisegundos) |
ENGINE_CIRCUIT_BASE_COOLDOWN_MS | 30000 | Primer enfriamiento del cortacircuitos para un motor (429 / 202 / bot_challenge). Las fallas repetidas se retrasan exponencialmente (30 s → 60 s → 120 s…). |
ENGINE_CIRCUIT_MAX_COOLDOWN_MS | 300000 | Límite superior para el retroceso exponencial del cortacircuitos (predeterminado 5 minutos). |
SEARCH_AUTHORITY_DOMAINS | vacío | Lista blanca adicional de dominios de autoridad para la reclasificación de resultados (separada por comas, añadida a la lista integrada) |
SEARCH_MODE | auto | Modo de búsqueda y política del navegador. Admite modo único, multi-motor por modo, y combinaciones compuestas multi-modo: • Modo global: auto (respaldo predeterminado), request/none (HTTP puro), playwright (forzar navegador)• Modo único, múltiples motores: playwright:bing,startpage, auto:bing,startpage, bing,startpage• Múltiples modos compuestos: playwright:bing;auto:startpage (bing fuerza navegador, startpage usa respaldo automático), auto;request:startpage (global automático pero startpage usa HTTP puro) |
AUTO_ROUTE_EN_ENGINES | bing,duckduckgo | Motores separados por comas para el enrutamiento automático predeterminado en inglés |
AUTO_ROUTE_ZH_ENGINES | baidu,sogou | Motores separados por comas para el enrutamiento automático predeterminado en chino |
2. 🌐 Proxy y seguridad de red
| Variable | Predeterminado | Valores permitidos / Descripción |
|---|---|---|
PROXY_URL | vacío (desactivado) | Configuración consolidada del proxy de origen (fusiona los anteriores USE_PROXY y PROXY_ENGINES). No es necesario en modo TUN.• Proxy predeterminado: pasar PROXY_URL="" o PROXY_URL=true vacío activa el http://127.0.0.1:7897 predeterminado (los puertos de proxy local comunes incluyen 7897, 7890, 10809; los motores extranjeros usan proxy, los motores nacionales permanecen directos)• Dirección personalizada: PROXY_URL=http://127.0.0.1:10809• Motores personalizados: PROXY_URL="http://127.0.0.1:7897;duckduckgo,brave" o todos los motores PROXY_URL=";all" |
FAKE_IP_CIDRS | 198.18.0.0/15 | CIDR en lista blanca para el modo Fake-IP / TUN para evitar el bloqueo de falsos positivos de SSRF |
IMPERSONATE_BROWSER | chrome_149 | Perfil de huella TLS/H2 del navegador wreq-js (por ejemplo, chrome_149, safari_18) |
IMPERSONATE_OS | windows | Plataforma del sistema operativo para la suplantación de huella (windows, macos, linux) |
BING_IMPERSONATE | true | Activa la suplantación TLS de Chrome para el modo HTTP de Bing (dispara automáticamente el cortacircuitos tras resultados vacíos consecutivos) |
ANUBIS_MAX_POW_DIFFICULTY | 6 | Umbral máximo de dificultad para el solucionador de PoW de Anubis de Startpage; se omite/recurre cuando la dificultad lo supera |
DIRECT_FIRST_PROBE_TIMEOUT_MS | 3500 | Tiempo de espera en ms para las sondas de conexión directa primero antes del respaldo al proxy |
FETCH_WEB_INSECURE_TLS | false | Desactiva la verificación de certificados TLS solo para fetchWebContent (para certificados de sitios heredados defectuosos) |
GITHUB_README_CDN_FIRST | false | Cuando true, fuerza omitir la sonda directa de raw.githubusercontent.com y consulta primero el CDN de jsDelivr (aceleración de red nacional) |
3. 🔐 Credenciales y claves API
| Variable | Predeterminado | Valores permitidos / Descripción |
|---|---|---|
CONTEXT7_API_KEY | vacío | Clave API de Context7 (muy recomendada para usuarios de proxy/TUN para evitar cuotas de IP compartida) |
EXA_API_KEY | vacío | Clave API gratuita de Exa (solo requerida si se usa el motor de búsqueda semántica exa) |
BRAVE_API_KEY | vacío | Clave API de Brave Search (opcional; usa la API oficial de alta fiabilidad cuando se establece) |
GITHUB_TOKEN | vacío | Token de acceso personal de GitHub (opcional; eleva el límite de tasa a 5.000 solicitudes/h) |
GITEE_TOKEN | vacío | Token de acceso personal de Gitee (opcional; eleva los límites de tasa de la API de Gitee y habilita repositorios privados) |
STACKOVERFLOW_API_KEY | vacío | Clave de Stack Apps (opcional; eleva la cuota a 10.000 solicitudes/día) |
4. 🖥️ Modos de servidor, concurrencia y recolector de sesiones
| Variable | Predeterminado | Valores permitidos / Descripción |
|---|---|---|
MODE | both | Modo de transporte MCP: stdio (solo stdin/stdout), http (solo HTTP/SSE), both (concurrente) |
PORT | 3211 | Puerto de escucha HTTP/SSE de MCP (el daemon persistente local usa 3210 por defecto) |
MAX_CONCURRENT_SEARCHES | 20 | Máximo de búsquedas concurrentes en modo daemon (0 para ilimitado) |
MCP_MAX_SESSIONS | 100 | Máximo de sesiones HTTP MCP retenidas antes de devolver HTTP 429 Too Many Requests |
MCP_SESSION_TTL_MS | 1800000 | Duración de expiración de sesiones inactivas antes de la recolección (predeterminado 30 min) |
MCP_SESSION_REAPER_MS | 300000 | Intervalo de escaneo del recolector de sesiones (predeterminado 5 min) |
LOG_LEVEL | info | Nivel de registro: quiet (completamente silencioso), debug, info, warn, error |
SECURITY_AUDIT | false | Habilita el bloqueo de SSRF y el registro de auditoría de seguridad del encabezado host |
OPEN_WEBSEARCH_ALLOWED_HOSTS | loopback | Lista blanca de encabezado host para el servidor HTTP (protección contra DNS Rebinding, separada por comas) |
5. 🧭 Navegador Playwright y controles de sigilo
[!NOTE]
BING_PLAYWRIGHT_FALLBACKySTARTPAGE_PLAYWRIGHT_FALLBACKse han consolidado enSEARCH_MODE(por ejemplo,SEARCH_MODE=bingoSEARCH_MODE=request). La compatibilidad con versiones anteriores se conserva automáticamente.
| Variable | Predeterminado | Valores permitidos / Descripción |
|---|---|---|
PLAYWRIGHT_CDP_ENDPOINT | vacío | URL del endpoint CDP remoto de Chrome/Edge (por ejemplo, http://127.0.0.1:9222 o ws://...) |
PLAYWRIGHT_EXECUTABLE_PATH | auto | Ruta absoluta al ejecutable del navegador (detecta automáticamente Edge/Chrome del sistema por defecto) |
PLAYWRIGHT_HEADLESS | true | Ejecutar sin interfaz (en Windows, utiliza automáticamente una ventana de escritorio oculta aislada) |
PLAYWRIGHT_NAVIGATION_TIMEOUT_MS | 20000 | Tiempo de espera máximo de navegación de página para Playwright (milisegundos) |
6. 🛠️ Directorio de la aplicación y personalización de herramientas
| Variable | Predeterminado | Valores permitidos / Descripción |
|---|---|---|
MYWEBSEARCH_DATA_DIR | ~/.my-websearch | Directorio raíz para la configuración y los archivos de cookies persistentes |
OPEN_WEBSEARCH_RESPONSE_CAP_BYTES | 60000 | Límite máximo de caracteres devueltos a los LLM para evitar la explosión del contexto del prompt |
MCP_TOOL_SEARCH_NAME | search | Nombre de registro personalizado para la herramienta de búsqueda en MCP |
MCP_TOOL_FETCH_WEB_NAME | fetchWebContent | Nombre de registro personalizado para la herramienta de extracción de contenido |
MCP_TOOL_FETCH_GITHUB_NAME | fetchGithubContent | Nombre de registro personalizado para la herramienta de contenido de GitHub/Gitee (establezca fetchGithubReadme para compatibilidad con versiones anteriores) |
💡 Actualizaciones sin configuración (variables redundantes eliminadas):
- Interruptores CORS (
ENABLE_CORS/CORS_ORIGIN): CORS está desactivado por defecto; actívelo explícitamente y restrinja los orígenes cuando los clientes de navegador necesiten acceso entre orígenes.- Selección del paquete Playwright (
PLAYWRIGHT_PACKAGE/PLAYWRIGHT_MODULE_PATH): Ahora 100 % automatizada mediante el descubrimiento inteligente de clientes y binarios del sistema.- Endpoint del navegador remoto (
PLAYWRIGHT_WS_ENDPOINT): Unificado en el estándarPLAYWRIGHT_CDP_ENDPOINT.- Interruptor de emojis (
OPEN_WEBSEARCH_NO_EMOJI): La detección automática de la página de códigos de la consola recurre sin problemas a etiquetas ASCII en terminales heredados.- Flag de depuración fragmentado (
OPEN_WEBSEARCH_DEBUG): Unificado en el estándarLOG_LEVEL=debug.- TTL de persistencia de cookies (
MYWEBSEARCH_COOKIE_TTL_DAYS): Solidificado a 30 días con renovación deslizante automatizada.
🤝 Contribuciones y pruebas
¡Las solicitudes de extracción y los issues son bienvenidos! Para ejecutar la suite de pruebas localmente:
npm install
npm run build
npm test # Run the Vitest suite (55 files, 459 tests at the current baseline)
npm run test:live # Run bounded-concurrency live integration tests
npm run eval:live # Run 23-case live STDIO JSON-RPC evaluation suite
Agradecimientos
Autor: wtznicy Este proyecto evolucionó a partir de Open-WebSearch (creado originalmente por Aas-ee) — un agradecimiento especial al autor original. Gracias también a:
- wreq-js por la suplantación nativa de la huella TLS/HTTP2 de Chrome
- Context7 por impulsar la obtención de documentación oficial
- Mozilla Readability y Turndown por la extracción de contenido y el formato Markdown GFM