mcp-searxng について
mcp-searxngはSearXNGのメタ検索とウェブページのMarkdown抽出を組み合わせ、AIエージェントに外部情報の検索・閲覧機能を提供します。SSE方式のMCPサーバーの構築と接続方法も示します。
主な機能
- 01SearXNG経由のウェブ検索
- 02ページ取得とMarkdown抽出
- 03SSEによる接続
- 04Docker Composeでサービスを起動
活用シーン
- 01外部サイトから新しい情報を検索
- 02エージェント用にウェブページを取得
- 03MCPサーバーとクライアントを分離して配置
MCP 対応
SSE方式のMCPサーバーで、ウェブ検索用の`web_search`とページ取得用の`web_url_read`ツールを公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細

mcp-searxng
AI エージェントが利用する MCP サーバーの例です。SearXNG のオープンソースのメタ検索エンジンを通じて、AI エージェントが新しい外部情報を検索できるように設計されています。
現在、Google 以外にも多くの検索エンジンが登場しており、Google が不得意とする分野で市場シェアを獲得しようとしています。たとえば、DuckDuckGo はユーザーを追跡しないことを重視し、Ecosia は検索のたびに木を植え、Brave Search はみんなの力を結集して無料の検索エンジンを構築することを目指しています。
しかし、これらのエンジンが返す検索結果には、満足できないことがよくあります。第一に、Google ほど多くのウェブページをクロールしていません。第二に、中国語への対応が不十分です。Google には表示されない興味深いページにアクセスできる場合もありますが、Google 以外の検索エンジンは、依然として使い勝手がかなり劣ります。
それなら、複数の検索エンジンの結果を組み合わせてみてはどうでしょうか!?まさにそれを実現するのがメタ検索エンジンです。オープンソースのメタ検索エンジンソフトウェアである SearXNG は、セルフホストすることも、熱心なコミュニティメンバーが提供するサイト経由で利用することもできます。企業にとって、SearXNG はプライバシーとセキュリティを管理しながら、AI エージェントが必要な外部データを効率よく検索できる手段となります。
参考資料:
目的
この MCP サーバーは、SSE ベースの MCP サーバー(SearXNG と Microsoft の markdownify を統合し、ウェブページを Markdown 形式のテキストに抽出)と、MCP Inspector(MCP クライアント)を使用したその動作モードを紹介します。
実行環境
このプロジェクトでは、依存関係と Python 実行環境の管理に uv を使用します。uv がまだインストールされていない場合は、公式ウェブサイトのインストール手順に従ってください。
以下のコマンドは Ubuntu 24.04 環境で実行します。ほかのオペレーティングシステムでは、適宜調整してください。
$ curl -LsSf https://astral.sh/uv/install.sh | sh
ソースコードをダウンロードします:
$ git clone https://github.com/erhwenkuo/mcp-searxng.git
$ cd mcp-searxng
$ uv sync
サービスの実行
Docker Compose で両方のサービスを実行する
簡単にセットアップするには、ルートディレクトリにある docker-compose.yaml ファイルを使用して、SearXNG サービスと MCP-SEARXNG サービスを同時に実行できます。この方法では、2 つのサービス間のネットワーク設定が自動的に行われます。mcp-searxng を最も手早くセットアップする方法です。
まず、プロジェクトのルートディレクトリにいることを確認します:
$ cd /path/to/mcp-searxng
次に、Docker Compose で両方のサービスをビルドして起動します:
$ docker compose build
$ docker compose up -d
実行中のコンテナの状態を確認します:
$ docker compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
mcp-searxng mcp-searxng-mcp "uv run server.py" mcp About a minute ago Up 50 seconds 0.0.0.0:5488->5488/tcp, [::]:5488->5488/tcp
searxng docker.io/searxng/searxng:latest "/usr/local/searxng/…" searxng About an hour ago Up 11 minutes 0.0.0.0:8888->8080/tcp, [::]:8888->8080/tcp
両方のサービスが起動しました:
- SearXNG:
http://localhost:8888からアクセスできます - MCP-SEARXNG:
http://localhost:5488からアクセスできます
サービスを停止するには:
$ docker compose down
SearXNG サービスの実行
まず、実行するマシンに Docker をインストールし、関連する設定を行います。詳しくは、Ubuntu への Docker Engine のインストールを参照してください。
プロジェクトディレクトリには、テストを容易にするため、事前設定済みのシンプルな SearXNG 環境が用意されています。
mcp-searxng/searxng-docker/
├── docker-compose.yaml
└── searxng
├── settings.yml
└── uwsgi.ini
searxng-docker ディレクトリに移動し、Docker Compose で SearXNG サービスを起動します:
$ cd searxng-docker
$ docker compose up -d
$ docker compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
searxng docker.io/searxng/searxng:latest "/sbin/tini -- /usr/…" searxng 29 minutes ago Up 29 minutes (healthy) 0.0.0.0:8888->8080
テスト用の SearXNG サービスは、ローカルマシンの port: 8888 に割り当てられています。
MCP-SEARXNG サービスの起動
方法 1. uv を使用して起動する:
以下のコマンドを入力して起動します:
$ uv run server.py --searxng_url="http://localhost:8888"
INFO: Started server process [219904]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:5488 (Press CTRL+C to quit)
Docker を使用した起動
まず、Docker イメージをビルドします。
$ docker build -t mcp-searxng .
mcp-searxng を起動します。mcp-searxng サービスは Docker を使用して起動するため、SearXNG への接続を設定する際に、SearXNG サービスのアドレスとして localhost を指定することはできません。ローカルマシンの IP アドレスを直接確認し、SEARXNG_URL 環境変数で設定することをおすすめします。
以下の起動パラメーターでは、ローカルマシンの IP アドレスが 192.168.54.88 であることを前提としています。
$ docker run -d -e SEARXNG_URL="http://192.168.54.88:8888" -p 5488:5488 mcp-searxng
結果の確認
まず、Node.js をインストールします。
# Download and install nvm:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.2/install.sh | bash
# In lieu of restarting the shell
\. "$HOME/.nvm/nvm.sh"
# Download and install Node.js:
nvm install 22
# Verify the Node.js version:
node -v # Should print "v22.14.0".
nvm current # Should print "v22.14.0".
# Verify npm version:
npm -v # Should print "10.9.2".
次に、MCP Inspector を起動します。
$ npx @modelcontextprotocol/inspector
Starting MCP inspector...
Proxy server listening on port 3000
🔍 MCP Inspector is up and running at http://localhost:5173 🚀
ブラウザーで http://localhost:5173 を開き、以下の操作を行います。
- Transport Type のドロップダウンで
SSEを選択します。 - URL フィールドに MCP サーバーのアドレスとポートを入力します:
http://localhost:5488/sse。 Connectをクリックします。ステータスに「Connected」と表示されれば、MCP サーバーへの接続は成功です。- 上部の「Tools」タブをクリックします。
- 「List Tools」ボタンをクリックすると、次の 2 つのツールが表示されます。
web_searchweb_url_read
web_searchをクリックします。右側にツールの説明とパラメーターが表示されます。query入力フィールドに検索キーワードを入力し、「Run Tool」ボタンをクリックします。
実行結果は以下の画像のとおりです。

