Skip to main content
Glama
SearXNG MCP Server

SearXNG MCP Server

{"type":"text"}# Searxng Mcp

CLI oder API | MCP | Agent

PyPI - Version MCP-Server PyPI - Downloads GitHub-Repository-Sterne GitHub-Forks GitHub-Mitwirkende PyPI - Lizenz GitHub GitHub letzter Commit (vom Committer) GitHub-Pull-Requests GitHub geschlossene Pull-Requests GitHub-Issues GitHub Top-Sprache GitHub Sprachanzahl GitHub-Repository-Größe GitHub-Repository-Dateianzahl (Dateityp) PyPI - Wheel PyPI - Implementierung

Version: 2.1.0

Dokumentation — Installation, Bereitstellung, Nutzung über das MCP-Tool, die Python-API und Konsolenskripte sowie Anleitungen zur Bereitstellung der SearXNG-Instanz finden Sie in der offiziellen Dokumentation.


Related MCP server: SearXNG MCP Server

Übersicht

Searxng Mcp ist ein produktionsreifer Agent- und Model-Context-Protocol-Server (MCP), der eine direkte Schnittstelle zum SearXNG-Suchmaschinen-MCP-Server für Agentic AI bietet.


Hauptfunktionen

  • Konsolidierte aktionsgesteuerte MCP-Tools: Minimiert den Token-Overhead und beseitigt Tool-Aufblähung in LLM-Kontexten, indem Methoden in optimierte, umschaltbare Tool-Module gruppiert werden.

  • Sicherheit auf Enterprise-Niveau: Umfassende Unterstützung für Eunomia-Richtlinien, OIDC-Token-Delegation und granulare Verfolgung des Ausführungskontexts.

  • Integrierter Graph-Agent: Integrierter Pydantic-AI-Agent mit Unterstützung für das Agent Control Protocol (ACP) und standardmäßige Webschnittstellen (AG-UI).

  • Native Telemetrie & Tracing: OpenTelemetry-Exporte und natives Langfuse-Tracing direkt einsatzbereit.


CLI oder API

Dieser Agent kapselt die API des SearXNG Search Engine MCP Server for Agentic AI!. Sie können programmatisch oder über seine integrierten Ausführungseinstiegspunkte mit ihm interagieren.

Detaillierte Anweisungen zur Verwendung der zugrunde liegenden API-Wrapper, erweiterten Schema-Bindungen und Entwickler-SDK-Referenzen finden Sie in docs/index.md.


MCP

Dieser Server nutzt dynamische aktionsgesteuerte Tools, um den Token-Overhead zu optimieren und die IDE-Kompatibilität zu maximieren.

Verfügbare MCP-Tools

Die folgende Tabelle wird automatisch vom MCP-Server generiert — nicht von Hand bearbeiten.

Kompakte aktionsgesteuerte Tools (MCP_TOOL_MODE=condensed)

MCP-Tool

Toggle-Env-Var

Beschreibung

searxng_ingest_search

KGTOOL

Führt eine SearXNG-Suche aus und übernimmt die Ergebnisse nativ in den epistemic-graph.

searxng_search_app

SEARCH_APPTOOL

Startet eine interaktive SearXNG-Such-UI-App: ein Abfragefeld, Kategoriefilter und eine klickbare Ergebnisliste, unterstützt durch das vorhandene web_search-Tool über die hostvermittelte MCP-Apps-Brücke. Verwenden Sie dies, wenn ein Mensch die Suchergebnisse visuell sehen und mit ihnen interagieren soll, anstatt rohes JSON zu lesen. Steuert KEINEN Browser und rendert keine beliebigen Webseiten — nur diesen Suchworkflow.

searxng_settings

CONFIGTOOL

Liest/bearbeitet die settings.yml der EINGEBETTETEN SearXNG-Instanz

web_search

—

Führt eine Websuche über eine datenschutzfreundliche SearXNG-Metasuchinstanz durch.

4 aktionsgesteuerte Tools · 0 verbose 1:1-Tools. Jedes ist aktiviert, sofern sein <DOMAIN>TOOL-Schalter nicht auf false gesetzt ist; MCP_TOOL_MODE wählt die Oberfläche (**intent Standard* — die sechs Verb-Tools, granulare Menge bei Bedarf geladen · condensed aktionsgesteuert · verbose 1:1 · both). Automatisch generiert — nicht bearbeiten.*

Detaillierte Tool-Schemas, Parameterformen und Validierungsbeschränkungen sind in docs/usage.md dokumentiert.

Dynamische Tool-Auswahl & Sichtbarkeit

Dieser MCP-Server unterstützt die dynamische Auswahl des Toolsets und die Sichtbarkeitsfilterung zur Laufzeit. Dadurch können Sie die Menge der verfügbaren Tools einschränken, um ein Aufblähen des Kontextfensters des LLM zu verhindern.

