SearXNG HTTP MCP

Servidor MCP SearXNG autónomo en Docker con más de 200 motores de búsqueda, transporte dual (HTTP + stdio), autenticación por clave API e interfaz web integrada.

Documentación

Un servidor MCP autónomo que envuelve SearXNG, un metabuscador gratuito y respetuoso con la privacidad que agrega resultados de más de 200 motores de búsqueda.


🚀 Inicio rápido

Modo servidor — implementa una vez, conéctate desde cualquier cliente:

docker run -d --name searxng-mcp --restart unless-stopped \
  -p YOUR_PORT:8888 --memory=512m --cpus=1 \
  ghcr.io/whw23/searxng-http-mcp:latest

Luego conecta tu cliente a http://YOUR_HOST:YOUR_PORT/mcp/. Para habilitar la autenticación por clave API, consulta Autenticación.

Modo local — no se necesita servidor, se ejecuta directamente en tu cliente:

docker run --rm -i --memory=512m --cpus=1 ghcr.io/whw23/searxng-http-mcp:latest --stdio

Agrégalo como servidor MCP stdio en tu cliente — consulta Configuración del cliente para más detalles.

Modo uvx — si ya tienes SearXNG en ejecución (guía de instalación):

uvx searxng-http-mcp

Establece SEARXNG_URL para apuntar a tu instancia de SearXNG (por defecto: http://127.0.0.1:8080).

✨ Características

Búsqueda

  • 🔍 Más de 200 motores de búsqueda — Google, Bing, DuckDuckGo, Brave y más a través de SearXNG
  • 📂 Más de 30 categorías — noticias, imágenes, videos, ciencia, TI y más
  • 📄 Expansión multipágina — hasta 5 páginas por llamada
  • 💡 Sugerencias de autocompletado — descubre términos de búsqueda relevantes
  • 🗂 Descubrimiento de motores — consulta los motores disponibles agrupados por categoría
  • 🎯 Eficiente en tokens — resultados recortados a lo esencial

Infraestructura

  • 📦 Autónomo — SearXNG integrado en la imagen Docker
  • 🔄 Triple transporte — servidor HTTP, Docker stdio y uvx independiente
  • 🔐 Autenticación — x-api-key + Autenticación básica HTTP
  • 🌐 Proxy inverso — Interfaz web de SearXNG en el mismo puerto
  • ⚡ Descripciones dinámicas de herramientas — listas de categorías en vivo inyectadas al inicio
  • 📐 Rich JSON Schema — restricciones enum, límites de rango y descripciones en cada parámetro

🏛 Arquitectura

graph LR
  Client(["client:YOUR_PORT"]) --> Expose(":8888")

  subgraph Container["🐳 Docker Container"]
    direction LR
    Expose --> Auth{Auth}
    Auth -->|/mcp| MCP[FastMCP Server]
    Auth -->|/*| Proxy[Reverse Proxy]
    MCP --> SearXNG[SearXNG :8080]
    Proxy --> SearXNG
  end

  style Expose fill:none,stroke:#2496ed,stroke-dasharray:5 5,color:#2496ed

  style Client fill:#4a90d9,color:#fff,stroke:#3a7bc8
  style Container fill:#f0f4f8,stroke:#2496ed,stroke-width:2px,color:#2496ed
  style Auth fill:#f5a623,color:#fff,stroke:#d4900e
  style MCP fill:#50c878,color:#fff,stroke:#3da85e
  style Proxy fill:#9b59b6,color:#fff,stroke:#8344a5
  style SearXNG fill:#e74c3c,color:#fff,stroke:#c0392b

📊 Comparación con alternativas

¿Por qué estos cinco?

Hay más de 20 servidores MCP de SearXNG y muchos más MCP de búsqueda de propósito general. La mayoría de los envoltorios de SearXNG solo exponen una herramienta de búsqueda básica, dejando sin usar las categorías, el autocompletado y los metadatos de motores de SearXNG. Elegimos cinco alternativas que cada una representa una categoría distinta:

  • 88plug/searxng-mcp — la superficie de herramientas más rica entre los MCP de SearXNG (7 herramientas: fetch renderizado, modo investigación, consultas paralelas)
  • ihor/mcp-searxng — la mayor cantidad de estrellas en GitHub entre los MCP de SearXNG
  • open-webSearch — la mejor alternativa gratuita de múltiples motores fuera del ecosistema SearXNG (Bing, Baidu, DuckDuckGo, Brave, etc.)
  • exa-mcp-server — el MCP de API de búsqueda comercial más popular
  • Perplexity MCP — búsqueda comercial impulsada por IA, la mayor cantidad de estrellas en el espacio de MCP de búsqueda
Característica✨ Este proyecto88plug/searxng-mcpihor/mcp-searxngopen-webSearchexa-mcp-serverPerplexity MCP
Búsqueda
Más de 200 motores vía SearXNG✅✅✅❌❌❌
Más de 30 categorías de búsqueda✅❌❌❌❌❌
Expansión multipágina✅❌❌❌❌❌
Sugerencias de autocompletado✅❌❌❌❌❌
Herramienta de descubrimiento de motores✅❌❌❌❌❌
Descripciones dinámicas de herramientas✅❌❌❌❌❌
Infraestructura
Autónomo (búsqueda integrada)✅❌❌✅N/AN/A
Implementación Docker sin instalación✅❌❌✅❌❌
Transporte HTTP + stdio✅✅✅✅✅✅
Autenticación✅❌❌❌✅✅
Proxy inverso de interfaz web✅❌❌❌❌❌
Plugin de agente de codificación IA✅❌❌❌❌✅
General
Gratis y de código abierto✅✅✅✅❌ (API de pago)❌ (API de pago)
Privacidad (autohospedado)✅✅✅✅❌❌
LenguajePythonPythonNode.jsTypeScriptTypeScriptTypeScript
Estrellas de GitHubstarsstarsstarsstarsstarsstars
¿Por qué menos herramientas?

MCP está diseñado para composición: los clientes conectan múltiples servidores especializados, cada uno haciendo bien una sola cosa. Algunas alternativas incluyen la obtención de URLs, extracción de páginas renderizadas, expansión de múltiples consultas o modos de investigación dentro del servidor de búsqueda. Mantenemos la superficie de herramientas en tres (búsqueda, autocompletado, descubrimiento de motores) por diseño:

  • La obtención de URLs es una preocupación separada. Los clientes MCP ya incluyen herramientas dedicadas (WebFetch, Playwright MCP, Jina Reader). Incluir fetch en un servidor de búsqueda mezcla responsabilidades y duplica el ecosistema del cliente.
  • La búsqueda paralela con múltiples consultas es orquestación del lado del cliente. Los clientes LLM pueden lanzar múltiples llamadas search en paralelo: una herramienta search_many solo añade sobrecarga de tokens para la selección de herramientas sin beneficio real.
  • La investigación/síntesis pertenece a la capa LLM. El modelo es el mejor sintetizador. Empujar la lógica de investigación de múltiples pasos hacia el servidor MCP acopla preocupaciones de aplicación a la infraestructura.

En su lugar, invertimos en lo que a las alternativas anteriores les falta: cobertura completa de la API de SearXNG (categorías, autocompletado, metadatos de motores — capacidades que la mayoría de los envoltorios dejan sobre la mesa), implementación autónoma, autenticación, proxy inverso de interfaz web e integración de plugin para agentes de codificación IA (Claude Code / Copilot CLI / Codex CLI).

📖 Uso

🌐 Modo HTTP (predeterminado)

# Without authentication
docker run -d --name searxng-mcp --restart unless-stopped \
  -p YOUR_PORT:8888 --memory=512m --cpus=1 \
  ghcr.io/whw23/searxng-http-mcp:latest

# With authentication
docker run -d --name searxng-mcp --restart unless-stopped \
  -p YOUR_PORT:8888 --memory=512m --cpus=1 \
  -e API_KEY=your-secret-key \
  ghcr.io/whw23/searxng-http-mcp:latest
🔗 Endpoint MCPhttp://YOUR_HOST:YOUR_PORT/mcp/
🖥 Interfaz Web de SearXNGhttp://YOUR_HOST:YOUR_PORT/

📡 Modo stdio

docker run --rm -i --memory=512m --cpus=1 \
  ghcr.io/whw23/searxng-http-mcp:latest --stdio

Sin puertos expuestos. Comunicación mediante stdin/stdout. SearXNG se ejecuta internamente para las herramientas MCP.

🐍 Modo uvx

# Connect to a local SearXNG instance (default: http://127.0.0.1:8080)
uvx searxng-http-mcp

# Connect to a remote SearXNG instance
SEARXNG_URL=http://YOUR_SEARXNG_HOST:YOUR_SEARXNG_PORT uvx searxng-http-mcp

Requiere Python 3.14+ y una instancia SearXNG existente. No se necesita Docker.

⚙️ Variables de Entorno

VariablePredeterminadoDescripción
API_KEY(vacío, sin autenticación)Clave API para autenticación
SEARXNG_URLhttp://127.0.0.1:8080SearXNG URL de la instancia (para modo uvx/standalone)

🔐 Autenticación

Cuando API_KEY está configurado, todas las solicitudes requieren una de las siguientes opciones:

  • Encabezado x-api-key — para clientes MCP: x-api-key: your-key
  • Autenticación Básica HTTP — para navegadores

[!TIP] Inicio de sesión en navegador: Al acceder a la interfaz web con API_KEY habilitado, el navegador mostrará un diálogo de inicio de sesión. Deje el nombre de usuario vacío e introduzca su clave API como contraseña.

Browser Login Dialog

Cuando API_KEY no está configurado, todas las solicitudes están abiertas.


🔧 Referencia de Herramientas MCP

🔍 search — Buscar en la web usando SearXNG

Agrega resultados de más de 200 motores de búsqueda con privacidad.

ParámetroTipoRequeridoPredeterminadoDescripción
querystringsí—La consulta de búsqueda a utilizar
categoriesstringno""Nombres de categorías separados por comas (p. ej., general,news,science)
enginesstringno""Nombres de motores separados por comas (p. ej., google,arxiv,wikipedia)
languagestringno""Código de idioma de búsqueda (p. ej., en, zh, ja)
time_rangeenumnonullday, week, month, year
safesearchenumno00=desactivado, 1=moderado, 2=estricto
pagenoint ≥1no1Número de página inicial
pagesint 1–5no1Número de páginas a obtener en paralelo
max_resultsint 1–100no10Número máximo de resultados a devolver
formatenumnocompactcompact (título/url/contenido) o full (+ motores/puntuación/categoría/fecha)

Devuelve: resultados, respuestas, sugerencias, correcciones, infoboxes.

💡 autocomplete — Obtener sugerencias de consultas de búsqueda
ParámetroTipoRequeridoDescripción
querystringsíCadena de consulta parcial para obtener sugerencias
🗂 engine_info — Descubrir motores y categorías disponibles

Sin parámetros. Devuelve la lista de motores habilitados agrupados por categoría.

Devuelve:

{
  "categories": ["general", "images", "videos", "news", ...],
  "engines": ["google", "bing", "duckduckgo", ...],
  "category_engines": {
    "general": ["google", "bing", "duckduckgo", "brave", ...],
    "science": ["arxiv", "google scholar", "pubmed", ...],
    ...
  }
}

Use esto para descubrir qué motores están disponibles antes de llamar a search con filtros específicos de engines o categories.


🔌 Configuración del Cliente

Lo siguiente es un ejemplo base en modo servidor (HTTP remoto) usando la estructura JSON estándar de mcpServers. Muchos clientes aceptan esta estructura, pero los nombres de campos y los valores requeridos de type difieren — consulte la NOTA a continuación y ajuste según su cliente:

{
  "mcpServers": {
    "searxng": {
      "type": "http",
      "url": "http://YOUR_HOST:YOUR_PORT/mcp/",
      "headers": {
        "x-api-key": "your-secret-key"
      }
    }
  }
}

[!NOTE] Diferencias en nombres de campos: ZCode usa mcp.servers; Kilo Code usa una clave de nivel superior mcp con "type": "remote"; Windsurf usa serverUrl en lugar de url; VS Code Copilot usa una clave de nivel superior servers; OpenCode anida bajo mcp con "type": "remote"; Codex y Hermes usan mcp_servers (TOML/YAML). Para Claude Code, "type": "http" es obligatorio — sin él, la entrada se lee como un servidor stdio y se omite. Para Cline, establezca "type": "streamableHttp" en servidores HTTP remotos.

Claude Claude Desktop

Modo servidor — edite ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "searxng": {
      "url": "http://YOUR_HOST:YOUR_PORT/mcp/",
      "headers": {
        "x-api-key": "your-secret-key"
      }
    }
  }
}

Modo local:

{
  "mcpServers": {
    "searxng": {
      "command": "docker",
      "args": ["run", "--rm", "-i", "--memory=512m", "--cpus=1", "ghcr.io/whw23/searxng-http-mcp:latest", "--stdio"]
    }
  }
}

Modo uvx:

{
  "mcpServers": {
    "searxng": {
      "command": "uvx",
      "args": ["searxng-http-mcp"],
      "env": { "SEARXNG_URL": "http://YOUR_SEARXNG_HOST:YOUR_SEARXNG_PORT" }
    }
  }
}
Claude Claude Code

Modo servidor (CLI):

claude mcp add --transport http searxng http://YOUR_HOST:YOUR_PORT/mcp/ \
  --header "x-api-key: your-secret-key"

Modo servidor (JSON) — la misma estructura mcpServers funciona en un proyecto .mcp.json compartido por equipo o en un ~/.claude.json global para todo el usuario:

{
  "mcpServers": {
    "searxng": {
      "type": "http",
      "url": "http://YOUR_HOST:YOUR_PORT/mcp/",
      "headers": {
        "x-api-key": "your-secret-key"
      }
    }
  }
}

Modo local:

claude mcp add --transport stdio searxng -- docker run --rm -i --memory=512m --cpus=1 ghcr.io/whw23/searxng-http-mcp:latest --stdio

Modo uvx:

claude mcp add --transport stdio searxng -- uvx searxng-http-mcp
Codex Codex

Modo servidor — agregue a ~/.codex/config.toml:

[mcp_servers.searxng]
url = "http://YOUR_HOST:YOUR_PORT/mcp/"
http_headers = { "x-api-key" = "your-secret-key" }

Modo local:

[mcp_servers.searxng]
command = "docker"
args = ["run", "--rm", "-i", "--memory=512m", "--cpus=1", "ghcr.io/whw23/searxng-http-mcp:latest", "--stdio"]

Modo uvx:

[mcp_servers.searxng]
command = "uvx"
args = ["searxng-http-mcp"]
Cursor Cursor

Modo servidor — edite .cursor/mcp.json:

{
  "mcpServers": {
    "searxng": {
      "url": "http://YOUR_HOST:YOUR_PORT/mcp/",
      "headers": {
        "x-api-key": "your-secret-key"
      }
    }
  }
}

Modo local:

{
  "mcpServers": {
    "searxng": {
      "command": "docker",
      "args": ["run", "--rm", "-i", "--memory=512m", "--cpus=1", "ghcr.io/whw23/searxng-http-mcp:latest", "--stdio"]
    }
  }
}

Modo uvx:

{
  "mcpServers": {
    "searxng": {
      "command": "uvx",
      "args": ["searxng-http-mcp"],
      "env": { "SEARXNG_URL": "http://YOUR_SEARXNG_HOST:YOUR_SEARXNG_PORT" }
    }
  }
}
Copilot VS Code Copilot

Modo servidor — agregue a .vscode/mcp.json:

{
  "servers": {
    "searxng": {
      "type": "http",
      "url": "http://YOUR_HOST:YOUR_PORT/mcp/",
      "headers": {
        "x-api-key": "your-secret-key"
      }
    }
  }
}

Modo local:

{
  "servers": {
    "searxng": {
      "type": "stdio",
      "command": "docker",
      "args": ["run", "--rm", "-i", "--memory=512m", "--cpus=1", "ghcr.io/whw23/searxng-http-mcp:latest", "--stdio"]
    }
  }
}

Modo uvx:

{
  "servers": {
    "searxng": {
      "type": "stdio",
      "command": "uvx",
      "args": ["searxng-http-mcp"],
      "env": { "SEARXNG_URL": "http://YOUR_SEARXNG_HOST:YOUR_SEARXNG_PORT" }
    }
  }
}
Windsurf Windsurf

Modo servidor — agregue a ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "searxng": {
      "serverUrl": "http://YOUR_HOST:YOUR_PORT/mcp/",
      "headers": {
        "x-api-key": "your-secret-key"
      }
    }
  }
}

Modo local:

{
  "mcpServers": {
    "searxng": {
      "command": "docker",
      "args": ["run", "--rm", "-i", "--memory=512m", "--cpus=1", "ghcr.io/whw23/searxng-http-mcp:latest", "--stdio"]
    }
  }
}

Modo uvx:

{
  "mcpServers": {
    "searxng": {
      "command": "uvx",
      "args": ["searxng-http-mcp"],
      "env": { "SEARXNG_URL": "http://YOUR_SEARXNG_HOST:YOUR_SEARXNG_PORT" }
    }
  }
}
Cline Cline

Configure a través del panel de configuración MCP de Cline en VS Code (Cline > MCP Servers > Add).

Modo servidor:

{
  "mcpServers": {
    "searxng": {
      "type": "streamableHttp",
      "url": "http://YOUR_HOST:YOUR_PORT/mcp/",
      "headers": {
        "x-api-key": "your-secret-key"
      }
    }
  }
}

Modo local:

{
  "mcpServers": {
    "searxng": {
      "command": "docker",
      "args": ["run", "--rm", "-i", "--memory=512m", "--cpus=1", "ghcr.io/whw23/searxng-http-mcp:latest", "--stdio"]
    }
  }
}

Modo uvx:

{
  "mcpServers": {
    "searxng": {
      "command": "uvx",
      "args": ["searxng-http-mcp"],
      "env": { "SEARXNG_URL": "http://YOUR_SEARXNG_HOST:YOUR_SEARXNG_PORT" }
    }
  }
}
OpenCode OpenCode

Modo servidor — edite opencode.json:

{
  "mcp": {
    "searxng": {
      "type": "remote",
      "url": "http://YOUR_HOST:YOUR_PORT/mcp/",
      "headers": {
        "x-api-key": "your-secret-key"
      }
    }
  }
}

Modo local:

{
  "mcp": {
    "searxng": {
      "type": "local",
      "command": ["docker", "run", "--rm", "-i", "--memory=512m", "--cpus=1", "ghcr.io/whw23/searxng-http-mcp:latest", "--stdio"]
    }
  }
}

Modo uvx:

{
  "mcp": {
    "searxng": {
      "type": "local",
      "command": ["uvx", "searxng-http-mcp"]
    }
  }
}
Hermes Hermes Agent

Modo servidor — edite ~/.hermes/config.yaml:

mcp_servers:
  searxng:
    url: "http://YOUR_HOST:YOUR_PORT/mcp/"
    headers:
      x-api-key: "your-secret-key"

Modo local:

mcp_servers:
  searxng:
    command: "docker"
    args: ["run", "--rm", "-i", "--memory=512m", "--cpus=1", "ghcr.io/whw23/searxng-http-mcp:latest", "--stdio"]

Modo uvx:

mcp_servers:
  searxng:
    command: "uvx"
    args: ["searxng-http-mcp"]
🟦 ZCode (Zhipu AI · GLM)

Modo servidor — edite ~/.zcode/cli/config.json (para todo el usuario) o .zcode/config.json (proyecto):

{
  "mcp": {
    "servers": {
      "searxng": {
        "type": "http",
        "url": "http://YOUR_HOST:YOUR_PORT/mcp/",
        "headers": {
          "x-api-key": "your-secret-key"
        }
      }
    }
  }
}

Modo local:

{
  "mcp": {
    "servers": {
      "searxng": {
        "command": "docker",
        "args": ["run", "--rm", "-i", "--memory=512m", "--cpus=1", "ghcr.io/whw23/searxng-http-mcp:latest", "--stdio"]
      }
    }
  }
}

Modo uvx:

{
  "mcp": {
    "servers": {
      "searxng": {
        "command": "uvx",
        "args": ["searxng-http-mcp"],
        "env": { "SEARXNG_URL": "http://YOUR_SEARXNG_HOST:YOUR_SEARXNG_PORT" }
      }
    }
  }
}

ZCode también acepta la estructura estándar mcpServers (p. ej., en .agents/mcp.json). Alternativamente, agregue servidores mediante Settings → MCP Servers → New MCP Server.

⚡ Kilo Code

Modo servidor — edite ~/.config/kilo/kilo.jsonc (global) o .kilo/kilo.jsonc (proyecto):

{
  "mcp": {
    "searxng": {
      "type": "remote",
      "url": "http://YOUR_HOST:YOUR_PORT/mcp/",
      "headers": {
        "x-api-key": "your-secret-key"
      },
      "enabled": true
    }
  }
}

Modo local:

{
  "mcp": {
    "searxng": {
      "type": "local",
      "command": ["docker", "run", "--rm", "-i", "--memory=512m", "--cpus=1", "ghcr.io/whw23/searxng-http-mcp:latest", "--stdio"],
      "enabled": true
    }
  }
}

Modo uvx:

{
  "mcp": {
    "searxng": {
      "type": "local",
      "command": ["uvx", "searxng-http-mcp"],
      "environment": { "SEARXNG_URL": "http://YOUR_SEARXNG_HOST:YOUR_SEARXNG_PORT" },
      "enabled": true
    }
  }
}
🥧 Pi

Instale el adaptador MCP una vez, luego agregue un bloque estándar mcpServers — p. ej., en ~/.pi/agent/mcp.json (todos los proyectos) o .pi/mcp.json (proyecto):

pi install npm:pi-mcp-adapter

Reinicie Pi después de la instalación.

Modo servidor:

{
  "mcpServers": {
    "searxng": {
      "url": "http://YOUR_HOST:YOUR_PORT/mcp/",
      "headers": {
        "x-api-key": "your-secret-key"
      }
    }
  }
}

Modo local:

{
  "mcpServers": {
    "searxng": {
      "command": "docker",
      "args": ["run", "--rm", "-i", "--memory=512m", "--cpus=1", "ghcr.io/whw23/searxng-http-mcp:latest", "--stdio"]
    }
  }
}

Modo uvx:

{
  "mcpServers": {
    "searxng": {
      "command": "uvx",
      "args": ["searxng-http-mcp"],
      "env": { "SEARXNG_URL": "http://YOUR_SEARXNG_HOST:YOUR_SEARXNG_PORT" }
    }
  }
}

🧩 Complemento para Agentes de Codificación IA

Compatible con Claude Code, GitHub Copilot CLI y OpenAI Codex CLI. Agregue el marketplace, luego instale el complemento que se ajuste a su configuración:

/plugin marketplace add whw23/searxng_http_mcp

Todos los complementos incluyen:

  • 🔍 /web-search-via-searxng habilidad — busca en la web con guía de selección de categorías y reglas de uso
  • 🤖 web-searcher agente — subagente de investigación con:
    • 🌐 Búsqueda paralela multilingüe — detecta automáticamente el idioma de la consulta, busca en varios idiomas para una cobertura más amplia
    • 🛡 Niveles de credibilidad de fuentes — clasificación de Nivel 1/2/3 con defensa contra envenenamiento de IA
    • ✅ Validación cruzada — los datos clave requieren 2+ fuentes independientes
    • 🔍 Lectura profunda WebFetch — lee páginas completas de fuentes creíbles, no solo fragmentos
    • 🔄 Búsqueda iterativa de múltiples rondas — hasta 3 rondas con profundización automática en vacíos
    • ⏱ Evaluación de actualidad — marca contenido desactualizado, indica rangos de fechas de las fuentes
    • 📝 Referencias estilo nota al pie — salida estructurada con citas de fuentes en línea
🐍 Modo independiente — uvx, sin Docker, trae tu propio SearXNG
/plugin install searxng-http-mcp-standalone@searxng-http-mcp

Se ejecuta mediante uvx. Requiere Python 3.14+ y una instancia SearXNG existente. Establece SEARXNG_URL en ~/.claude/settings.json:

{
  "env": {
    "SEARXNG_URL": "http://YOUR_SEARXNG_HOST:YOUR_SEARXNG_PORT"
  }
}
🐳 Modo local — Docker stdio, configuración cero
/plugin install searxng-http-mcp@searxng-http-mcp

Ejecuta SearXNG en un contenedor Docker local mediante stdio. Requiere Docker instalado.

🌐 Modo remoto — conéctate a un servidor desplegado mediante HTTP
/plugin install searxng-http-mcp-remote@searxng-http-mcp

Se conecta a un servidor MCP SearXNG desplegado. Requiere las variables de entorno SEARXNG_MCP_URL y SEARXNG_API_KEY.

Añade a ~/.claude/settings.json bajo el campo env:

{
  "env": {
    "SEARXNG_MCP_URL": "http://YOUR_HOST:YOUR_PORT/mcp/",
    "SEARXNG_API_KEY": "your-api-key"
  }
}

Luego reinicia Claude Code.


🛠 Configuración de SearXNG

🖥 Mediante interfaz web

Accede a la interfaz web de SearXNG en http://YOUR_HOST:YOUR_PORT/ para configurar motores de búsqueda, idiomas y otros ajustes. Los cambios persisten durante la vida del contenedor.

💾 Mediante montaje de volumen — configuración persistente

Monta el directorio de configuración de SearXNG para configuración persistente:

docker run -d --name searxng-mcp --restart unless-stopped \
  -p YOUR_PORT:8888 --memory=512m --cpus=1 \
  -v /path/to/searxng-config:/etc/searxng \
  ghcr.io/whw23/searxng-http-mcp:latest

SearXNG genera settings.yml en el primer inicio. El contenedor habilita automáticamente la salida en formato JSON requerida por las herramientas MCP.


🏗 Compilar desde el código fuente

git clone https://github.com/whw23/searxng_http_mcp.git
cd searxng_http_mcp
docker build -t searxng-http-mcp:local .
docker run -d --name searxng-mcp --restart unless-stopped \
  -p YOUR_PORT:8888 --memory=512m --cpus=1 \
  searxng-http-mcp:local

🤝 Contribuciones

Consulta CONTRIBUTING.md para conocer el flujo de trabajo completo, los requisitos de CI y la configuración de desarrollo.

  1. 🍴 Haz un fork del repositorio y habilita GitHub Actions en tu fork
  2. 🌿 Crea una rama de características desde dev
  3. ✍️ Haz tus cambios
  4. ✅ Ejecuta las pruebas: pytest tests/ -v — el CI debe pasar en tu fork antes de abrir un PR
  5. 📬 Envía un PR a dev

El desarrollo ocurre en la rama dev. Las fusiones a main activan las compilaciones de imágenes.

📄 Licencia

MIT — código del servidor MCP.

SearXNG en sí está licenciado bajo AGPL-3.0-or-later.