SearXNG
Un servidor del Protocolo de Contexto del Modelo para SearXNG
Documentación
🔍 Servidor MCP de SearXNG
Búsqueda web respetuosa con la privacidad para asistentes de IA: usa una instancia de SearXNG controlada por el operador o de confianza con Claude, Cursor y más.
Un servidor MCP que integra la API de SearXNG, brindando capacidades de búsqueda web a asistentes de IA.
✨ Destacado en el Registro MCP de GitHub.
Inicio rápido
Necesitas una instancia de SearXNG existente con búsqueda JSON habilitada. Este proyecto conecta un cliente MCP a SearXNG; no instala SearXNG. Usa una instancia que operes o en la que confíes. Comienza con la guía de autoalojamiento o de instancia pública si es necesario.
Elige cómo conectarte:
| Tu configuración | Comienza aquí |
|---|---|
| El cliente inicia el servidor localmente | Instala Node.js 22 o posterior, luego usa el ejemplo NPX a continuación o la receta de tu cliente. |
| El cliente inicia un contenedor Docker | Usa la receta Docker/STDIO en Instalación. |
| Tienes un servicio HTTP que se ejecuta de forma independiente | Usa la receta HTTP de tu cliente con la URL completa de /mcp. |
| Necesitas operar un servicio HTTP | Sigue la guía del servidor HTTP. |
Para clientes que usan JSON de mcpServers (como Claude Desktop), agrega:
{
"mcpServers": {
"searxng": {
"command": "npx",
"args": ["-y", "mcp-searxng"],
"env": { "SEARXNG_URL": "https://search.example.com" }
}
}
}
Reemplaza la URL de ejemplo con la URL base de tu SearXNG. Otros clientes usan diferentes
formas de configuración: elige la receta de tu cliente.
Deja MCP_HTTP_PORT sin configurar para STDIO local. Docker también necesita reenvío de
variables de entorno hacia el contenedor.
Recarga el cliente, inspecciona su inventario de herramientas MCP y luego pídele que busque
documentación de SearXNG. Una llamada de herramienta simple es
searxng_web_search con {"query":"SearXNG"}. El descubrimiento por sí solo no
prueba la conectividad con SearXNG. Si la llamada falla, comienza con
solución de problemas.
Características
- Búsqueda con paginación, filtros, respuestas directas y salida de texto/JSON completa o compacta.
- Lectura de HTML, texto estructurado y texto PDF acotado; inspección de encabezados o secciones seleccionadas.
- Descubrimiento de capacidades de la instancia y obtención de sugerencias de consulta.
- Conmutación por error/fan-out de réplicas opcional, respaldo HTML, caché, proxies y solucionadores de navegador.
- STDIO local o HTTP Streamable, con portador estático y protección OAuth opcional.
Consulta la guía de herramientas para capacidades y límites, la referencia de configuración para ajustes, y las mediciones históricas de despliegue para evidencia acotada de planificación de recursos.
¿Por qué mcp-searxng?
Comparación de capacidades registrada el 2026-07-29
A partir del 2026-07-29, la comparación de capacidades a continuación refleja los proyectos oficiales Brave MCP, Exa MCP y Firecrawl MCP. "Paginación" significa un control de página o desplazamiento expuesto. "Autoalojado" significa que el servicio de búsqueda puede ejecutarse bajo tu control. "Gratis / Sin clave API" significa que este servidor MCP no requiere una clave API de un proveedor de búsqueda de pago; aún operas o seleccionas la instancia subyacente de SearXNG.
| Brave MCP | Exa MCP | Firecrawl MCP | mcp-searxng | |
|---|---|---|---|---|
| Búsqueda web | ✓ | ✓ | ✓ | ✓ |
| Leer URL | ✗ | ✓ | ✓ | ✓ |
| Paginación | ✓ | ✗ | ✓ | ✓ |
| Autoalojado | ✗ | ✗ | Parcial | ✓ |
| Gratis / Sin clave API | ✗ | ✗ | ✗ | ✓ |
La privacidad depende del despliegue de SearXNG. Una instancia controlada por el operador puede evitar confiar en un operador de búsqueda de terceros, mientras que una instancia pública recibe la consulta y puede registrarla. SearXNG y esta integración MCP no proporcionan anonimato por sí mismos.
Cómo funciona
MCP client → mcp-searxng → SearXNG → search engines
El cliente inicia su propio proceso STDIO o se conecta a un servicio HTTP.
SEARXNG_URL identifica el servicio SearXNG, no el endpoint MCP. La lectura de URL
obtiene el sitio web seleccionado directamente. Se admite una lista de réplicas separada por
puntos y comas para despliegues intercambiables de SearXNG; consulta
configuración de réplicas.
STDIO es el valor predeterminado. Las sesiones HTTP Streamable heredadas son con estado por
defecto: los clientes deben enviar DELETE /mcp al terminar y luego reinicializar si una
solicitud posterior recibe HTTP 404 para la sesión terminada. Las solicitudes HTTP modernas y
el modo heredado MCP_HTTP_STATELESS=true no tienen sesión; consulta
configuración del transporte HTTP.
Herramientas
| Herramienta | Úsala para |
|---|---|
searxng_web_search | Encontrar fuentes y refinar resultados |
searxng_search_suggestions | Completar o refinar una consulta |
searxng_instance_info | Inspeccionar categorías, motores y valores predeterminados |
web_url_read | Leer una URL conocida como texto/Markdown |
La guía de herramientas contiene ejemplos y la referencia completa de parámetros. El flujo de trabajo de investigación opcional explica cómo inspeccionar fuentes y citar evidencia.
Instalación
Para instalaciones NPX y npm, se requiere Node.js 22 o posterior. La imagen Docker incluye su propio runtime de Node.js.
NPM (instalación global)
npm install -g mcp-searxng
{
"mcpServers": {
"searxng": {
"command": "mcp-searxng",
"env": {
"SEARXNG_URL": "YOUR_SEARXNG_INSTANCE_URL"
}
}
}
}
Docker
Imagen precompilada:
docker pull isokoliuk/mcp-searxng:latest
Las firmas de imagen se pueden verificar con Cosign; consulta SECURITY.md para instrucciones.
{
"mcpServers": {
"searxng": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "SEARXNG_URL",
"isokoliuk/mcp-searxng:latest"
],
"env": {
"SEARXNG_URL": "YOUR_SEARXNG_INSTANCE_URL"
}
}
}
}
Para pasar variables de entorno adicionales, agrega -e VAR_NAME a args y la variable a env.
Para la integración con solucionador de navegador, pasa FLARESOLVERR_URL, BYPARR_URL o ambos
y haz que los servicios configurados sean accesibles desde este contenedor. El modo dual tiene
un orden fijo de FlareSolverr primero y sin conmutación por error inversa automática. El HTML
renderizado seguro y el contenido PDF explícito de Byparr se leen directamente; el contenido ambiguo usa
reproducción protegida, con conmutación por error acotada para fallos de lectura elegibles. Consulta
Controles del lector de URL para el
comportamiento completo y el ejemplo de Docker Compose.
Compilar localmente:
docker build -t mcp-searxng:latest -f Dockerfile .
Usa la misma configuración anterior, reemplazando isokoliuk/mcp-searxng:latest con mcp-searxng:latest.
Docker Compose
docker-compose.yml:
services:
mcp-searxng:
image: isokoliuk/mcp-searxng:latest
stdin_open: true
environment:
- SEARXNG_URL=${SEARXNG_URL:?Set SEARXNG_URL in the environment}
# Add optional variables as needed — see CONFIGURATION.md
El archivo Compose rastreado es intencionalmente solo STDIO y no publica puertos de red; los clientes MCP lo inician con una ruta absoluta al archivo Compose y docker compose run --rm -T, no docker compose up. El indicador -T evita la asignación de pseudo-TTY para que MCP JSON-RPC permanezca en la entrada y salida estándar sin procesar. Compose falla antes del lanzamiento a menos que el cliente MCP proporcione SEARXNG_URL.
Configuración del cliente MCP:
{
"mcpServers": {
"searxng": {
"command": "docker",
"args": [
"compose",
"-f", "/absolute/path/to/docker-compose.yml",
"run", "--rm", "-T", "mcp-searxng"
],
"env": {
"SEARXNG_URL": "YOUR_SEARXNG_INSTANCE_URL"
}
}
}
}
Si anteriormente usaste el archivo rastreado como servicio HTTP en el puerto 8080, coloca la configuración HTTP en un docker-compose.override.yml no rastreado:
services:
mcp-searxng:
ports:
- "127.0.0.1:8080:8080"
environment:
- MCP_HTTP_PORT=8080
- MCP_HTTP_HOST=0.0.0.0
Aquí 0.0.0.0 es la dirección de enlace del lado del contenedor; el puerto del lado del host permanece solo de bucle local. Esta anulación no tiene autenticación y es solo una ruta de migración temporal de un solo host. Antes de agregar contenedores colocados conjuntamente o exponer el servicio más allá de la máquina local, sigue la guía de despliegue reforzada.
Transporte HTTP
Ejecuta HTTP de forma independiente y luego conecta el cliente. Consulta la guía del servidor HTTP para verificaciones locales, autenticación de portador estática, requisitos de OAuth y verificación de despliegue.
Configuración
Para la configuración local predeterminada, SEARXNG_URL es el ajuste requerido. Los modos
opcionales como HTTP reforzado y OAuth tienen requisitos complementarios. Usa la
referencia de configuración para variables de entorno,
valores predeterminados, caché, tiempos de espera, proxies, TLS y límites.
OAuth MCP opcional
Un despliegue HTTP puede usar OAuth con un proveedor de autorización externo. Consulta opciones de autenticación. La autenticación de portador estática y la autenticación básica de SearXNG protegen conexiones diferentes.
Solución de problemas
| Síntoma | Siguiente verificación |
|---|---|
| Servidor ausente o desconectado | Inicio de cliente/proceso |
| Error de autenticación HTTP, sesión o proxy | Conexión HTTP |
| Las herramientas aparecen pero la búsqueda falla | Conexión SearXNG |
| Resultados vacíos, pobres o desactualizados | Filtros, metadatos ascendentes y caché |
| Falla o tiempo de espera de URL/PDF | Lectura de URL |
403 Prohibido de SearXNG
La salida JSON puede estar deshabilitada, o una capa de control de acceso puede haber denegado la solicitud. Sigue las verificaciones directas antes de cambiar la configuración. Una página de navegador funcional no prueba que la API JSON funcione.
¿No puedes habilitar JSON? (respaldo HTML)
SEARXNG_HTML_FALLBACK=true puede reintentar respuestas de búsqueda 403/404/no JSON como HTML.
El análisis es de mejor esfuerzo y los metadatos son limitados; la salida compacta omite los marcadores
de respaldo. Lee la guía de instancia pública
antes de habilitarlo en un servicio que no controlas.
Para un informe de error, recopila una reproducción mínima y los errores relevantes.
Documentación
Configura la búsqueda para una cobertura útil con ajustes ascendentes probados, rutas de motores especializados y controles de salida MCP. La receta de despliegue incluye una pila Compose privada y proveedores de navegador opcionales, con resultados fechados y fallos conocidos.
Encuentra una guía por tarea. Estos enlaces abren la documentación actual de la rama principal. El comportamiento no publicado está etiquetado; consulta la etiqueta Git correspondiente al investigar una versión anterior.
Contribuciones
Consulta CONTRIBUTING.md.
Licencia
MIT — consulta LICENSE para detalles.