Sie können die Tool-Filterung über mehrere Eingabekanäle konfigurieren:

  • CLI-Argumente: Übergeben Sie --tools oder --toolsets (oder deren deaktivierte Gegenstücke --disabled-tools und --disabled-toolsets) beim Start.

  • Umgebungsvariablen: Definieren Sie standardmäßige Umgebungsvariablen:

    • MCP_ENABLED_TOOLS / MCP_DISABLED_TOOLS

    • MCP_ENABLED_TAGS / MCP_DISABLED_TAGS

  • HTTP-SSE-Anfrageheader: Übergeben Sie benutzerdefinierte Header während der Transportinitialisierung:

    • x-mcp-enabled-tools / x-mcp-disabled-tools

    • x-mcp-enabled-tags / x-mcp-disabled-tags

  • HTTP-SSE-Anfrageabfrageparameter: Fügen Sie Ihrer Transportverbindungs-URL direkt Abfrageparameter hinzu:

    • ?tools=tool1,tool2

    • ?tags=tag1

Wenn Abfragezeichenfolgen oder Parameter angegeben werden, gleicht eine LLM-freie Knowledge-Graph-Auflösungsebene (unter Verwendung von DynamicToolOrchestrator) Abfrageabsichten mit bekannten Tool-Tags, -Namen oder -Beschreibungen ab, mit sicherem Fallback und automatischer 24-Stunden-Hintergrund-Cache-Aktualisierung.


MCP-Konfigurationsbeispiele

Installieren Sie das connector-fokussierte [mcp]-Extra. Die Beispiele verwenden searxng-mcp[mcp], um FastMCP / FastAPI über agent-utilities[mcp] hinzuzufügen; der erforderliche Agent-Utilities-Kern enthält weiterhin epistemic-graph[full]. Das [agent-runtime]-Extra aktiviert zusätzlich die Modellorchestrierung.

stdio-Transport (lokale IDEs — Cursor, Claude Desktop, VS Code)

{
  "mcpServers": {
    "searxng-mcp": {
      "command": "uvx",
      "args": [
        "--from",
        "searxng-mcp[mcp]",
        "searxng-mcp"
      ],
      "env": {
        "MCP_TOOL_MODE": "intent",
        "SEARCH_APPTOOL": "true",
        "SEARXNG_EMBEDDED": "true",
        "SEARXNG_KG_INGEST": "true",
        "USE_RANDOM_INSTANCE": "false"
      }
    }
  }
}

Laufzeitreferenzen erfordern einen alias-bewussten Launcher wie GraphOS. Andere Launcher müssen diese Einträge weglassen und die aufgelösten Werte über ihre eigene Laufzeit-Geheimnisgrenze injizieren.

Streamable-HTTP-Transport (vernetzt / Produktion)

{
  "mcpServers": {
    "searxng-mcp": {
      "command": "uvx",
      "args": [
        "--from",
        "searxng-mcp[mcp]",
        "searxng-mcp",
        "--transport",
        "streamable-http",
        "--port",
        "8000"
      ],
      "env": {
        "TRANSPORT": "streamable-http",
        "HOST": "127.0.0.1",
        "PORT": "8000",
        "MCP_TOOL_MODE": "intent",
        "SEARCH_APPTOOL": "true",
        "SEARXNG_EMBEDDED": "true",
        "SEARXNG_KG_INGEST": "true",
        "USE_RANDOM_INSTANCE": "false"
      }
    }
  }
}

Alternativ können Sie eine Verbindung zu einer bereits bereitgestellten Streamable-HTTP-Instanz per url herstellen:

{
  "mcpServers": {
    "searxng-mcp": {
      "url": "http://localhost:8000/searxng-mcp/mcp"
    }
  }
}

Führen Sie ein geprüftes Container-Image als stdio-Kindprozess mit minimalen Rechten aus (kein Listener oder veröffentlichter Port):

docker run -i --rm \
  --read-only \
  --cap-drop=ALL \
  --security-opt=no-new-privileges \
  --pids-limit=256 \
  --tmpfs /tmp:rw,noexec,nosuid,nodev,size=64m \
  -e TRANSPORT=stdio \
  -e MCP_TOOL_MODE=intent \
  -e SEARCH_APPTOOL=true \
  -e SEARXNG_EMBEDDED=true \
  -e SEARXNG_KG_INGEST=true \
  -e USE_RANDOM_INSTANCE=false \
  registry.example.invalid/searxng-mcp@sha256:<digest> searxng-mcp

Für containerisiertes Netzwerk-HTTP stellen Sie einen authentifizierten TLS-Ingress (oder direktes Server-TLS), exakte MCP_ALLOWED_HOSTS und eine exakte Trusted-Proxy-CIDR-Richtlinie über das vom Betreiber verwaltete Bereitstellungsprofil bereit. Der Generator erzeugt keinen unauthentifizierten Nicht-Loopback-Listener.

