Servidor MCP de SearxNG
Un servidor de Protocolo de Contexto de Modelo (MCP) que proporciona capacidades de búsqueda web mediante SearxNG, lo que permite a los asistentes de IA como Claude buscar en la web.
Creado por IA con supervisión humana, ¡porque a veces incluso la inteligencia artificial necesita que alguien le diga cuándo tomar un café! 🤖☕
Descripción general
Este proyecto implementa un servidor MCP que se conecta a SearxNG, un metabuscador que respeta la privacidad. El servidor proporciona una forma sencilla y eficiente para que los Modelos de Lenguaje Grandes (MLM) busquen en la web sin rastrear a los usuarios.
El servidor está diseñado específicamente para LLM e incluye únicamente las funciones esenciales para minimizar el uso de la ventana de contexto. Este enfoque optimizado garantiza una comunicación eficiente entre los LLM y el motor de búsqueda, preservando así un valioso espacio de contexto para información más importante.
Características
Búsqueda web centrada en la privacidad a través de SearxNG
API sencilla para la integración de LLM
Compatible con Claude Desktop y otros clientes compatibles con MCP
Parámetros de búsqueda configurables
Resultados de búsqueda limpios y formateados, optimizados para LLM
Related MCP server: MCP SearxNG Search
Integración con aplicaciones compatibles con MCP
Ejemplos de integración
Usando pipx run (Recomendado, no requiere instalación)
Crea un archivo .clauderc en tu directorio de inicio:
Usando uvx run (No requiere instalación)
Usando Python con pip (requiere instalación)
Uso con Docker (no requiere instalación)
Nota: Al utilizar Docker con servidores MCP:
Las variables de entorno deben pasarse directamente utilizando el indicador
-een la matrizargs, ya que el objetoenvno se pasa correctamente al contenedor Docker.Si necesita acceder a una instancia de SearxNG que se ejecuta en localhost (p. ej., http://localhost:8080 ), debe usar el indicador
--network=hostpara permitir que el contenedor acceda a la red del host. De lo contrario, "localhost" dentro del contenedor se referirá al contenedor en sí, no a su máquina host.Al usar
--network=host, las asignaciones de puertos (-p) no son necesarias y se ignorarán, ya que el contenedor comparte la pila de red del host directamente.
Configuración
Configurar el servidor usando variables de entorno:
Variable de entorno | Descripción | Valor predeterminado |
BUSCAR_MCP_BUSCAR_URL | URL de la instancia de SearxNG a utilizar | |
TIEMPO DE ESPERA DE SEARXNG_MCP | Tiempo de espera de la solicitud HTTP en segundos | 10 |
RECUENTO DE RESULTADOS PREDETERMINADO DE SEARXNG_MCP | Número predeterminado de resultados a devolver | 10 |
SEARXNG_MCP_IDIOMA_PREDETERMINADO | Código de idioma para los resultados (por ejemplo, 'en', 'ru', 'all') | todo |
FORMATO PREDETERMINADO DE SEARXNG_MCP | Formato predeterminado para los resultados ('texto', 'json') | texto |
NIVEL DE REGISTRO DE SEARXNG_MCP | Nivel de registro (por ejemplo, 'DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRÍTICO') | ERROR |
PROTOCOLO DE TRANSPORTE | Protocolo de transporte ('stdio' o 'sse') | estudio |
Nota: Establecer niveles de registro superiores a ERROR (como DEBUG o INFO) puede interrumpir la integración con algunas aplicaciones debido a una salida excesiva en el canal de comunicación.
Puede encontrar una lista de instancias públicas de SearxNG en https://searx.space si no desea alojar la suya propia.
Instalación y uso
Prerrequisitos
Python 3.10 o superior
Una instancia de SearxNG (pública o autoalojada)
Opción 1: Ejecutar sin instalación (recomendado)
La forma más sencilla de utilizar este servidor es con pipx o uvx, lo que le permite ejecutar el paquete sin instalarlo permanentemente:
Puede pasar opciones de configuración directamente:
Opción 2: Instalar desde PyPI o la fuente
Para una instalación más permanente:
Después de la instalación, puede ejecutar el servidor con:
Opción 3: Docker
Si prefieres usar Docker:
Para obtener información completa sobre el uso de Docker, consulte la sección Configuración de Docker a continuación.
Protocolos de transporte
El servidor MCP admite dos protocolos de transporte:
STDIO (predeterminado): para aplicaciones CLI e integración directa
Se utiliza de forma predeterminada en todos los ejemplos.
Adecuado para la integración con Claude Desktop y otros clientes compatibles con MCP
No se ha iniciado ningún servidor HTTP
SSE (Eventos enviados por el servidor): para clientes basados en web e integraciones basadas en HTTP
Inicia un servidor HTTP al que los clientes pueden conectarse
Útil para aplicaciones web y servicios que necesitan actualizaciones en tiempo real.
Requiere mapeo de puertos al usar Docker
Uso del transporte SSE
Para utilizar el protocolo de transporte SSE:
Con ejecución directa :
# Set the transport protocol to SSE TRANSPORT_PROTOCOL=sse python -m searxng_simple_mcp.server # Or with FastMCP fastmcp run src/searxng_simple_mcp/server.py --transport sseCon Docker :
# Run with SSE transport protocol docker run -p 8000:8000 -e TRANSPORT_PROTOCOL=sse -e SEARXNG_MCP_SEARXNG_URL=https://your-instance.example.com ghcr.io/sacode/searxng-simple-mcp:latestCon Docker Compose (desde el
docker-compose.ymlincluido):environment: - SEARXNG_MCP_SEARXNG_URL=https://searx.info - SEARXNG_MCP_TIMEOUT=10 - SEARXNG_MCP_MAX_RESULTS=20 - SEARXNG_MCP_LANGUAGE=all - TRANSPORT_PROTOCOL=sse # Transport protocol: stdio or sse
Al utilizar SSE, el servidor será accesible a través de HTTP en http://localhost:8000 de manera predeterminada.
Para conectarse al servidor SSE desde un cliente MCP, utilice una configuración como:
Nota: No todas las aplicaciones admiten el protocolo de transporte SSE. Asegúrese de que su cliente MCP sea compatible con SSE antes de usar este método de transporte.
Desarrollo
Para desarrollo y pruebas:
Publicación en PyPI
Para los mantenedores que necesitan publicar nuevas versiones del paquete en PyPI:
Estos comandos harán lo siguiente:
Actualice la versión tanto en package.json como en pyproject.toml
Limpia el directorio dist para eliminar compilaciones antiguas
Construir el paquete (crear rueda y distribución de origen)
Comprueba si el paquete tiene errores
Subir el paquete a PyPI
Necesitará tener una cuenta de PyPI y estar autenticado con Twine. Puede configurar la autenticación mediante:
Creando un archivo
.pypircen su directorio de inicioUso de variables de entorno (
TWINE_USERNAMEyTWINE_PASSWORD)Uso de tokens de API de PyPI (recomendado)
Configuración de Docker
Al utilizar Docker con servidores MCP, tenga en cuenta estos puntos:
Integración con clientes MCP : utilice la configuración que se muestra en la sección Uso con Docker para la integración con Claude Desktop u otros clientes compatibles con MCP.
Protocolos de transporte :
De forma predeterminada, el contenedor Docker utiliza el protocolo de transporte stdio
Para el transporte SSE, consulte la sección Uso del transporte SSE
Opciones de configuración :
Utilice un archivo de entorno (.env) para configurar el servidor:
docker run --env-file .env ...Pase variables de entorno individuales con el indicador
-e:docker run -e SEARXNG_MCP_SEARXNG_URL=https://example.com ...Consulte la sección Configuración para conocer las variables de entorno disponibles
Redes :
Utilice
--network=hostcuando necesite acceder a servicios en su máquina hostUtilice
-p 8000:8000al exponer el servidor SSE a su red
Estructura del paquete
Contribuyendo
¡Agradecemos sus contribuciones! No dude en enviar una solicitud de incorporación de cambios.
Licencia
Este proyecto está licenciado bajo la licencia MIT: consulte el archivo de LICENCIA para obtener más detalles.