SearXNG について
SearXNG MCP Serverは、設定可能なSearXNGインスタンスを通じて、AIエージェントにプライバシーに配慮したウェブ検索を提供します。検索条件を指定でき、stdioとStreamable HTTPに対応します。
主な機能
- 01複数の検索エンジンで検索
- 02カテゴリと言語による絞り込み
- 03期間と結果数の指定
- 04SearXNGインスタンスの選択
- 05stdioとStreamable HTTPに対応
活用シーン
- 01調査用のウェブ検索
- 02カテゴリを指定した画像やニュースの検索
- 03言語や期間を限定した検索
MCP 対応
MCPクライアントに`web_search`ツールを提供し、設定されたSearXNGインスタンスへ検索を転送します。ローカルのstdioとリモートのStreamable HTTPに対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
1掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| query | string | はい | 検索クエリ文字列 |
| engines | array | いいえ | 検索エンジン(例:['google', 'bing', 'duckduckgo']) |
| language | string | いいえ | 検索言語コード(デフォルトは 'en') |
| categories | array | いいえ | 検索カテゴリ(例:['general', 'images', 'news']) |
| time_range | enum | いいえ | 期間フィルターday | month | week | year |
| max_results | integer | いいえ | 返す結果の最大数(デフォルト 10) |
詳細
SearXNG MCP サーバー
SearXNG メタ検索エンジンを使用して、AI エージェントにプライバシーに配慮したウェブ検索機能を提供する Model Context Protocol(MCP)サーバーです。
特長
このサーバーでは、次の主な機能を利用できます。
- 複数の検索エンジンを使ったウェブ検索
- さまざまな検索カテゴリに対応(一般、画像、ニュースなど)
- 検索エンジンの選択をカスタマイズ可能
- 言語フィルタリング
- 期間フィルタリング
- 検索結果の件数を指定可能
利用可能なツール
web_search- SearXNG を使用してウェブ検索を実行します- 必須パラメーター:
query(string):検索クエリ
- 任意のパラメーター:
categories(array):検索カテゴリ。例:['general', 'images', 'news']engines(array):検索エンジン。例:['google', 'bing', 'duckduckgo']language(string):検索言語コード。デフォルトは "en" ですmax_results(integer):結果の最大件数。デフォルトは 10(1~100)ですtime_range(string):期間フィルター('day'、'week'、'month'、'year')
- 必須パラメーター:
検索を完了できない場合(インスタンスに接続できない、リクエストがレート制限される、または不正な形式の応答が返される場合)、空の結果リストではなく、失敗の内容を示すエラー結果をツールが返します。
検索制限
各サーバープロセスで同時に実行できる検索は最大 8 件です。それを超える呼び出しは直ちにエラーを返し、後で再試行できます。--timeout は、応答のストリーミングを含むネットワーク操作全体の時間を制限します。キャンセルすると、進行中のリクエストが閉じられます。JSON の解析前に、応答サイズは 2 MiB に制限されます。
設定されたインスタンスは /search を直接提供する必要があります。リダイレクトは拒否されます。クライアントは Accept-Encoding: identity をリクエストし、制限のない解凍を防ぐため、圧縮された応答を拒否します。結果フィールドも、それぞれの既定の上限に切り詰められます。results がない場合やリスト以外の場合、および上流のエラーオブジェクトは失敗として報告されます。一方、有効な空のリストは検索成功として扱われます。
アプリケーションログには検索クエリや上流の例外テキストは記録されません。--log-level=DEBUG を選択しても、CLI は HTTP 依存関係のログレベルを WARNING に維持します。
プライバシーポリシー
このソフトウェアはホスト型検索サービスを運営しておらず、検索クエリをメンテナーに送信することもありません。ユーザーのデバイスまたはインフラストラクチャ上で実行され、各クエリ、選択した検索エンジン、カテゴリ、言語、期間、およびセーフサーチ設定を、設定された SearXNG インスタンスに直接送信します。検索結果は、接続されている MCP クライアントに返されます。
このソフトウェアはクエリや結果を保存せず、分析や広告のトラッカーを使用せず、ユーザープロファイルを作成せず、メンテナーとデータを共有しません。運用ログには結果の件数とエラーが記録されますが、クエリのテキストや上流の例外の詳細は記録されません。メモリ上のリクエストデータと結果データは、リクエストの処理後に破棄されます。
選択した SearXNG インスタンスと、そのインスタンスが接続する検索エンジンは、それぞれ独立した第三者です。データの収集、使用、共有、保持は、各自のプライバシーポリシーに従います。機密性の高いクエリを送信する前に、選択したインスタンスのプライバシーに関する告知を確認するか、信頼できるインスタンスを運用してください。CLI の既定のインスタンスは https://searx.party です。ポリシーは https://searx.party/info/en/privacy にあります。
プライバシーに関する質問やリクエストは、https://github.com/danchev/searXNG/issues から送信できます。
コマンドラインオプション
| オプション | デフォルト | 説明 |
|---|---|---|
--instance-url | https://searx.party | SearXNG インスタンスのベース URL です。絶対 URL である必要があり、認証情報、クエリ文字列、フラグメントを含めることはできません。 |
--timeout | 30 | 検索ネットワークの合計タイムアウト時間(秒)です。 |
--log-level | WARNING | ログの詳細度です。DEBUG、INFO、WARNING、ERROR、CRITICAL を指定できます。ログは stderr に出力されます。 |
--transport | stdio | 使用するトランスポートです。stdio または http を指定できます。 |
--host | 127.0.0.1 | --transport=http の場合にバインドするホストです。 |
--port | 8000 | --transport=http の場合にバインドするポートです。 |
--header | None | 検索リクエストに付加するカスタム HTTP ヘッダーです(例:X-Forwarded-For: 1.2.3.4)。複数回指定できます。 |
Docker / Kubernetes
GitHub Container Registry で公開されている公式コンテナーイメージを使用すると、サーバーを簡単に実行できます。
docker run -p 8000:8000 ghcr.io/danchev/searxng:latest \
--transport http \
--host 0.0.0.0 \
--instance-url=https://searx.party \
--header "Authorization: Bearer my-secret-token"
トランスポート
デフォルトでは、サーバーは stdio で通信します。ローカル MCP クライアント(Claude Desktop、IDE 統合、uvx)は、この方式でサーバーを起動します。
リモートアクセスの場合、--transport http を指定すると、/mcp で Streamable HTTP トランスポートを提供します。
searxng --transport http --host 127.0.0.1 --port 8000
# endpoint: http://127.0.0.1:8000/mcp
従来の SSE トランスポートは意図的に実装されていません。2025-03-26 の MCP プロトコル改訂で Streamable HTTP に置き換えられたため、新しいデプロイでは使用しないでください。
**セキュリティ:**サーバーは認証を行わないため、デフォルトでは 127.0.0.1 にバインドします。信頼できるネットワークでのみ --host 0.0.0.0 を指定するか、認証を行うリバースプロキシの背後に配置してください。
ループバック以外のホストにバインドすると、MCP SDK の DNS リバインディング保護も無効になります。この保護を自動的に有効にできるのは、127.0.0.1、localhost、::1 の場合のみです。ループバックにバインドした場合、偽装された Host ヘッダーは 421 Misdirected Request で拒否されます。パブリックホストにバインドした場合は、どの Host でも受け入れられます。この条件に該当する場合、サーバーは起動時に警告をログに記録します。
使用例
MCP サービスとして設定する
SearXNG を MCP サーバーとして設定するには、次のいずれかを MCP 設定ファイルに追加します。
UVX の設定:
"mcpServers": {
"searxng": {
"command": "uvx",
"args": ["searxng", "--instance-url=https://searx.party"]
}
}
Docker の設定(ローカル stdio):
"mcpServers": {
"searxng": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/danchev/searxng:latest",
"--instance-url=https://searx.party"
]
}
}
これにより、サーバーは stdio 経由で起動します。ローカルクライアントにはこの方法が適しています。
リモート設定(Streamable HTTP):
サーバーを長時間実行するプロセスとして起動します。
searxng --transport http --host 0.0.0.0 --port 8000 \
--instance-url=https://searx.party
次に、クライアントの接続先として /mcp エンドポイントを指定します。
"mcpServers": {
"searxng": {
"url": "http://your-host:8000/mcp"
}
}
ほかのマシンからの接続を受け入れるには --host 0.0.0.0 が必要です。また、前述のセキュリティ上の注意点にも留意してください。サーバーは認証を行わないため、信頼できるネットワークに制限するか、認証を行うリバースプロキシの背後に配置してください。
実行例
{
"name": "web_search",
"arguments": {
"query": "climate change research",
"categories": ["general"],
"engines": ["google"],
"language": "en",
"max_results": 15,
"time_range": "month"
}
}
デバッグ
MCP Inspector を使用してサーバーをデバッグできます。
npx @modelcontextprotocol/inspector uvx searxng
ライセンス
AGPLv3+ ライセンス。詳細は LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。