Automatisch aus der codegelesenen Env-Oberfläche generiert (MCP_TOOL_MODE + Paketvariablen) — nicht bearbeiten.

Zusätzliche Bereitstellungsoptionen

searxng-mcp kann als lokaler stdio-Prozess oder Container oder hinter einer entfernten Netzwerkgrenze ausgeführt werden. Der Bereitstellungsleitfaden enthält den detaillierten Transportvertrag.

  • Lokaler Container — starten Sie ein geprüftes unveränderliches Image als stdio-Kindprozess mit minimalen Rechten, ohne Listener oder veröffentlichten Port.

  • Remote-URL — verbinden Sie sich über einen vom Betreiber bereitgestellten authentifizierten HTTPS-Ingress. Bewahren Sie dessen URL, ausgehende Identitätsreferenzen, Vertrauensprofil und exakte MCP_ALLOWED_HOSTS in AgentConfig auf.

Agent

Dieses Repository enthält einen vollständig integrierten Pydantic-AI-Graph-Agenten. Er kommuniziert über das Agent Control Protocol (ACP) und interagiert nahtlos mit der Agent-Web-UI (AG-UI) und der Terminal-Schnittstelle.

Ausführen der Agent-CLI

Um den interaktiven Kommandozeilen-Agenten zu starten:

# Set credentials
export SEARXNG_URL="your_value"

# Run the agent server
searxng-agent --provider openai --model-id gpt-4o

Docker-Compose-Orchestrierung

Die folgende docker/agent.compose.yml konfiguriert den Agenten, die Web-UI und die Terminal-Schnittstelle gemeinsam:

version: '3.8'

