Integrations
Allows containerized deployment with configurable environment variables and persistent configuration between container restarts.
Provides optional Markdown embedding for image results when using the images search category.
Uses Pydantic for data validation and settings management in the server implementation.
MCP SearXNG拡張サーバー
カテゴリ認識型ウェブ検索、ウェブサイトスクレイピング、日時ツールのためのモデルコンテキストプロトコル(MCP)サーバー。SearXNGおよび最新のMCPクライアントとのシームレスな統合を実現するように設計されています。
特徴
- 🔍 カテゴリサポート付きの SearXNG 搭載ウェブ検索 (一般、画像、動画、ファイル、地図、ソーシャルメディア)
- 📄 引用メタデータと自動 Reddit URL 変換によるウェブサイトコンテンツのスクレイピング
- 💾 自動鮮度検証機能を備えたメモリ内キャッシュ
- 🚦 サービスの不正使用を防ぐためのドメインベースのレート制限
- 🕒 タイムゾーンを考慮した日付/時刻ツール
- ⚠️ カスタム例外タイプによる堅牢なエラー処理
- 🐳 Docker化されており、環境変数で設定可能
- ⚙️ コンテナの再起動間での構成の永続化
クイックスタート
前提条件
- システムにDockerがインストールされている
- 実行中の SearXNG インスタンス (セルフホストまたはアクセス可能なエンドポイント)
インストールと使用方法
Docker イメージをビルドします。
SearXNG インスタンスで実行します (手動 Docker 実行):
この例では、 SEARXNG_ENGINE_API_BASE_URL
が明示的に設定されています。DESIRED_TIMEZONE もAmerica/New_York
に明示的に設定されており、これはデフォルト値と一致します。docker docker run
コマンド中に-e
フラグを使用DESIRED_TIMEZONE
て環境変数が指定されていない場合、サーバーはDockerfile
で定義されたデフォルト値を自動的に使用します(以下の環境変数の表を参照)。したがって、 DESIRED_TIMEZONE
にデフォルト値を使用する場合は、 -e DESIRED_TIMEZONE="America/New_York"
フラグを省略できます。ただし、 SEARXNG_ENGINE_API_BASE_URL
重要であり、Dockerfileのデフォルト( http://host.docker.internal:8080/search
)が適切でない場合は、通常、特定のSearXNGインスタンスのアドレスと一致するように設定する必要があります。
手動Docker実行に関する注意:このコマンドはDockerコンテナを独立して実行します。このサーバーを管理するためにMCPクライアント(VS CodeのClineなど)を使用している場合、クライアントは自身の設定で定義された設定を使用して、コンテナのインスタンスを独自に起動します。MCPクライアントが特定の環境変数を使用するには、このサーバーのクライアント設定内でそれらの環境変数を設定する必要があります(下記参照)。
MCP クライアント (例: VS Code の Cline) を構成します。
MCPクライアントがこのサーバーを正しく管理・実行するには、クライアント側のovertlids/mcp-searxng-enhanced
サーバー設定内で必要な環境変数をすべて定義する必要があります。MCPクライアントはこれらの設定を使用してdocker run
コマンドを構築します。
以下は、MCPクライアントのJSON設定(例: cline_mcp_settings.json
)内でこのサーバーに推奨されるデフォルト設定です。この例では、 Dockerfile
で定義されているデフォルト値に設定されているすべての環境変数が明示的にリストされています。これを直接コピー&ペーストし、必要に応じて値をカスタマイズできます。
MCP クライアント構成の重要なポイント:
- 上記の例では、すべての環境変数をデフォルト値に設定して Docker コンテナを実行するための完全な引数セットが提供されています。
- 設定をカスタマイズするには、MCPクライアントの設定にある
args
配列内の対応する-e "VARIABLE_NAME=value"
行の値を変更するだけです。例えば、SEARXNG_ENGINE_API_BASE_URL
とDESIRED_TIMEZONE
変更するには、それぞれの行を調整します。 - 各変数とそのデフォルトの詳細な説明については、以下の「環境変数」表を参照してください。
- サーバーの動作は主にこれらの環境変数によって制御されます。ods_config.json ファイル
ods_config.json
設定に影響を与える可能性があります(構成管理を参照)が、MCP クライアントから渡される環境変数が優先されます。
ネイティブ実行(Dockerなし)
Docker を使用せずに Python を使用してサーバーを直接実行する場合は、次の手順に従ってください。
1. Pythonのインストール:
- このサーバーにはPython 3.9 以降が必要です。Python 3.11 (Docker イメージで使用されているもの) が推奨されます。
- Pythonはpython.orgからダウンロードできます。
2. リポジトリのクローンを作成します。
- GitHub からコードを取得します:Copy
3. 仮想環境を作成してアクティブ化する(推奨)
- 仮想環境を使用すると、依存関係を管理し、他の Python プロジェクトとの競合を回避するのに役立ちます。Copy
4. 依存関係をインストールします。
- 必要な Python パッケージをインストールします。主な依存関係には、Copy
httpx
、BeautifulSoup4
、pydantic
、trafilatura
、python-dateutil
、cachetools
、zoneinfo
などがあります。
5. SearXNG がアクセス可能であることを確認する:
- SearXNGインスタンスが稼働している必要があります。APIベースURL(例:
http://127.0.0.1:8080/search
://127.0.0.1:8080/search)を確認してください。
6. 環境変数を設定する:
- サーバーは環境変数で設定されます。少なくとも、
SEARXNG_ENGINE_API_BASE_URL
を設定する必要があるでしょう。 - Linux/macOS (bash/zsh):Copy
- Windows (コマンドプロンプト):Copy
- Windows (PowerShell):Copy
- 利用可能なすべてのオプションについては、以下の「環境変数」表を参照してください。設定されていない場合は、スクリプトまたは
ods_config.json
ファイル(ルートディレクトリまたはODS_CONFIG_PATH
に存在する場合)のデフォルト値が使用されます。
7. サーバーを実行します。
- Python スクリプトを実行します。Copy
- サーバーが起動し、stdin/stdout 経由で MCP クライアント接続をリッスンします。
8. 構成ファイル ( ods_config.json
):
- 代わりに、または環境変数と組み合わせて、プロジェクトのルートディレクトリ(または環境変数
ODS_CONFIG_PATH
で指定されたパス)にods_config.json
ファイルを作成することもできます。環境変数は常にこのファイルの値よりも優先されます。例:json { "searxng_engine_api_base_url": "http://127.0.0.1:8080/search", "desired_timezone": "America/New_York" }
環境変数
以下の環境変数はサーバーの動作を制御します。MCPクライアントの設定(クライアント管理サーバーの場合は推奨)またはDockerを手動で実行する際に設定できます。
変数 | 説明 | デフォルト(Dockerfileから) | 注記 |
---|---|---|---|
SEARXNG_ENGINE_API_BASE_URL | SearXNG検索エンドポイント | http://host.docker.internal:8080/search | サーバー運用に不可欠 |
DESIRED_TIMEZONE | 日付/時刻ツールのタイムゾーン | America/New_York | 例: America/Los_Angeles データベースのタイムゾーン一覧: https://en.wikipedia.org/wiki/List\_of\_tz\_database\_time\_zones |
ODS_CONFIG_PATH | 永続的な設定ファイルへのパス | /config/ods_config.json | 通常、コンテナ内ではデフォルトのままになります。 |
RETURNED_SCRAPPED_PAGES_NO | 検索ごとに返される最大ページ数 | 3 | |
SCRAPPED_PAGES_NO | スクレイピングを試みる最大ページ数 | 5 | |
PAGE_CONTENT_WORDS_LIMIT | スクレイピングしたページあたりの最大単語数 | 5000 | |
CITATION_LINKS | 引用イベントを有効/無効にする | True | True かFalse |
MAX_IMAGE_RESULTS | 返される画像結果の最大数 | 10 | |
MAX_VIDEO_RESULTS | 返されるビデオ結果の最大数 | 10 | |
MAX_FILE_RESULTS | 返されるファイルの最大結果数 | 5 | |
MAX_MAP_RESULTS | 返されるマップ結果の最大数 | 5 | |
MAX_SOCIAL_RESULTS | 返されるソーシャルメディア結果の最大数 | 5 | |
TRAFILATURA_TIMEOUT | コンテンツ抽出タイムアウト(秒) | 15 | |
SCRAPING_TIMEOUT | HTTPリクエストのタイムアウト(秒) | 20 | |
CACHE_MAXSIZE | キャッシュされたウェブサイトの最大数 | 100 | |
CACHE_TTL_MINUTES | キャッシュの有効期間(分) | 5 | |
CACHE_MAX_AGE_MINUTES | キャッシュされたコンテンツの最大保存期間(分) | 30 | |
RATE_LIMIT_REQUESTS_PER_MINUTE | 1分あたりのドメインあたりの最大リクエスト数 | 10 | |
RATE_LIMIT_TIMEOUT_SECONDS | レート制限追跡ウィンドウ(秒) | 60 | |
IGNORED_WEBSITES | 無視するサイトのコンマ区切りリスト | "" (空の) | 例: "example.com,another.org" |
構成管理
サーバーは 3 層構成アプローチを使用します。
- スクリプトのデフォルト(Python でハードコード)
- 設定ファイル(
ODS_CONFIG_PATH
から読み込まれ、デフォルトは/config/ods_config.json
) - 環境変数(最優先)
設定ファイルは、次の場合にのみ更新されます。
- ファイルはまだ存在しません(初回初期化)
- 環境変数は現在の実行に対して明示的に提供されています
これにより、新しい環境変数が設定されていない場合でも、コンテナの再起動間でユーザー構成が保持されます。
ツールとエイリアス
ツール名 | 目的 | エイリアス |
---|---|---|
search_web | SearXNG経由のウェブ検索 | search 、 web_search 、 find 、 lookup_web 、 search_online 、 access_internet 、 lookup * |
get_website | ウェブサイトのコンテンツをスクレイピングする | fetch_url 、 scrape_page 、 get 、 load_website 、 lookup * |
get_current_datetime | 現在の日付/時刻 | current_time 、 get_time 、 current_date |
* lookup
はコンテキストに依存します:
url
引数で呼び出された場合は、get_website
にマップされます。- それ以外の場合は
search_web
にマッピングされます
例: 呼び出しツール
ウェブ検索
またはエイリアスを使用する:
カテゴリー別検索
ウェブサイトスクレイピング
またはエイリアスを使用する:
現在の日付/時刻
または:
高度な機能
カテゴリー別検索
search_web
ツールは、カスタマイズされた出力でさまざまなカテゴリをサポートします。
- images : 画像のURL、タイトル、およびオプションのMarkdown埋め込みを含むソースページを返します。
- videos : タイトル、ソース、埋め込み URL などのビデオ情報を返します。
- ファイル: フォーマットやサイズなどのダウンロード可能なファイル情報を返します
- map : 座標や住所を含む位置データを返します
- ソーシャル メディア: ソーシャル プラットフォームから投稿とプロフィールを返します
- 一般: ウェブページの全コンテンツをスクレイピングして返すデフォルトのカテゴリ
Reddit URL変換
Reddit コンテンツをスクレイピングする場合、URL は自動的に old.reddit.com ドメインを使用するように変換され、コンテンツ抽出が向上します。
レート制限
ドメインベースのレート制限により、一定時間内に同じドメインへの過剰なリクエストを防止します。これにより、対象ウェブサイトへの過負荷やIPブロックの可能性を回避できます。
キャッシュ検証
キャッシュされたウェブサイトのコンテンツは、保存期間に基づいて自動的に最新性が検証されます。古いコンテンツは自動的に更新され、有効なキャッシュコンテンツは迅速に提供されます。
エラー処理
サーバーは、次の例外タイプを備えた堅牢なエラー処理システムを実装しています。
MCPServerError
: すべてのサーバーエラーの基本例外クラスConfigurationError
: 設定値が無効な場合に発生しますSearXNGConnectionError
: SearXNGへの接続が失敗したときに発生しますWebScrapingError
: Webスクレイピングが失敗したときに発生しますRateLimitExceededError
: ドメインのレート制限を超えたときに発生します
エラーは情報メッセージとともにクライアントに適切に伝播されます。
トラブルシューティング
- SearXNG に接続できません: SearXNG インスタンスが実行されており、
SEARXNG_ENGINE_API_BASE_URL
環境変数が正しいエンドポイントを指していることを確認してください。 - レート制限エラー: レート制限エラーが多すぎる場合は、
RATE_LIMIT_REQUESTS_PER_MINUTE
を調整します。 - コンテンツの抽出が遅い: 複雑なページでのコンテンツ処理に時間をかけられるように、
TRAFILATURA_TIMEOUT
増やします。 - Dockerネットワークの問題:Windows/MacでDocker Desktopを使用する場合、
host.docker.internal
ホストマシンに解決されるはずです。Linuxでは、代わりにホストのIPアドレスを使用する必要がある場合があります。
謝辞
に触発された:
- SearXNG - プライバシーを尊重するメタ検索エンジン
- Trafilatura - テキスト抽出のためのWebスクレイピングツール
- ihor-sokoliuk/mcp-searxng - SearXNG のオリジナル MCP サーバー
- nnaoycurt (優れたウェブ検索ツール)
- @bwoodruff2021 ( GetTimeDate ツール)
ライセンス
MITライセンス © 2025 OvertliDS
This server cannot be installed
remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
カテゴリ サポートによる Web 検索、引用メタデータによる Web サイト コンテンツのスクレイピング、およびタイムゾーンを考慮した日付/時刻ツールを可能にするモデル コンテキスト プロトコル サーバー。
Related MCP Servers
- AsecurityAlicenseAqualityA Model Context Protocol (MCP) server implementation that integrates with FireCrawl for advanced web scraping capabilities.Last updated -915,2752,745JavaScriptMIT License
- AsecurityFlicenseAqualityBuilt as a Model Context Protocol (MCP) server that provides advanced web search, content extraction, web crawling, and scraping capabilities using the Firecrawl API.Last updated -41Python
- -securityAlicense-qualityA Model Context Protocol server that allows LLMs to interact with web content through standardized tools, currently supporting web scraping functionality.Last updated -PythonMIT License
- -securityAlicense-qualityA Model Context Protocol server that enables web search, scraping, crawling, and content extraction through multiple engines including SearXNG, Firecrawl, and Tavily.Last updated -3511TypeScriptMIT License