Skip to main content
Glama
SearXNG MCP Server

SearXNG MCP Server

Searxng Mcp

CLI または API | MCP | Agent

PyPI - Version MCP Server PyPI - Downloads GitHub Repo stars GitHub forks GitHub contributors PyPI - License GitHub GitHub last commit (by committer) GitHub pull requests GitHub closed pull requests GitHub issues GitHub top language GitHub language count GitHub repo size GitHub repo file count (file type) PyPI - Wheel PyPI - Implementation

バージョン: 2.1.0

ドキュメント — インストール、デプロイ、MCPツール・Python API・コンソールスクリプトにわたる使用方法、およびSearXNGインスタンスのプロビジョニングに関するガイダンスは、公式ドキュメントで管理されています。


Related MCP server: SearXNG MCP Server

概要

Searxng Mcp は、Agentic AI向けにSearXNG検索エンジンMCPサーバーと直接インターフェースするように設計された、本番グレードのAgentおよびModel Context Protocol (MCP) サーバーです。


主な機能

  • 統合されたアクションルーティングMCPツール: メソッドを最適化されたトグル可能なツールモジュールにグループ化することで、トークンオーバーヘッドを最小限に抑え、LLMコンテキストにおけるツールの肥大化を排除します。

  • エンタープライズグレードのセキュリティ: Eunomiaポリシー、OIDCトークン委任、および詳細な実行コンテキスト追跡の包括的なサポート。

  • 統合グラフエージェント: Agent Control Protocol (ACP) および標準Webインターフェース (AG-UI) をサポートする組み込みのPydantic AIエージェント。

  • ネイティブテレメトリとトレーシング: すぐに使えるOpenTelemetryエクスポートとネイティブのLangfuseトレーシング。


CLI または API

このエージェントは、Agentic AI向けSearXNG検索エンジンMCPサーバーAPIをラップします。プログラムによる操作、または統合された実行エントリポイントを介して対話できます。

基礎となるAPIラッパー、拡張スキーマバインディング、および開発者SDKリファレンスの使用方法に関する詳細な手順は、docs/index.md で管理されています。


MCP

このサーバーは、動的なアクションルーティングツールを利用してトークンオーバーヘッドを最適化し、IDE互換性を最大化します。

利用可能なMCPツール

以下の表はMCPサーバーから自動生成されています。手動で編集しないでください。

凝縮されたアクションルーティングツール (MCP_TOOL_MODE=condensed)

MCPツール

トグル環境変数

説明

searxng_ingest_search

KGTOOL

SearXNG検索を実行し、その結果をネイティブにepistemic-graphへ取り込みます。

searxng_search_app

SEARCH_APPTOOL

インタラクティブなSearXNG検索UIアプリを起動します。クエリボックス、カテゴリフィルター、クリック可能な結果リストを備え、ホスト仲介のMCP Appsブリッジを通じて既存のweb_searchツールを利用します。人間が生のJSONを読むのではなく、検索結果を視覚的に表示して操作する必要がある場合に使用します。ブラウザを駆動したり、任意のWebページをレンダリングしたりはしません。この検索ワークフローのみを対象としています。

searxng_settings

CONFIGTOOL

組み込みのSearXNGインスタンスのsettings.ymlを読み取り/編集します。

web_search

—

プライバシーを尊重するSearXNGメタサーチインスタンスを使用してWeb検索を実行します。

4つのアクションルーティングツール・0の冗長1:1ツール。各ツールは、その<DOMAIN>TOOLトグルがfalseに設定されていない限り有効です。MCP_TOOL_MODEがサーフェスを選択します(**intentデフォルト* — 6つの動詞ツール、オンデマンドでロードされる詳細セット・condensedアクションルーティング・verbose 1:1・both)。自動生成 — 編集しないでください。*

詳細なツールスキーマ、パラメータ形状、および検証制約は、docs/usage.md に保持されています。

動的ツール選択と可視性

このMCPサーバーは、実行時の動的なツールセット選択と可視性フィルタリングをサポートしています。これにより、LLMのコンテキストウィンドウを肥大化させないために、公開されるツールのセットを制限できます。

