mcpField
M
mcp-searxng

mcp-searxng

ローカル
github.com/erhwenkuo検索1128 週間前に更新

mcp-searxng について

mcp-searxngはSearXNGのメタ検索とウェブページのMarkdown抽出を組み合わせ、AIエージェントに外部情報の検索・閲覧機能を提供します。SSE方式のMCPサーバーの構築と接続方法も示します。

主な機能

  1. 01SearXNG経由のウェブ検索
  2. 02ページ取得とMarkdown抽出
  3. 03SSEによる接続
  4. 04Docker Composeでサービスを起動

活用シーン

  1. 01外部サイトから新しい情報を検索
  2. 02エージェント用にウェブページを取得
  3. 03MCPサーバーとクライアントを分離して配置

MCP 対応

SSE方式のMCPサーバーで、ウェブ検索用の`web_search`とページ取得用の`web_url_read`ツールを公開します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"searxng-erhwenkuo": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"compose"
]
}
}
}
起動コマンドdocker run -i --rm compose

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
ocicompose

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

README の画像

mcp-searxng

英語版 README 繁体字中国語のドキュメント

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 を開き、以下の操作を行います。

  1. Transport Type のドロップダウンで SSE を選択します。
  2. URL フィールドに MCP サーバーのアドレスとポートを入力します:http://localhost:5488/sse。
  3. Connect をクリックします。ステータスに「Connected」と表示されれば、MCP サーバーへの接続は成功です。
  4. 上部の「Tools」タブをクリックします。
  5. 「List Tools」ボタンをクリックすると、次の 2 つのツールが表示されます。
    • web_search
    • web_url_read
  6. web_search をクリックします。右側にツールの説明とパラメーターが表示されます。query 入力フィールドに検索キーワードを入力し、「Run Tool」ボタンをクリックします。

実行結果は以下の画像のとおりです。

README の画像

web_url_read をテストします。

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

README の画像

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.0strバインドするホスト
--portいいえ5488intリッスンするポート
--searxng_urlいいえhttp://localhost:8888str接続する SearXNG の URL

任意の MCP 設定ファイルに追加するには、以下を使用します。

{
  "mcpServers": {
    "searxng": {
      "url": "http://localhost:5488/sse"
    }
  }
}

localhost:5488 を、mcp-searxng インスタンスが配置されているアドレスに置き換えてください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。