WebSearch-MCP
API de búsqueda web autoalojada
Documentación
WebSearch-MCP
Una implementación de servidor de Model Context Protocol (MCP) que proporciona capacidad de búsqueda web a través del transporte stdio. Este servidor se integra con una API de WebSearch Crawler para recuperar resultados de búsqueda.
Tabla de contenidos
- Acerca de
- Instalación
- Configuración
- Configuración e Integración
- Uso
- Solución de problemas
- Desarrollo
- Contribuciones
- Licencia
Acerca de
WebSearch-MCP es un servidor de Model Context Protocol que proporciona capacidades de búsqueda web a asistentes de IA que admiten MCP. Permite que modelos de IA como Claude busquen en la web en tiempo real, recuperando información actualizada sobre cualquier tema.
El servidor se integra con un servicio de API Crawler que gestiona las búsquedas web reales y se comunica con los asistentes de IA mediante el protocolo estandarizado Model Context Protocol.
Instalación
Instalación mediante Smithery
Para instalar WebSearch para Claude Desktop automáticamente mediante Smithery:
npx -y @smithery/cli install @mnhlt/WebSearch-MCP --client claude
Instalación manual
npm install -g websearch-mcp
O úsalo sin instalarlo:
npx websearch-mcp
Configuración
El servidor MCP de WebSearch se puede configurar mediante variables de entorno:
API_URL: La URL de la API de WebSearch Crawler (por defecto:http://localhost:3001)MAX_SEARCH_RESULT: Número máximo de resultados de búsqueda a devolver cuando no se especifica en la solicitud (por defecto:5)
Ejemplos:
# Configure API URL
API_URL=https://crawler.example.com npx websearch-mcp
# Configure maximum search results
MAX_SEARCH_RESULT=10 npx websearch-mcp
# Configure both
API_URL=https://crawler.example.com MAX_SEARCH_RESULT=10 npx websearch-mcp
Configuración e Integración
La configuración de WebSearch-MCP consta de dos partes principales: configurar el servicio crawler que realiza las búsquedas web reales e integrar el servidor MCP con tus aplicaciones cliente de IA.
Configuración del Servicio Crawler
El servidor MCP de WebSearch requiere un servicio crawler para realizar las búsquedas web reales. Puedes configurar fácilmente el servicio crawler usando Docker Compose.
Requisitos previos
Inicio del Servicio Crawler
- Crea un archivo llamado
docker-compose.ymlcon el siguiente contenido:
version: '3.8'
services:
crawler:
image: laituanmanh/websearch-crawler:latest
container_name: websearch-api
restart: unless-stopped
ports:
- "3001:3001"
environment:
- NODE_ENV=production
- PORT=3001
- LOG_LEVEL=info
- FLARESOLVERR_URL=http://flaresolverr:8191/v1
depends_on:
- flaresolverr
volumes:
- crawler_storage:/app/storage
flaresolverr:
image: 21hsmw/flaresolverr:nodriver
container_name: flaresolverr
restart: unless-stopped
environment:
- LOG_LEVEL=info
- TZ=UTC
volumes:
crawler_storage:
workaround para Mac Apple Silicon
version: '3.8'
services:
crawler:
image: laituanmanh/websearch-crawler:latest
container_name: websearch-api
platform: "linux/amd64"
restart: unless-stopped
ports:
- "3001:3001"
environment:
- NODE_ENV=production
- PORT=3001
- LOG_LEVEL=info
- FLARESOLVERR_URL=http://flaresolverr:8191/v1
depends_on:
- flaresolverr
volumes:
- crawler_storage:/app/storage
flaresolverr:
image: 21hsmw/flaresolverr:nodriver
platform: "linux/arm64"
container_name: flaresolverr
restart: unless-stopped
environment:
- LOG_LEVEL=info
- TZ=UTC
volumes:
crawler_storage:
- Inicia los servicios:
docker-compose up -d
- Verifica que los servicios estén en ejecución:
docker-compose ps
- Prueba el endpoint de salud de la API del crawler:
curl http://localhost:3001/health
Respuesta esperada:
{
"status": "ok",
"details": {
"status": "ok",
"flaresolverr": true,
"google": true,
"message": null
}
}
La API del crawler estará disponible en http://localhost:3001.
Prueba de la API del Crawler
Puedes probar la API del crawler directamente con curl:
curl -X POST http://localhost:3001/crawl \
-H "Content-Type: application/json" \
-d '{
"query": "typescript best practices",
"numResults": 2,
"language": "en",
"filters": {
"excludeDomains": ["youtube.com"],
"resultType": "all"
}
}'
Configuración personalizada
Puedes personalizar el servicio crawler modificando las variables de entorno en el archivo docker-compose.yml:
PORT: El puerto en el que escucha la API del crawler (por defecto: 3001)LOG_LEVEL: Nivel de registro (opciones: debug, info, warn, error)FLARESOLVERR_URL: URL del servicio FlareSolverr (para evitar la protección de Cloudflare)
Integración con clientes MCP
Referencia rápida: Configuración de MCP
Aquí tienes una referencia rápida de la configuración de MCP para distintos clientes:
{
"mcpServers": {
"websearch": {
"command": "npx",
"args": [
"websearch-mcp"
],
"environment": {
"API_URL": "http://localhost:3001",
"MAX_SEARCH_RESULT": "5" // reduce to save your tokens, increase for wider information gain
}
}
}
}
Solución alternativa para Windows, debido al Issue
{
"mcpServers": {
"websearch": {
"command": "cmd",
"args": [
"/c",
"npx",
"websearch-mcp"
],
"environment": {
"API_URL": "http://localhost:3001",
"MAX_SEARCH_RESULT": "1"
}
}
}
}
Uso
Este paquete implementa un servidor MCP mediante transporte stdio que expone una herramienta web_search con los siguientes parámetros:
Parámetros
query(obligatorio): La consulta de búsqueda a realizarnumResults(opcional): Número de resultados a devolver (por defecto: 5)language(opcional): Código de idioma para los resultados de búsqueda (p. ej., 'en')region(opcional): Código de región para los resultados de búsqueda (p. ej., 'us')excludeDomains(opcional): Dominios a excluir de los resultadosincludeDomains(opcional): Incluir solo estos dominios en los resultadosexcludeTerms(opcional): Términos a excluir de los resultadosresultType(opcional): Tipo de resultados a devolver ('all', 'news' o 'blogs')
Ejemplo de respuesta de búsqueda
Aquí hay un ejemplo de una respuesta de búsqueda:
{
"query": "machine learning trends",
"results": [
{
"title": "Top Machine Learning Trends in 2025",
"snippet": "The key machine learning trends for 2025 include multimodal AI, generative models, and quantum machine learning applications in enterprise...",
"url": "https://example.com/machine-learning-trends-2025",
"siteName": "AI Research Today",
"byline": "Dr. Jane Smith"
},
{
"title": "The Evolution of Machine Learning: 2020-2025",
"snippet": "Over the past five years, machine learning has evolved from primarily supervised learning approaches to more sophisticated self-supervised and reinforcement learning paradigms...",
"url": "https://example.com/ml-evolution",
"siteName": "Tech Insights",
"byline": "John Doe"
}
]
}
Pruebas locales
Para probar el servidor MCP de WebSearch localmente, puedes usar el cliente de prueba incluido:
npm run test-client
Esto iniciará el servidor MCP y una interfaz de línea de comandos simple que te permite ingresar consultas de búsqueda y ver los resultados.
También puedes configurar la API_URL para el cliente de prueba:
API_URL=https://crawler.example.com npm run test-client
Como librería
Puedes usar este paquete mediante programación:
import { createMCPClient } from '@modelcontextprotocol/sdk';
// Create an MCP client
const client = createMCPClient({
transport: { type: 'subprocess', command: 'npx websearch-mcp' }
});
// Execute a web search
const response = await client.request({
method: 'call_tool',
params: {
name: 'web_search',
arguments: {
query: 'your search query',
numResults: 5,
language: 'en'
}
}
});
console.log(response.result);
Solución de problemas
Problemas del servicio Crawler
- API no accesible: Asegúrate de que el servicio crawler esté en ejecución y sea accesible en la API_URL configurada.
- Resultados de búsqueda no disponibles: Revisa los registros del servicio crawler para ver si hay errores:
docker-compose logs crawler - Problemas con FlareSolverr: Algunos sitios web usan protección de Cloudflare. Si ves errores relacionados con esto, verifica si FlareSolverr está funcionando:
docker-compose logs flaresolverr
Problemas del servidor MCP
- Errores de importación: Asegúrate de tener la última versión del SDK de MCP:
npm install -g @modelcontextprotocol/sdk@latest - Problemas de conexión: Asegúrate de que el transporte stdio esté configurado correctamente para tu cliente.
Desarrollo
Para trabajar en este proyecto:
- Clona el repositorio
- Instala las dependencias:
npm install - Compila el proyecto:
npm run build - Ejecuta en modo de desarrollo:
npm run dev
El servidor espera una API de WebSearch Crawler como se define en el archivo swagger.json incluido. Asegúrate de que la API esté en ejecución en la API_URL configurada.
Estructura del proyecto
.gitignore: Especifica los archivos que Git debe ignorar (node_modules, dist, logs, etc.).npmignore: Especifica los archivos que no deben incluirse al publicar en npmpackage.json: Metadatos del proyecto y dependenciassrc/: Archivos fuente de TypeScriptdist/: Archivos JavaScript compilados (generados al compilar)
Publicación en npm
Para publicar este paquete en npm:
- Asegúrate de tener una cuenta de npm y haber iniciado sesión (
npm login) - Actualiza la versión en package.json (
npm version patch|minor|major) - Ejecuta
npm publish
El archivo .npmignore garantiza que solo se incluyan los archivos necesarios en el paquete publicado:
- El código compilado en
dist/ - Los archivos README.md y LICENSE
- package.json
Contribuciones
¡Las contribuciones son bienvenidas! No dudes en enviar un Pull Request.
Licencia
ISC