services:
  searxng-mcp-mcp:
    image: example/searxng-mcp@sha256:<digest>
    container_name: searxng-mcp-mcp
    hostname: searxng-mcp-mcp
    restart: always
    env_file:
      - ../.env
    environment:
      - PYTHONUNBUFFERED=1
      - HOST=0.0.0.0
      - PORT=8000
      - TRANSPORT=streamable-http
    ports:
      - "8000:8000"
    healthcheck:
      test: ["CMD", "python3", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8000/health')"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 10s
    logging:
      driver: json-file
      options:
        max-size: "10m"
        max-file: "3"

  searxng-mcp-agent:
    image: example/searxng-mcp@sha256:<digest>
    container_name: searxng-mcp-agent
    hostname: searxng-mcp-agent
    restart: always
    depends_on:
      - searxng-mcp-mcp
    env_file:
      - ../.env
    command: [ "searxng-agent" ]
    environment:
      - PYTHONUNBUFFERED=1
      - HOST=0.0.0.0
      - PORT=9001
      - MCP_URL=http://searxng-mcp-mcp:8000/mcp
      - PROVIDER=${PROVIDER:-openai}
      - MODEL_ID=${MODEL_ID:-gpt-4o}
      - ENABLE_WEB_UI=True
      - ENABLE_OTEL=True
    ports:
      - "9001:9001"
    healthcheck:
      test: ["CMD", "python3", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:9001/health')"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 10s
    logging:
      driver: json-file
      options:
        max-size: "10m"
        max-file: "3"

Detaillierte Erläuterungen zur Graph-Knotenarchitektur, Konfigurationen für benutzerdefinierte Fähigkeiten und Anleitungen für agentische Traces finden Sie in docs/deployment.md.


Sicherheit & Governance

Direkt auf dem unternehmensreifen agent-utilities-Kern aufgebaut, werden die standardmäßigen Sicherheitsparameter vollständig unterstützt:

Zugriffskontrolle & Richtliniendurchsetzung

  • Eunomia-Richtlinien: Fein granulare, richtliniengesteuerte Tool-Autorisierung. Unterstützt none, lokale embedded-Modi (mcp_policies.json) oder zentralisierte remote-Modi.

  • OIDC-Token-Delegation: Konform mit RFC 8693-Token-Austausch, um authentifizierende Benutzeranmeldeinformationen von Web-UI / ACP → Agent → MCP weiterzuleiten.

  • Bereichsbezogene Anmeldeinformationen: Ausführungskontext läuft auf die spezifische Aufruferidentität beschränkt.

Laufzeit-Sicherheitsraster

Funktion

Funktionalität

Aktivierung

Tool Guard

Empfindlichkeitsprüfung mit Human-in-the-Loop-Validierung

Standardmäßig aktiviert

Prompt-Injection-Abwehr

Eingabe-Scanning, Wiederholungsüberwachung und rekursive Schleifenblockaden

Standardmäßig aktiviert

Kontext-Sicherheitswächter

Erkennung von Endlosschleifen und präventive Warnungen bei kontextuellem Überlauf

Standardmäßig aktiviert


Umgebungsvariablen

Paket-Umgebungsvariablen

Variable

Beispiel

Beschreibung

HOST

0.0.0.0

PORT

8000

TRANSPORT

stdio

Optionen: stdio, streamable-http, sse

SEARCH_APPTOOL

true

deaktiviert die searxng_search_app MCP-App (ui:// Such-UI)

ENABLE_OTEL

True

OTEL_EXPORTER_OTLP_ENDPOINT

http://localhost:8080/api/public/otel

OTEL_EXPORTER_OTLP_PUBLIC_KEY_REF

secret://telemetry/otlp-public-key

OTEL_EXPORTER_OTLP_SECRET_KEY_REF

secret://telemetry/otlp-secret-key

OTEL_EXPORTER_OTLP_PROTOCOL

http/protobuf

EUNOMIA_TYPE

none

Optionen: none, embedded, remote

EUNOMIA_POLICY_FILE

mcp_policies.json

EUNOMIA_REMOTE_URL

http://eunomia-server:8000

SEARXNG_INSTANCE_URL

—

Beide leer lassen, um die gebündelte/eingebettete SearXNG-Instanz zu verwenden (Standard — siehe SEARXNG_EMBEDDED unten). Eine setzen, um stattdessen auf eine externe Instanz zu verweisen (z. B. die eigene http://searxng.arpa der Flotte) — eine explizite URL hat immer Vorrang vor der eingebetteten Instanz.

SEARXNG_URL

—

SEARXNG_USERNAME

—

SEARXNG_PASSWORD

secret-injected

USE_RANDOM_INSTANCE

false

SEARXNG_KG_INGEST

true

SEARXNG_EMBEDDED

true

Null-Konfiguration, eigenständige Suche: wenn SEARXNG_URL/SEARXNG_INSTANCE_URL nicht gesetzt sind, wird eine private, nur-Loopback SearXNG-Instanz gestartet und verwendet, die diesem MCP-Server gehört (erfordert das searxng-mcp[embedded]-Extra; ohne dieses ein stiller No-op).

XDG_CONFIG_HOME

—

Wo die benutzerbearbeitbare settings.yml-Überschreibung der eingebetteten Instanz liegt: $XDG_CONFIG_HOME/searxng-mcp/settings.yml. Standard ist ~/.config.

Geerbte Agent-Utilities-Variablen (gelten für jeden Connector)

Variable

Beispiel

Beschreibung

MCP_TOOL_MODE

intent

Tool-Oberfläche: intent | condensed | verbose | both

MCP_ENABLED_TOOLS

—

Kommagetrennte Tool-Allow-Liste

MCP_DISABLED_TOOLS

—

Kommagetrennte Tool-Deny-Liste

MCP_ENABLED_TAGS

—

Kommagetrennte Tag-Allow-Liste

MCP_DISABLED_TAGS

—

Kommagetrennte Tag-Deny-Liste

MCP_CLIENT_AUTH

—

Ausgehende MCP-Kind-Authentifizierung: oidc-client-credentials | basic | none

OIDC_CLIENT_ID

—

OIDC-Client-ID (Service-Account-Authentifizierung)

OIDC_CLIENT_SECRET_REF

secret://identity/oidc-client-secret

Laufzeit-Secret-Referenz für das OIDC-Servicekonto

MCP_BASIC_AUTH_USERNAME

—

HTTP-Basic-Benutzername (MCP_CLIENT_AUTH=basic)

MCP_BASIC_AUTH_PASSWORD_REF

secret://identity/mcp-basic-password

Laufzeit-Secret-Referenz für HTTP-Basic-Authentifizierung (MCP_CLIENT_AUTH=basic)

DEBUG

False

Ausführliche Protokollierung

PYTHONUNBUFFERED

1

Ungepufferte Standardausgabe (in Containern empfohlen)

MCP_URL

http://localhost:8000/mcp

URL des MCP-Servers, mit dem sich der Agent verbindet

PROVIDER

openai

LLM-Anbieter für den Agenten

MODEL_ID

gpt-4o

Modell-ID für den Agenten

ENABLE_WEB_UI

True

Bereitstellung der AG-UI-Weboberfläche

20 Paket- + 16 geerbte Variable(n). Automatisch generiert aus .env.example + dem gemeinsamen Agent-Utilities-Set — nicht bearbeiten.

Jede Variable, die der Server liest. Siehe .env.example als Copy-Paste-Ausgangspunkt.

SearXNG-Verbindung

Variable

Beschreibung

Standard

SEARXNG_URL

Basis-URL der abzufragenden SearXNG-Instanz

http://localhost:8080

SEARXNG_INSTANCE_URL

Explizite Überschreibung der Instanz-URL

—

SEARXNG_USERNAME

Basic-Auth-Benutzername für die SearXNG-Instanz (falls geschützt)

—

SEARXNG_PASSWORD

Basic-Auth-Passwort für die SearXNG-Instanz (falls geschützt)

—

USE_RANDOM_INSTANCE

Wählt eine zufällige öffentliche SearXNG-Instanz anstelle von SEARXNG_URL aus

false

SEARXNG_KG_INGEST

Nimmt jedes Suchergebnis nativ in die konfigurierte Wissensgraph-Engine auf; Fehler werden explizit gemeldet

true

SEARXNG_EMBEDDED

Null-Konfiguration für eigenständige Suche: Wenn SEARXNG_URL/SEARXNG_INSTANCE_URL nicht gesetzt sind, wird eine private, nur über Loopback erreichbare SearXNG-Instanz gestartet und genutzt, die diesem Server gehört (erfordert pip install searxng-mcp[embedded]; ohne das zusätzlich installierte Extra ein stiller No-op)

true

MCP-Server / Transport

Variable

Beschreibung

Standard

TRANSPORT

stdio, streamable-http oder sse

stdio

HOST

Bind-Adresse (HTTP-Transports)

0.0.0.0

PORT

Bind-Port (HTTP-Transports)

8000

MCP_TOOL_MODE

Tool-Oberfläche: condensed, verbose oder both

condensed

MCP_ENABLED_TOOLS / MCP_DISABLED_TOOLS

Kommagetrennte Zulassungs-/Sperrliste für Tools

—

MCP_ENABLED_TAGS / MCP_DISABLED_TAGS

Kommagetrennte Zulassungs-/Sperrliste für Tags

—

Telemetrie & Governance

Variable

Beschreibung

Standard

ENABLE_OTEL

OpenTelemetry-Export aktivieren

True

OTEL_EXPORTER_OTLP_ENDPOINT

OTLP-Collector-Endpunkt

—

OTEL_EXPORTER_OTLP_PUBLIC_KEY / OTEL_EXPORTER_OTLP_SECRET_KEY

OTLP-Authentifizierungsschlüssel

—

OTEL_EXPORTER_OTLP_PROTOCOL

OTLP-Protokoll (z. B. http/protobuf)

—

EUNOMIA_TYPE

Autorisierungsmodus: none, embedded, remote

none

EUNOMIA_POLICY_FILE

Eingebettete Richtliniendatei

mcp_policies.json

EUNOMIA_REMOTE_URL

URL des entfernten Eunomia-Servers

—


Installation

Wählen Sie das Extra, das zu dem passt, was Sie ausführen möchten:

Extra

Installiert

Verwendung

searxng-mcp[mcp]

Verbindungsorientierter MCP-Server (agent-utilities[mcp] — FastMCP/FastAPI + epistemic-graph[full])

Sie führen nur den MCP-Server aus (kleinste Installation / kleinstes Image)

searxng-mcp[agent]

Agent-Laufzeit (agent-utilities[agent-runtime,logfire] — Modell-Orchestrierung + epistemic-graph[full])

Sie führen den integrierten Agenten aus

searxng-mcp[all]

Alles (mcp + agent + logfire)

Entwicklung / beide Oberflächen

# Connector-focused MCP server (includes the shared graph engine)
uv pip install "searxng-mcp[mcp]"

# Agent runtime (adds model orchestration to the shared graph engine)
uv pip install "searxng-mcp[agent]"

# Everything (development)
uv pip install "searxng-mcp[all]"      # or: python -m pip install "searxng-mcp[all]"

Container-Images (:mcp vs. :agent)

Ein mehrstufiges docker/Dockerfile erstellt zwei passend dimensionierte Images, die über --target ausgewählt werden:

Image-Tag

Build-Ziel

Inhalt

Einstiegspunkt

example/searxng-mcp:mcp

--target mcp

searxng-mcp[mcp] — verbindungsorientiert, enthält epistemic-graph[full]; keine Modell-Orchestrierungs-Struktur

searxng-mcp

example/searxng-mcp@sha256:<digest>

--target agent (Standard)

searxng-mcp[agent] — Agent-Laufzeit, Modell-Orchestrierung + epistemic-graph[full]

searxng-agent

docker build --target mcp   -t example/searxng-mcp:mcp    docker/   # connector-focused MCP server
docker build --target agent -t example/searxng-mcp:agent-local docker/   # agent runtime

docker/mcp.compose.yml führt den verbindungsorientierten :mcp-Server aus; docker/agent.compose.yml führt den Agenten (immutable agent digest) mit einem am selben Ort abgelegten :mcp-Sidecar aus.

Wissensgraph-Datenbank (epistemic-graph)

Sowohl [mcp] als auch [agent] bringen die epistemic-graph-Engine über die erforderliche Agent-Utilities-Kernabhängigkeit (epistemic-graph[full]) mit. Das Extra [mcp] hält den Server verbindungsorientiert; [agent] aktiviert zusätzlich die Modell-Orchestrierung. Lokale Bereitstellungen können die gebündelte Engine verwenden. Für den Produktionsbetrieb oder gemeinsamen Zustand führen Sie epistemic-graph als dedizierten Datenbankdienst aus und konfigurieren die Laufzeit so, dass sie diesen verwendet. Bereitstellungsrezepte (Einzelknoten + Raft-HA), Verbindungskonfiguration und Architekturdiagramme sind im Bereitstellungshandbuch für epistemic-graph dokumentiert.


Dokumentation

Die vollständige Dokumentation ist als offizielle Dokumentationswebsite veröffentlicht und die empfohlene Referenz für Installation, Bereitstellung und den täglichen Betrieb.

Seite

Inhalt

Installation

pip, Quelle, Extras, vorgefertigtes Docker-Image

Bereitstellung

MCP- und Agent-Server ausführen, Compose, Caddy + Technitium, Umgebungskonfiguration

Verwendung

das web_search-Tool, die Python-API, die Konsolenskripte

Bereitstellungsplattform

SearXNG mit Docker bereitstellen

Überblick

Ökosystemrolle und das standardisierte Paketmuster

Konzepte

Konzeptregister (CONCEPT:SRX-*)

AGENTS.md ist die maßgebliche Anleitung für Mitwirkende/Agenten.


Repository-Inhaber

GitHub followers GitHub User's stars


Mitwirken

Beiträge sind willkommen! Bitte stellen Sie die Codequalität sicher, indem Sie vor dem Einreichen von Pull-Requests lokale Prüfungen ausführen:

  • Code mit ruff format . formatieren

  • Code mit ruff check . linten

  • Typsicherheit mit mypy . validieren

  • Test-Suiten mit pytest ausführen

Mit agent-utilities-deployment bereitstellen

Stellen Sie dieses Pakel mit dem konsolidierten agent-utilities-deployment-Workflow bereit. Dieser wählt einen Pfad für installierte Pakete, bearbeitbare Quellen oder unveränderliche Container aus; zeichnet nur Referenzen auf Laufzeitgeheimnisse und TLS-Profile in AgentConfig auf; und führt Arzt-, Registrierungs-, Richtlinien-, Beobachtbarkeits- und Rollback-Gates aus. Bitten Sie Ihren Agenten, "searxng-mcp mit agent-utilities-deployment bereitzustellen".

Installationsmodus

Befehl

Installiertes Paket

uv tool install "searxng-mcp[mcp]", dann searxng-mcp ausführen

Bearbeitbare Quelle

uv pip install -e ".[agent]", dann searxng-mcp ausführen

Unveränderlicher Container

registry.example.invalid/searxng-mcp@sha256:<digest> über den vom Betreiber gewählten Orchestrator bereitstellen

Das Repository enthält kein Bereitstellungsprofil, keinen Anmeldedatenwert, keinen Zertifikatspfad und keinen umgebungsspezifischen Endpunkt. Stellen Sie diese zur Laufzeit über AgentConfig und den konfigurierten Geheimnisanbieter bereit.

Vertrag für verwaltete Fähigkeiten

Dieses Paket enthält eine kompakte kanonische Fähigkeitsoberfläche mit spezialisierten Verfahren als referenzierte Workflows. Die aktuellen MCP-Tools, Fähigkeitsmetadaten, connector_manifest.yml, Ontologie, Zuordnungen, Formen, Fixtures, Migrationen, Tool-Schema-Fingerabdrücke und Zertifizierungsmetadaten bilden einen versionierten Vertrag für Fähigkeiten. Validieren Sie diese gemeinsam; verlassen Sie sich nicht auf veraltete Tool-Namen oder historische aufgabenspezifische Fähigkeits-Wrapper.

Runtime-Endpunkte, Anmeldedaten, Zertifikatsvertrauen, Mandantenidentität, Aufbewahrung und Observability-Richtlinie sind Eingaben für die Bereitstellung und niemals im Paket enthaltene Werte. Siehe Konfiguration, Vertrauen und Datenschutz, bevor Sie einen Netzwerktransport, eine Connector-Ingestion, eine GraphOS-Delegation oder einen Trace-Export aktivieren.

Available Tools

6 tools
searxng_get_settingsSearxng Get SettingsA
Read-onlyIdempotent

Read the EMBEDDED SearXNG instance's active settings.yml (CONCEPT:SR-KG.compute.embedded-instance): the user override at $XDG_CONFIG_HOME/searxng-mcp/settings.yml if one exists, else the packaged default, plus its path. Informational only when an external SEARXNG_URL is configured.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and idempotentHint, so the safety profile is covered. The description adds genuine context beyond them: the precedence rule for which file is read, that the path is returned alongside the content, and the external-SEARXNG_URL caveat. The return shape is left to the existing output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence that leads with the action and resource, with no wasted framing. Minor clutter from the inline 'CONCEPT:SR-KG.compute.embedded-instance' tag, which adds nothing for an agent deciding how to call the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No parameters, an output schema covering the return value, and the description supplies the resolution logic and the external-URL caveat. Complete enough to call correctly; the only residual gap is that it does not explicitly point to searxng_set_settings as the modification counterpart.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so the baseline of 4 applies; there are no parameters whose semantics need explaining.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (read) and resource (the embedded SearXNG instance's active settings.yml), and spells out the resolution order (user override at $XDG_CONFIG_HOME/searxng-mcp/settings.yml, else packaged default) plus the returned path. This clearly distinguishes it from siblings searxng_set_settings and searxng_reset_settings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The clause 'Informational only when an external SEARXNG_URL is configured' tells the agent when the result is not meaningful, which is real routing guidance. It does not explicitly name the alternative (searxng_set_settings) for modification, so it stops short of full when/when-not/alternative framing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

searxng_reset_settingsSearxng Reset SettingsA
DestructiveIdempotent

Delete the EMBEDDED SearXNG user override settings.yml, reverting to the packaged default on the next spawn.

NameRequiredDescriptionDefault
apply_nowNoStop the running embedded instance (if any) so the NEXT search respawns it with the packaged default settings.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already disclose that this is destructive, idempotent, and not read-only. The description adds useful behavioral context beyond that: it identifies exactly what is destroyed (the embedded user override settings.yml) and when the packaged default takes effect (on the next spawn).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. It states the action, target file, and consequence immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, the input schema fully documents the only parameter, annotations cover safety traits, and an output schema exists. The description supplies the key behavioral effect, though it could explicitly mention the immediate-stop behavior governed by apply_now for a fully self-contained description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the single apply_now parameter is fully documented in the schema itself. The description does not add further parameter semantics, so the baseline of 3 is appropriate when the schema carries this responsibility.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ("Delete") and resource ("EMBEDDED SearXNG user override settings.yml") and states the resulting effect (reverting to the packaged default on the next spawn). This clearly distinguishes it from read/write siblings like get_settings and set_settings, though it does not explicitly route to them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase "reverting to the packaged default" implies this is used when the user wants to discard custom SearXNG overrides, but the description does not explicitly say when to use this versus searxng_set_settings or searxng_get_settings. No alternatives or exclusions are named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

searxng_search_appSearxng Search AppA

Launch an interactive SearXNG search-UI app: a query box, category filters, and a clickable results list, backed by the existing web_search tool through the host-mediated MCP Apps bridge. Use this when a human should see and interact with search results visually rather than read raw JSON. Does NOT drive a browser or render arbitrary web pages -- only this search workflow.

NameRequiredDescriptionDefault
queryNoOptional initial query to run on load.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses the backing mechanism (web_search via the host-mediated MCP Apps bridge) and the capability boundaries of the launched app. It stops short of stating what launching twice does or how app/session lifetime behaves, which are the remaining behavioral unknowns for a UI-launching tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with what is launched, followed by the selection rule and then the scope exclusions. Every clause contributes and nothing is repeated from the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-optional-parameter tool with an output schema, the description covers purpose, mechanism, and boundaries adequately. It is slightly incomplete on app lifecycle semantics (what a second launch yields, whether state persists), which an agent may need to call it confidently in a multi-turn session.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single optional 'query' parameter is already documented in the schema as an initial query run on load. The description adds no further parameter semantics (e.g., how an empty query behaves in the UI), so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Launch') and a precisely scoped resource ('interactive SearXNG search-UI app'), then enumerates its components (query box, category filters, clickable results list). It explicitly distinguishes itself from web_search and from browser automation, so an agent can separate it from every sibling without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit selection rule: use when a human should see and interact with results visually rather than read raw JSON, which maps directly onto choosing this over web_search. It also pre-empts the two most likely misuses by stating it does not drive a browser or render arbitrary web pages.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

searxng_set_settingsSearxng Set SettingsA

Deep-merge overrides_json into the EMBEDDED SearXNG user override settings.yml (created on first use; the packaged default is never modified), then stop the running embedded instance so the next search respawns with the new settings (unless apply_now=false).

NameRequiredDescriptionDefault
mergeNoDeep-merge onto current settings (default) or replace the override file wholesale.
apply_nowNoStop the running embedded instance (if any) so the NEXT search respawns it with the new settings.
overrides_jsonNoJSON object of settings.yml overrides (e.g. '{"search": {"formats": ["html", "json", "csv"]}}'). Deep-merged onto the currently-active settings unless merge=false.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations only declaring readOnlyHint=false and destructiveHint=false, the description carries real added weight: it discloses that the packaged default is never modified, that the override file is created on first use, and that the running instance is stopped so the next search respawns. It does not say what happens to in-flight requests when the instance is stopped, or what happens on invalid JSON, which keeps it from a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence that front-loads the merge action and then the restart consequence. No wasted sentences. Mild clutter from reST double-backtick markup, but nothing that impedes parsing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists, so return values need no explanation, and all three parameters are documented. The description covers the mutation's blast radius and the embedded-vs-packaged distinction. It is only missing error behavior and whether prior override content is recoverable after a wholesale replace.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all three parameters in detail. The description adds only the default `apply_now=true` behavior and the deep-merge semantics for `overrides_json`. Baseline 3 is appropriate since the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource chain: deep-merge `overrides_json` into the embedded user override settings.yml and restart the embedded instance. That is far more than a restatement of the name. It does not explicitly contrast itself with siblings like `searxng_get_settings` or `searxng_reset_settings`, so sibling differentiation is inferred rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied well enough that an agent knows to call this to change settings, and it flags the `apply_now=false` path. However it never says when to prefer `searxng_reset_settings` over merging, or whether to read current settings with `searxng_get_settings` first. No explicit when-not guidance exists.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updatesv2.3.2
    • Addedsearxng_get_settings
    • Addedsearxng_ingest_search
    • Addedsearxng_reset_settings
    • Addedsearxng_search_app
    • Addedsearxng_set_settings
  2. 1 tool updatev0.11.1
    • Changedweb_search13 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / categories / description
        Previous value: -"Categories to search in (e.g., 'general', 'images', 'news'). Default: null (all categories)."New value: +"Optional list of categories to search in (e.g. general, news, science, files, images, videos, music, it, social_media)"
      • changedInput schema / properties / engines / description
        Previous value: -"Specific search engines to use. Default: null (all available engines)."New value: +"Optional list of specific search engines to use"
      • changedInput schema / properties / language / default
        Previous value: -"en"New value: +"en-US"
      • changedInput schema / properties / language / description
        Previous value: -"Language code for search results (e.g., 'en', 'de', 'fr'). Default: 'en'"New value: +"Language code for search results (e.g. en-US)"
      • removedInput schema / properties / max_results
        Removed value: -{
        -  "default": 10,
        -  "description": "Maximum number of search results to return. Range: 1-50. Default: 10.",
        -  "maximum": 50,
        -  "minimum": 1,
        -  "type": "integer"
        -}
      • changedInput schema / properties / pageno / description
        Previous value: -"Page number for results. Must be minimum 1. Default: 1."New value: +"Page number of results to fetch"
      • removedInput schema / properties / pageno / minimum
        Removed value: -1
      • removedInput schema / properties / query / default
        Removed value: -null
      • changedInput schema / properties / query / description
        Previous value: -"Search query"New value: +"Search query to submit to SearXNG"
      • removedInput schema / properties / safesearch
        Removed value: -{
        -  "default": 1,
        -  "description": "Safe search level: 0 (off), 1 (moderate), 2 (strict). Default: 1 (moderate).",
        -  "type": "integer"
        -}
      • removedInput schema / properties / time_range
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Time range for search results. Options: 'day', 'week', 'month', 'year'. Default: null (no time restriction)."
        -}
      • addedInput schema / required
        Added value: +[
        +  "query"
        +]
  3. 1 tool updatev1.0.0
    • First observedweb_search

TDQS

A3.8/5.0

Scored across 6 tools

Disambiguation4/5

The tools are mostly distinct: settings get/set/reset are clearly separated, and the UI app is visibly different from raw search. However, web_search and searxng_ingest_search both perform SearXNG searches, so an agent must read descriptions carefully to choose between plain search and graph-ingesting search.

Naming Consistency4/5

Five tools consistently use the searxng_ prefix with clear verb/object naming (ingest_search, get_settings, set_settings, reset_settings, search_app). The lone web_search tool is an understandable but noticeable deviation from that pattern.

Tool Count5/5

Six tools is well-scoped for a SearXNG server: core search, graph ingestion, settings lifecycle, and an interactive UI. Each tool has a clear purpose, and none feels redundant or excessive.

Completeness4/5

The surface covers search, ingestion, full embedded-settings lifecycle, and an interactive UI, so there are no major dead ends. Minor gaps remain around richer search-result inspection or external-instance configuration, but core workflows are covered.

Maintenance

ActivityActive
ResponsivenessLimited data

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to perform privacy-respecting web searches through SearXNG, with support for multiple search engines, categories, and advanced filtering options.
    176 npm
    27
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables web search, image search, and news search through a self-hosted SearXNG instance. Provides privacy-focused meta-search capabilities aggregating results from multiple search engines.
    3
    176 npm
    1
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables web search capabilities via a SearXNG instance, allowing for filtered searches across categories like news, images, and science. It supports multi-language queries, time-range filtering, and safe search options to provide formatted results with metadata.
    1
    176 npm
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    Enables privacy-respecting web, image, video, and news searches through SearxNG metasearch engine, with options for URL fetching and time filtering.
    5
    67 PyPI
    -