複数の入力チャネルを介してツールフィルタリングを設定できます:

  • CLI引数: 起動時に --tools または --toolsets(または、その無効化対応である --disabled-tools と --disabled-toolsets)を渡します。

  • 環境変数: 標準の環境変数を定義します:

    • MCP_ENABLED_TOOLS / MCP_DISABLED_TOOLS

    • MCP_ENABLED_TAGS / MCP_DISABLED_TAGS

  • HTTP SSEリクエストヘッダー: トランスポート初期化中にカスタムヘッダーを渡します:

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

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

  • HTTP SSEリクエストクエリパラメータ: トランスポート接続URLにクエリパラメータを直接追加します:

    • ?tools=tool1,tool2

    • ?tags=tag1

クエリ文字列またはパラメータが指定されると、LLMフリーのナレッジグラフ解決レイヤー(DynamicToolOrchestratorを使用)が、既知のツールタグ、名前、または説明に対してクエリ意図を照合し、安全なフォールバックと自動化された24時間のバックグラウンドキャッシュ更新を提供します。


MCP設定例

コネクタ重視の[mcp]エクストラをインストールします。 例では、agent-utilities[mcp]を通じてFastMCP / FastAPIを追加するために searxng-mcp[mcp] を使用しています。必要なAgent Utilitiesコアは、引き続き epistemic-graph[full] を保持します。[agent-runtime] エクストラは、さらにモデルオーケストレーションを有効にします。

stdioトランスポート(ローカルIDE — 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"
      }
    }
  }
}

ランタイム参照には、GraphOSなどのエイリアス対応ランチャーが必要です。その他の ランチャーはこれらのエントリを省略し、独自のランタイムシークレット境界を通じて解決された値を注入する必要があります。

Streamable-HTTPトランスポート(ネットワーク / 本番環境)

{
  "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"
      }
    }
  }
}

または、url によって事前デプロイされたStreamable-HTTPインスタンスに接続します:

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

レビュー済みのコンテナイメージを、最小権限のstdio子プロセスとして実行します( リスナーや公開ポートなし):

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

コンテナ化されたネットワークHTTPの場合は、オペレーター所有のデプロイプロファイルを通じて、認証済みTLSイングレス(または 直接サーバーTLS)、正確な MCP_ALLOWED_HOSTS、および正確な信頼済みプロキシ CIDRポリシーを提供します。ジェネレーターは、認証されていない非ループバックリスナーを発行しません。

コード読み取り環境サーフェス(MCP_TOOL_MODE + パッケージ変数)から自動生成 — 編集しないでください。

追加のデプロイオプション

searxng-mcp は、ローカルのstdioプロセスまたはコンテナとして、あるいはリモートの ネットワーク境界の背後で実行できます。 デプロイガイド には、 詳細なトランスポート契約が記載されています。

  • ローカルコンテナ — レビュー済みのイミュータブルイメージを、リスナーや公開ポートのない最小権限の stdio子プロセスとして起動します。

  • リモートURL — オペレーター提供の認証済みHTTPS イングレスを通じて接続します。そのURL、送信ID参照、信頼プロファイル、および正確な MCP_ALLOWED_HOSTS を AgentConfig に保持します。

Agent

このリポジトリには、完全に統合されたPydantic AIグラフエージェントが含まれています。これはAgent Control Protocol (ACP) を介して通信し、Agent Web UI (AG-UI) およびターミナルインターフェースとシームレスに連携します。

Agent CLIの実行

インタラクティブなコマンドラインエージェントを開始するには:

# Set credentials
export SEARXNG_URL="your_value"

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

Docker Composeオーケストレーション

以下の docker/agent.compose.yml は、Agent、Web UI、およびターミナルインターフェースを一緒に設定します:

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"

詳細なグラフノードアーキテクチャの説明、カスタムスキル設定、およびエージェントトレースガイドは、docs/deployment.md で入手できます。


セキュリティとガバナンス

エンタープライズ対応の agent-utilities コア上に直接構築されており、標準のセキュリティパラメータが完全にサポートされています:

アクセス制御とポリシー適用

  • Eunomiaポリシー: きめ細かい、ポリシー駆動のツール認証。none、ローカル embedded (mcp_policies.json)、または集中型 remote モードをサポートします。

  • OIDCトークン委任: Web UI / ACP → Agent → MCP から認証ユーザー資格情報をフローさせるための、RFC 8693トークン交換に準拠。

  • スコープ付き資格情報: 実行コンテキストは、特定の呼び出し元IDに制限されて実行されます。

ランタイムセキュリティグリッド

機能

機能性

有効化

ツールガード

感度検査とヒューマンインザループ検証

デフォルトで有効

プロンプトインジェクション防御

入力スキャン、繰り返し監視、および再帰ループブロック

デフォルトで有効

コンテキストセーフティガード

スタックループ検出器とコンテキストオーバーフロー事前警告

デフォルトで有効


環境変数

パッケージ環境変数

変数

例

説明

HOST

0.0.0.0

PORT

8000

TRANSPORT

stdio

オプション: stdio、streamable-http、sse

SEARCH_APPTOOL

true

searxng_search_app MCP アプリ(ui:// 検索 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

オプション: none、embedded、remote

EUNOMIA_POLICY_FILE

mcp_policies.json

EUNOMIA_REMOTE_URL

http://eunomia-server:8000

SEARXNG_INSTANCE_URL

—

両方を空のままにすると、バンドル/組み込みの SearXNG インスタンスが使用されます(デフォルト — 下記の SEARXNG_EMBEDDED を参照)。代わりに外部インスタンスを指すように一方を設定します(例: フリート自身の http://searxng.arpa)— 明示的な URL は常に組み込みインスタンスより優先されます。

SEARXNG_URL

—

SEARXNG_USERNAME

—

SEARXNG_PASSWORD

secret-injected

USE_RANDOM_INSTANCE

false

SEARXNG_KG_INGEST

true

SEARXNG_EMBEDDED

true

ゼロ設定の自己完結型検索: SEARXNG_URL/SEARXNG_INSTANCE_URL が未設定の場合、この MCP サーバーが所有するプライベートなループバック専用 SearXNG インスタンスを起動して使用します(searxng-mcp[embedded] エクストラが必要です。これがない場合は暗黙的に何も行いません)。

XDG_CONFIG_HOME

—

組み込みインスタンスのユーザー編集可能な settings.yml オーバーライドが置かれる場所: $XDG_CONFIG_HOME/searxng-mcp/settings.yml。デフォルトは ~/.config です。

継承された agent-utilities 変数(すべてのコネクタに適用)

変数

例

説明

MCP_TOOL_MODE

intent

ツールサーフェス: intent | condensed | verbose | both

MCP_ENABLED_TOOLS

—

カンマ区切りのツール許可リスト

MCP_DISABLED_TOOLS

—

カンマ区切りのツール拒否リスト

MCP_ENABLED_TAGS

—

カンマ区切りのタグ許可リスト

MCP_DISABLED_TAGS

—

カンマ区切りのタグ拒否リスト

MCP_CLIENT_AUTH

—

送信 MCP 子認証: oidc-client-credentials | basic | none

OIDC_CLIENT_ID

—

OIDC クライアント ID(サービスアカウント認証)

OIDC_CLIENT_SECRET_REF

secret://identity/oidc-client-secret

OIDC サービスアカウント用のランタイムシークレット参照

MCP_BASIC_AUTH_USERNAME

—

HTTP Basic ユーザー名(MCP_CLIENT_AUTH=basic)

MCP_BASIC_AUTH_PASSWORD_REF

secret://identity/mcp-basic-password

HTTP Basic 認証用のランタイムシークレット参照(MCP_CLIENT_AUTH=basic)

DEBUG

False

詳細なログ出力

PYTHONUNBUFFERED

1

バッファリングなしの標準出力(コンテナ内で推奨)

MCP_URL

http://localhost:8000/mcp

エージェントが接続する MCP サーバーの URL

PROVIDER

openai

エージェント用の LLM プロバイダー

MODEL_ID

gpt-4o

エージェント用のモデル ID

ENABLE_WEB_UI

True

AG-UI Web インターフェースを提供

20 パッケージ変数 + 16 継承変数。.env.example と共有 agent-utilities セットから自動生成 — 編集しないでください。

サーバーが読み取るすべての変数。コピー&ペースト用の出発点として .env.example を参照してください。

SearXNG 接続

変数

説明

デフォルト

SEARXNG_URL

クエリ対象となるSearXNGインスタンスのベースURL

http://localhost:8080

SEARXNG_INSTANCE_URL

明示的なインスタンスURLの上書き

—

SEARXNG_USERNAME

SearXNGインスタンスのBasic認証ユーザー名(保護されている場合)

—

SEARXNG_PASSWORD

SearXNGインスタンスのBasic認証パスワード(保護されている場合)

—

USE_RANDOM_INSTANCE

SEARXNG_URLの代わりにランダムな公開SearXNGインスタンスを選択する

false

SEARXNG_KG_INGEST

各検索結果を設定済みのフル知識グラフエンジンにネイティブに取り込む。失敗は明示的に扱う

true

SEARXNG_EMBEDDED

ゼロ設定の自己完結型検索。SEARXNG_URL/SEARXNG_INSTANCE_URLが未設定の場合、このサーバーが所有するプライベートでループバック専用のSearXNGインスタンスを起動して使用する(pip install searxng-mcp[embedded]が必要。その追加インストールがない場合は黙って何もしない)

true

MCPサーバー / トランスポート

変数

説明

デフォルト

TRANSPORT

stdio、streamable-http、またはsse

stdio

HOST

バインドホスト(HTTPトランスポート)

0.0.0.0

PORT

バインドポート(HTTPトランスポート)

8000

MCP_TOOL_MODE

ツールサーフェス:condensed、verbose、またはboth

condensed

MCP_ENABLED_TOOLS / MCP_DISABLED_TOOLS

カンマ区切りのツール許可/拒否リスト

—

MCP_ENABLED_TAGS / MCP_DISABLED_TAGS

カンマ区切りのタグ許可/拒否リスト

—

テレメトリとガバナンス

変数

説明

デフォルト

ENABLE_OTEL

OpenTelemetryエクスポートを有効にする

True

OTEL_EXPORTER_OTLP_ENDPOINT

OTLPコレクターエンドポイント

—

OTEL_EXPORTER_OTLP_PUBLIC_KEY / OTEL_EXPORTER_OTLP_SECRET_KEY

OTLP認証キー

—

OTEL_EXPORTER_OTLP_PROTOCOL

OTLPプロトコル(例:http/protobuf)

—

EUNOMIA_TYPE

認可モード:none、embedded、remote

none

EUNOMIA_POLICY_FILE

組み込みポリシーファイル

mcp_policies.json

EUNOMIA_REMOTE_URL

リモートEunomiaサーバーURL

—


インストール

実行したい内容に一致するエクストラを選択してください:

エクストラ

インストール内容

使用する場合

searxng-mcp[mcp]

コネクタ中心のMCPサーバー(agent-utilities[mcp] — FastMCP/FastAPI + epistemic-graph[full])

MCPサーバーのみを実行する場合(最小インストール/イメージ)

searxng-mcp[agent]

エージェントランタイム(agent-utilities[agent-runtime,logfire] — モデルオーケストレーション + epistemic-graph[full])

統合エージェントを実行する場合

searxng-mcp[all]

すべて(mcp + agent + logfire)

開発 / 両方のサーフェス

# 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]"

コンテナイメージ(:mcp と :agent)

1つのマルチステージdocker/Dockerfileが、--targetで選択される2つの適切なサイズのイメージを構築します:

イメージタグ

ビルドターゲット

内容

エントリポイント

example/searxng-mcp:mcp

--target mcp

searxng-mcp[mcp] — コネクタ中心、epistemic-graph[full]を含む。モデルオーケストレーションスタックなし

searxng-mcp

example/searxng-mcp@sha256:<digest>

--target agent(デフォルト)

searxng-mcp[agent] — エージェントランタイム、モデルオーケストレーション + 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はコネクタ中心の:mcpサーバーを実行し、docker/agent.compose.ymlは エージェント(immutable agent digest)を、同じ場所に配置された:mcpサイドカーとともに実行します。

知識グラフデータベース(epistemic-graph)

[mcp]と[agent]の両方が、必須のAgent Utilitiesコア依存関係(epistemic-graph[full])を通じてepistemic-graphエンジンを搭載しています。[mcp]エクストラは サーバーをコネクタ中心に保ち、[agent]はさらにモデルオーケストレーションを有効にします。ローカル デプロイメントではバンドルされたエンジンを使用できます。本番環境や共有状態の場合は、 epistemic-graphを専用のデータベースサービスとして実行し、ランタイムがそれを使用するように設定してください。 デプロイメントレシピ(シングルノード + Raft HA)、接続設定、アーキテクチャ 図は、 epistemic-graphデプロイメントガイドに文書化されています。


ドキュメント

完全なドキュメントは 公式ドキュメントサイトとして公開されており、 インストール、デプロイ、日常運用の推奨リファレンスです。

ページ

内容

インストール

pip、ソース、エクストラ、ビルド済みDockerイメージ

デプロイ

MCPサーバーとエージェントサーバーの実行、Compose、Caddy + Technitium、env設定

使用方法

web_searchツール、Python API、コンソールスクリプト

バッキングプラットフォーム

DockerでSearXNGをデプロイ

概要

エコシステムでの役割と標準化されたパッケージパターン

概念

概念レジストリ(CONCEPT:SRX-*)

AGENTS.mdは正規のコントリビューター/エージェント向けガイダンスです。


リポジトリオーナー

GitHub followers GitHub User's stars


コントリビュート

コントリビューションを歓迎します!プルリクエストを提出する前に、ローカルチェックを実行してコード品質を確保してください:

  • ruff format .でコードをフォーマット

  • ruff check .でコードをリント

  • mypy .で型安全性を検証

  • pytestでテストスイートを実行

agent-utilities-deploymentでデプロイ

このパッケージを統合された**agent-utilities-deployment** ワークフローでプロビジョニングします。インストール済みパッケージ、編集可能なソース、またはイミュータブルコンテナの パスを選択し、AgentConfigにはランタイムのシークレットとTLSプロファイル参照のみを記録し、 ドクター、登録、ポリシー、オブザーバビリティ、ロールバックのゲートを実行します。エージェントに "agent-utilities-deploymentでsearxng-mcpをデプロイ" と依頼してください。

インストールモード

コマンド

インストール済みパッケージ

uv tool install "searxng-mcp[mcp]"、その後searxng-mcpを実行

編集可能なソース

uv pip install -e ".[agent]"、その後searxng-mcpを実行

イミュータブルコンテナ

オペレーターが選択したオーケストレーターを通じてregistry.example.invalid/searxng-mcp@sha256:<digest>をデプロイ

リポジトリにはデプロイプロファイル、資格情報値、証明書パス、または 環境固有のエンドポイントは埋め込まれていません。これらはランタイムにAgentConfigと 設定されたシークレットプロバイダーを通じて提供してください。

ガバナンス対象の機能契約

このパッケージは、専門的な手順を参照ワークフローとして保持した、コンパクトな正規のスキルサーフェスを提供します。現在のMCPツール、スキルメタデータ、 connector_manifest.yml、オントロジー、マッピング、シェイプ、フィクスチャ、マイグレーション、 ツールスキーマフィンガープリント、および認証メタデータは、1つのバージョン管理された 機能契約を形成します。これらを一緒に検証してください。古いツール名や 過去のタスク別スキルラッパーに依存しないでください。

ランタイムエンドポイント、認証情報、証明書の信頼、テナントのID、保持期間、 および可観測性ポリシーはデプロイメント入力であり、パッケージ化された値になることはありません。 構成、信頼、プライバシー を有効にする前に、ネットワークトランスポート、コネクタの取り込み、GraphOS 委任、またはトレースのエクスポートを参照してください。

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.
    171 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
    171 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
    171 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
    -