SearxNG MCP サーバー
SearxNG を使用して Web 検索機能を提供し、Claude などの AI アシスタントによる Web 検索を可能にするモデル コンテキスト プロトコル (MCP) サーバー。
人間の監督の下で AI によって作成されました。人工知能であっても、コーヒー休憩を取るタイミングを誰かに指示してもらう必要がある場合があるからです。🤖☕
概要
このプロジェクトは、プライバシーを尊重するメタ検索エンジンであるSearxNGに接続するMCPサーバーを実装します。このサーバーは、大規模言語モデルがユーザーを追跡することなくWebを検索するためのシンプルで効率的な方法を提供します。
このサーバーはLLM向けに特別に設計されており、コンテキストウィンドウの使用を最小限に抑えるために必要不可欠な機能のみを搭載しています。この合理化されたアプローチにより、LLMと検索エンジン間の通信が効率的になり、貴重なコンテキスト空間をより重要な情報のために確保できます。
特徴
SearxNGによるプライバシー重視のウェブ検索
LLM統合のためのシンプルなAPI
Claude Desktopおよびその他のMCP準拠クライアントと互換性があります
設定可能な検索パラメータ
LLM 向けに最適化された、整理された検索結果
Related MCP server: MCP SearxNG Search
MCP互換アプリケーションとの統合
統合例
pipx run を使用する(推奨、インストールは不要)
ホームディレクトリに.claudercファイルを作成します。
uvx run を使用する(インストールは不要)
pip で Python を使用する (インストールが必要)
Docker での使用 (インストール不要)
注意: MCP サーバーで Docker を使用する場合:
envオブジェクトは Docker コンテナに適切に渡されないため、環境変数はargs配列の-eフラグを使用して直接渡す必要があります。ローカルホスト(例: http://localhost:8080 )で実行されているSearxNGインスタンスにアクセスする必要がある場合は、コンテナがホストのネットワークにアクセスできるように、
--network=hostフラグを使用する必要があります。そうしないと、コンテナ内の「localhost」はホストマシンではなく、コンテナ自体を参照することになります。--network=hostを使用する場合、コンテナはホストのネットワーク スタックを直接共有するため、ポート マッピング (-p) は必要なく、無視されます。
構成
環境変数を使用してサーバーを構成します。
環境変数 | 説明 | デフォルト値 |
SEARXNG_MCP_SEARXNG_URL | 使用するSearxNGインスタンスのURL | |
SEARXNG_MCP_TIMEOUT | HTTPリクエストのタイムアウト(秒) | 10 |
SEARXNG_MCP_DEFAULT_RESULT_COUNT | 返される結果のデフォルトの数 | 10 |
SEARXNG_MCP_DEFAULT_LANGUAGE | 結果の言語コード(例:「en」、「ru」、「all」) | 全て |
SEARXNG_MCP_DEFAULT_FORMAT | 結果のデフォルト形式('text'、'json') | 文章 |
SEARXNG_MCP_ログ_レベル | ログレベル(例:「DEBUG」、「INFO」、「WARNING」、「ERROR」、「CRITICAL」) | エラー |
トランスポートプロトコル | トランスポートプロトコル('stdio' または 'sse') | 標準入出力 |
**注意:**ログ レベルを ERROR よりも高く設定すると (DEBUG や INFO など)、通信チャネルでの出力が過剰になり、一部のアプリケーションとの統合が壊れる可能性があります。
独自にホストしたくない場合は、 https://searx.spaceで公開されている SearxNG インスタンスのリストを見つけることができます。
インストールと使用方法
前提条件
Python 3.10以上
SearxNG インスタンス (パブリックまたはセルフホスト)
オプション 1: インストールせずに実行 (推奨)
このサーバーを使用する最も簡単な方法は、pipx または uvx を使用することです。これにより、パッケージを永続的にインストールせずに実行できます。
設定オプションを直接渡すことができます:
オプション2: PyPIまたはソースからインストールする
より永続的なインストールの場合:
インストール後、次のコマンドでサーバーを実行できます。
オプション3: Docker
Docker を使用する場合:
Docker の完全な使用方法については、以下のDocker 構成セクションを参照してください。
トランスポートプロトコル
MCP サーバーは、次の 2 つのトランスポート プロトコルをサポートしています。
STDIO (デフォルト): CLIアプリケーションおよび直接統合用
すべての例でデフォルトで使用される
Claude Desktop やその他の MCP 準拠クライアントとの統合に適しています
HTTPサーバーが起動されていません
SSE (Server-Sent Events): WebベースのクライアントとHTTPベースの統合向け
クライアントが接続できるHTTPサーバーを起動します
リアルタイム更新が必要なWebアプリケーションやサービスに役立ちます
Dockerを使用する場合はポートマッピングが必要です
SSEトランスポートの使用
SSE トランスポート プロトコルを使用するには:
直接実行の場合:
# Set the transport protocol to SSE TRANSPORT_PROTOCOL=sse python -m searxng_simple_mcp.server # Or with FastMCP fastmcp run src/searxng_simple_mcp/server.py --transport sseDockerを使用する場合:
# Run with SSE transport protocol docker run -p 8000:8000 -e TRANSPORT_PROTOCOL=sse -e SEARXNG_MCP_SEARXNG_URL=https://your-instance.example.com ghcr.io/sacode/searxng-simple-mcp:latestDocker Compose を使用する場合(付属の
docker-compose.ymlから):environment: - SEARXNG_MCP_SEARXNG_URL=https://searx.info - SEARXNG_MCP_TIMEOUT=10 - SEARXNG_MCP_MAX_RESULTS=20 - SEARXNG_MCP_LANGUAGE=all - TRANSPORT_PROTOCOL=sse # Transport protocol: stdio or sse
SSE を使用する場合、デフォルトではhttp://localhost:8000で HTTP 経由でサーバーにアクセスできるようになります。
MCP クライアントから SSE サーバーに接続するには、次のような構成を使用します。
**注:**すべてのアプリケーションがSSEトランスポートプロトコルをサポートしているわけではありません。このトランスポート方式を使用する前に、MCPクライアントがSSEと互換性があることを確認してください。
発達
開発とテストの場合:
PyPIへの公開
パッケージの新しいバージョンを PyPI に公開する必要があるメンテナーの場合:
これらのコマンドは次のことを行います。
package.json と pyproject.toml の両方のバージョンを更新します。
distディレクトリをクリーンアップして古いビルドを削除します
パッケージをビルドする(ホイールとソース配布物を作成する)
パッケージにエラーがないか確認する
パッケージをPyPIにアップロードする
PyPIアカウントとtwineによる認証が必要です。認証は以下の方法で設定できます。
ホームディレクトリに
.pypircファイルを作成する環境変数の使用(
TWINE_USERNAMEとTWINE_PASSWORD)PyPI APIトークンの使用(推奨)
Dockerの設定
MCP サーバーで Docker を使用する場合は、次の点に注意してください。
MCP クライアントとの統合: Claude Desktop またはその他の MCP 準拠クライアントと統合するには、「Docker での使用」セクションに示されている構成を使用します。
トランスポートプロトコル:
デフォルトでは、Dockerコンテナはstdioトランスポートプロトコルを使用します。
SSEトランスポートについては、 「SSEトランスポートの使用」セクションを参照してください。
設定オプション:
環境ファイル (.env) を使用してサーバーを構成します:
docker run --env-file .env ...-eフラグを使用して個々の環境変数を渡します:docker run -e SEARXNG_MCP_SEARXNG_URL=https://example.com ...利用可能な環境変数については、構成セクションを参照してください。
ネットワーキング:
ホストマシン上のサービスにアクセスする必要がある場合は
--network=hostを使用します。SSEサーバーをネットワークに公開する場合は
-p 8000:8000を使用します。
パッケージ構造
貢献
貢献を歓迎します!お気軽にプルリクエストを送信してください。
ライセンス
このプロジェクトは MIT ライセンスに基づいてライセンスされています - 詳細については LICENSE ファイルを参照してください。