web_url_read をテストします。
web_url_readをクリックします。右側にツールの説明とパラメーターが表示されます。取得したいウェブページの URL をurl入力フィールドに入力し、「Run Tool」ボタンをクリックします。

SSE を使用する理由
つまり、MCP サーバーはリモートで実行されるプロセスにでき、AI エージェント(クライアント)はいつでも、どこからでも接続して使用し、切断できます。言い換えると、SSE ベースのサーバーとクライアントは、分離されたプロセス(場合によっては分離されたノード上で実行されるプロセス)にできます。
クライアントがサブプロセスとしてサーバーを起動する STDIO ベースのモデルとは異なり、こちらの方式は「クラウドネイティブ」なユースケースにより適しています。
MCP サーバー
server.py は SSE ベースの MCP サーバーです。デフォルトでは、サーバーは 0.0.0.0:5488 で実行されますが、次のようにコマンドライン引数で設定できます。
uv run server.py --host <your host> --port <your port>
起動パラメーター:
| パラメーター | 必須 | デフォルト | 型 | 説明 |
|---|---|---|---|---|
--host | いいえ | 0.0.0.0 | str | バインドするホスト |
--port | いいえ | 5488 | int | リッスンするポート |
--searxng_url | いいえ | http://localhost:8888 | str | 接続する SearXNG の URL |
任意の MCP 設定ファイルに追加するには、以下を使用します。
{
"mcpServers": {
"searxng": {
"url": "http://localhost:5488/sse"
}
}
}
localhost:5488 を、mcp-searxng インスタンスが配置されているアドレスに置き換えてください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。