SearXNG MCP-Server
Ein Model Context Protocol (MCP) Server, der Web-Suchfunktionen durch die Integration mit einer SearXNG-Instanz bereitstellt.
Funktionen
Websuche: Führen Sie leistungsstarke aggregierte Suchen über mehrere Suchmaschinen hinweg durch.
Erkennung: Rufen Sie programmatisch verfügbare Kategorien und Suchmaschinen ab.
Zustandsloses HTTP: Kompatibel mit jedem Standard-JSON-RPC-Client.
Flexible Konfiguration: Unterstützt Umgebungsvariablen und Befehlszeilenargumente.
Related MCP server: SearXNG MCP Server
Beispiel einer compose.yml zum Ausführen von SearXNG mit MCP-Server
services:
searxng:
image: searxng/searxng:latest
ports:
- 8080:8080
volumes:
- ./searxng/etc/:/etc/searxng/
- ./searxng/data/:/var/cache/searxng/
restart: always
searxng-mcp:
image: ghcr.io/aicrafted/searxng-mcp:latest
restart: unless-stopped
depends_on:
# Ensure SearXNG starts before the MCP server
- searxng
environment:
SEARXNG_URL: http://searxng:8080
MCP_HOST: 0.0.0.0
MCP_PORT: 32123
MCP_TRANSPORT: "http"
ports:
- "32123:32123"MCP-Client-Konfiguration
HTTP-Transport (empfohlen)
{
"mcpServers": {
"searxng": {
"type": "http",
"url": "http://localhost:32123/mcp"
}
}
}SSE-Transport
{
"mcpServers": {
"searxng": {
"type": "sse",
"url": "http://localhost:32123/sse"
}
}
}Hinweis: Der SSE-Transport verwendet den
/sse-Endpunkt, nicht/mcp. Der HTTP-Transport verwendet/mcp.
Voraussetzungen für den Betrieb aus den Quellen
Python 3.10+
Eine laufende SearXNG-Instanz.
Installation
Klonen Sie das Repository und navigieren Sie in das Verzeichnis.
Installieren Sie die Abhängigkeiten:
pip install -r requirements.txtRichten Sie Ihre
.env-Datei ein (optional):SEARXNG_URL=http://your-searxng-instance:8080 MCP_PORT=32123 MCP_HOST=127.0.0.1
Verwendung
Starten Sie den Server mit uv oder Standard-Python:
python searxng_mcp.py --transport http --port 32123 --searxng http://searx.lanAusführen mit Docker
Image erstellen:
docker build -t searxng-mcp .Container ausführen:
docker run -d \ -p 32123:32123 \ -e SEARXNG_URL=http://your-searxng-instance:8080 \ --name searxng-mcp \ searxng-mcp
Transportoptionen
stdio: Standard-Eingabe/Ausgabe (Standard für einige MCP-Clients).http: Zustandsloses HTTP (streamable-http).sse: Server-Sent Events.
Leitfaden für Suchfunktionen
SearXNG aggregiert Ergebnisse aus verschiedenen Quellen. Dieser Leitfaden beschreibt die Funktionen, die über das web_search-Tool verfügbar sind.
Suchkategorien
Kategorien helfen dabei, Ihre Suche nach Inhaltstyp zu verfeinern. Verwenden Sie diese im Parameter categories (durch Kommas getrennt).
Kategorie | Beschreibung |
| Standard-Websuche (Google, Brave, DuckDuckGo, etc.) |
| Bildsuchergebnisse |
| Videoinhalte von YouTube, Vimeo, etc. |
| Aktuelle Nachrichtenartikel |
| Geografische und Karteninformationen |
| IT-bezogene Suchen (StackOverflow, GitHub, etc.) |
| Wissenschaftliche Arbeiten und Artikel (ArXiv, Google Scholar) |
| Torrent- und Dateisuchen |
| Beiträge und Profile von sozialen Plattformen |
Unterstützte Suchmaschinen
SearXNG kann über 130 Suchmaschinen abfragen. Konfigurierte Suchmaschinen umfassen typischerweise:
Web: Google, Brave, DuckDuckGo, Qwant, Startpage
Wissen: Wikipedia, Wikidata
Entwicklung: GitHub, StackOverflow, PyPI
Sozial: Reddit, Twitter/X
Erweiterte Suchparameter
categories: Nach bestimmten Typen filtern (z. B.news,it).engines: Bestimmte Suchmaschinen erzwingen (z. B.google,wikipedia).language: Suchsprache angeben (z. B.en,es,fr).pageno: Durch mehrere Ergebnisseiten navigieren.time_range: Nach Datum filtern (day,month,year).safesearch: Inhaltsfilterung steuern (0=Keine, 1=Moderat, 2=Strikt).
Programmatische Erkennung
Verwenden Sie das web_search_info-Tool, um die Liste der aktivierten Kategorien und Suchmaschinen dynamisch von Ihrer Instanz abzurufen.
Fehlerbehebung unter Windows
localhost nicht erreichbar, während der Docker-Container läuft
Symptom: http://localhost:<port>/ gibt "Verbindung verweigert" zurück oder erreicht den falschen Dienst,
aber curl aus dem Container heraus funktioniert einwandfrei.
Ursache: WSL2 Port-Relay-Geist
WSL2 leitet Ports automatisch von der Linux-VM an den Windows-Host weiter, indem wslrelay.exe verwendet wird.
Wenn ein Prozess innerhalb von WSL einen Port abhört, erstellt WSL ein Relay, das an [::1]:<port>
(IPv6-Loopback) auf der Windows-Seite gebunden ist.
Wenn dieser WSL-Prozess stoppt, gibt wslrelay.exe den Port oft nicht frei. Der Relay-Eintrag
bleibt als Zombie-Listener auf [::1]:<port> aktiv.
Wenn Docker später einen Container auf denselben Host-Port mappt, bindet er korrekt an
0.0.0.0:<port> — aber [::1]:<port> ist bereits durch das veraltete Relay belegt.
Unter Windows wird localhost zuerst zu ::1 (IPv6) aufgelöst. Daher treffen Browser- und Curl-Anfragen an
localhost:<port> auf den toten wslrelay.exe-Eintrag anstatt auf den Docker-Container,
was zu einem Verbindungsfehler oder einer unerwarteten Antwort führt.
Die Verbindung über die explizite IPv4-Adresse 127.0.0.1:<port> umgeht das Relay und erreicht
Docker korrekt.
Diagnose:
# Check what is listening on the port
netstat -ano | findstr :<port>
# Identify the processes
Get-Process -Id <pid1>,<pid2> | Select-Object Id,NameWenn Sie zwei Einträge für denselben Port sehen — einen im Besitz von com.docker.backend und einen anderen
von wslrelay — ist dies das Problem.
Workarounds:
Option | Befehl | Hinweise |
IPv4 direkt verwenden |
| Sofort, kein Neustart erforderlich |
WSL neu starten |
| Beendet alle veralteten Relays; WSL startet bei nächster Nutzung neu |
Docker-Port neu zuordnen | Host-Port in | Vermeidet den Konflikt vollständig |
Dauerhafte Lösung:
Starten Sie nach wsl --shutdown den Docker-Container neu. Das Relay existiert dann nicht mehr und
localhost:<port> funktioniert normal, bis derselbe Port innerhalb von WSL erneut verwendet wird.
Prävention:
Wenn Sie regelmäßig Dienste auf demselben Port sowohl in WSL als auch in Docker ausführen, bevorzugen Sie eine der folgenden Optionen:
Verwenden Sie für diesen Dienst immer Docker, niemals direkt WSL
Verwenden Sie unterschiedliche Ports für WSL-Entwicklungs- und Docker-Produktionsinstanzen
Fügen Sie eine explizite Bindung
127.0.0.1:<port>:<port>in derdocker-compose.ymlhinzu, um IPv4 zu erzwingen
Verwandtes
WSL GitHub Issue-Tracker: Suche nach
wslrelay port leak
This server cannot be installed
Maintenance
Appeared in Searches
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/aicrafted/searxng-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
