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.

GitHub Stars npm version npm downloads Docker Pulls License: MIT OpenSSF Scorecard OpenSSF Best Practices mcp-searxng MCP server GitHub MCP Registry

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ónComienza aquí
El cliente inicia el servidor localmenteInstala Node.js 22 o posterior, luego usa el ejemplo NPX a continuación o la receta de tu cliente.
El cliente inicia un contenedor DockerUsa la receta Docker/STDIO en Instalación.
Tienes un servicio HTTP que se ejecuta de forma independienteUsa la receta HTTP de tu cliente con la URL completa de /mcp.
Necesitas operar un servicio HTTPSigue 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 MCPExa MCPFirecrawl MCPmcp-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_searchEncontrar fuentes y refinar resultados
searxng_search_suggestionsCompletar o refinar una consulta
searxng_instance_infoInspeccionar categorías, motores y valores predeterminados
web_url_readLeer 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íntomaSiguiente verificación
Servidor ausente o desconectadoInicio de cliente/proceso
Error de autenticación HTTP, sesión o proxyConexión HTTP
Las herramientas aparecen pero la búsqueda fallaConexión SearXNG
Resultados vacíos, pobres o desactualizadosFiltros, metadatos ascendentes y caché
Falla o tiempo de espera de URL/PDFLectura 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.