🚀 🔍 Search Fusion MCP Server
Search Fusion MCP Serverは、高可用性のマルチエンジン検索集約MCPサーバーです。インテリジェントなフェイルオーバー、統一API、およびLLM最適化コンテンツ処理を提供します。複数の検索エンジンを統合し、優先度ベースのルーティングと自動フェイルオーバーメカニズムを備えています。
🆕 v3.0.0の新機能: 主要な並列処理機能がアップグレードされました!スレッドセーフな操作、インテリジェントなコネクションプーリング、およびセマフォーベースのリクエスト制限により、マルチスレッドサポートが強化されました。現在、競合状態やデータ破損なしに50以上の同時検索をサポートします!
✨ 主な機能
🔄 マルチエンジン統合
- Google Search - APIキーによる高品質な検索性能
- Serper Search - 高度な機能を備えたGoogle検索の代替エンジン
- Jina AI Search - インテリジェントなコンテンツ処理を行うAIベースの検索
- DuckDuckGo - 無料検索、APIキー不要
- Exa Search - AIベースの意味検索
- Bing Search - Microsoftの検索API
- Baidu Search - 中国の検索エンジン
🚀 高度な機能
- インテリジェントなフェイルオーバー - 障害やレート制限時に自動的にエンジンを切り替えます
- 優先度ベースのルーティング - 可用性とパフォーマンスに基づいて、スマートにエンジンを選択します
- 統一されたレスポンス形式 - すべてのエンジンで一貫したJSON構造を提供します
- レート制限保護 - 組み込みのクールダウンメカニズムがあります
- 🔄 高い並列処理サポート - コネクションプーリングによるスレッドセーフな操作
- ⚡ パフォーマンス最適化 - セマフォーベースの並列制御による非同期操作
- LLM最適化コンテンツ - ページネーションサポートを備えた高度なウェブコンテンツ取得
- Wikipedia統合 - 専用のWikipedia検索ツール
- Wayback Machine - 過去のウェブページアーカイブ検索
- 環境変数構成 - 設定ファイルを必要としない純粋なMCP構成
- 🌐 強化されたプロキシ自動検出 - ゼロ構成でのインテリジェントなプロキシ検出
📊 モニタリングと分析
- リアルタイムのエンジンステータスモニタリング
- 成功率の追跡
- エラーハンドリングと回復
- パフォーマンスメトリクス
⚡ 並列処理とパフォーマンス
- スレッドセーフな操作 - すべてのエンジン統計と状態更新は非同期ロックによって保護されています
- コネクションプーリング - 設定可能なコネクション制限(最大100コネクション)を持つ共有HTTPクライアント
- セマフォー制御 - 同時リクエスト制限(最大30同時検索)
- タイムアウト保護 - 60秒の検索タイムアウトでリクエストの蓄積を防ぎます
- リソース管理 - 自動コネクションクリーンアップによる効率的なメモリ使用
- 競合状態防止 - SearchManagerの初期化に二重チェックロッキングを使用
🏗️ アーキテクチャ
Search Fusion MCP Server
├── 🔧 構成マネージャー # MCP環境変数の処理
├── 🔍 検索マネージャー # 並列制御を備えたマルチエンジンオーケストレーション
├── ⚡ 並列処理レイヤー # スレッドセーフな操作とパフォーマンス最適化
│ ├── 非同期ロック保護 # スレッドセーフな状態更新
│ ├── HTTPコネクションプール # コネクション制限を持つ共有クライアント
│ ├── セマフォー制御 # 同時リクエスト制限(最大30)
│ └── タイムアウト管理 # 60秒のタイムアウト保護
├── 🚀 エンジン実装 # 個々の検索エンジン
│ ├── GoogleSearch # Googleカスタム検索
│ ├── SerperSearch # Serper API
│ ├── JinaSearch # Jina AI検索
│ ├── DuckDuckGoSearch # DuckDuckGo
│ ├── ExaSearch # Exa AI
│ ├── BingSearch # Bing API
│ └── BaiduSearch # Baidu API
├── 🛠️ 高度なフェッチャー # マルチメソッドのウェブスクレイピング
└── 📡 MCPサーバー # FastMCP統合
🚀 クイックスタート
インストール
オプション1: PyPIからインストール(推奨)
pip install search-fusion-mcp
オプション2: ソースからインストール
git clone https://github.com/sailaoda/search-fusion-mcp.git
cd search-fusion-mcp
pip install -e .
🌐 強化されたプロキシ自動検出(v2.0で新機能!)
Search Fusionは、concurrent-browser-mcpにインスパイアされたインテリジェントなプロキシ自動検出を搭載しており、ゼロ構成でシームレスなプロキシサポートを提供します!
✨ 3層検出戦略
- 環境変数 - 最も高い優先度で、
HTTP_PROXY、HTTPS_PROXY、ALL_PROXYをチェックします
- ポートスキャン - ソケット接続テストを使用して一般的なプロキシポートをスキャンします
- システムプロキシ - OSレベルのプロキシ設定を検出します(macOSサポート)
🔍 サポートされるプロキシポート(優先順)
- 7890 - Clashのデフォルトポート
- 1087 - V2Rayの一般的なポート
- 8080 - 汎用HTTPプロキシポート
- 3128 - Squidプロキシのデフォルトポート
- 8888 - その他のプロキシソフトウェアのポート
- 10809 - V2RayのSOCKSポート
- 20171 - 追加のプロキシポート
🚀 ゼロ構成での使用
直接実行するだけ - プロキシが自動検出されます:
search-fusion-mcp
必要に応じて手動で上書きすることもできます:
env HTTP_PROXY="http://your-proxy:port" search-fusion-mcp
📊 検出プロセス
🔍 環境変数をチェック中...
🔍 プロキシポートをスキャン中: [7890, 1087, 8080, ...]
✅ ローカルプロキシポートが検出されました: 7890
🌐 自動検出されたプロキシ: http://127.0.0.1:7890
🆚 concurrent-browser-mcpとの比較
| 機能 |
Search-Fusion |
concurrent-browser-mcp |
| 検出方法 |
✅ 環境変数 → ポートスキャン → システムプロキシ |
✅ 同じ戦略 |
| ポートリスト |
✅ 7つの一般的なポート |
✅ 7つの一般的なポート |
| 接続テスト |
✅ ソケットテスト |
✅ ソケットテスト |
| タイムアウト |
✅ 3秒 |
✅ 3秒 |
| macOSサポート |
✅ networksetup |
✅ networksetup |
| 言語 |
Python |
TypeScript |
MCP統合
環境変数構成
Search Fusionは、設定ファイルを必要としない純粋なMCP環境変数構成を使用しています。
MCPクライアント構成(PyPIインストール):
{
"mcp": {
"mcpServers": {
"search-fusion": {
"command": "search-fusion-mcp",
"env": {
"GOOGLE_API_KEY": "your_google_api_key",
"GOOGLE_CSE_ID": "your_google_cse_id",
"SERPER_API_KEY": "your_serper_api_key",
"JINA_API_KEY": "your_jina_api_key",
"EXA_API_KEY": "your_exa_api_key",
"BING_API_KEY": "your_bing_api_key",
"BAIDU_API_KEY": "your_baidu_api_key",
"BAIDU_SECRET_KEY": "your_baidu_secret_key"
}
}
}
}
}
MCPクライアント構成(ソースインストール):
{
"mcp": {
"mcpServers": {
"search-fusion": {
"command": "python",
"args": ["-m", "src.main"],
"cwd": "/path/to/your/search-fusion-mcp",
"env": {
"GOOGLE_API_KEY": "your_google_api_key",
"GOOGLE_CSE_ID": "your_google_cse_id",
"SERPER_API_KEY": "your_serper_api_key",
"JINA_API_KEY": "your_jina_api_key",
"EXA_API_KEY": "your_exa_api_key",
"BING_API_KEY": "your_bing_api_key",
"BAIDU_API_KEY": "your_baidu_api_key",
"BAIDU_SECRET_KEY": "your_baidu_secret_key"
}
}
}
}
}
サポートされる環境変数
| 検索エンジン |
環境変数 |
必須 |
説明 |
APIキーの取得方法 |
| Google |
GOOGLE_API_KEY
GOOGLE_CSE_ID |
両方必要 |
Googleカスタム検索API |
APIキーを取得 |
| Serper |
SERPER_API_KEY |
APIキー |
Serper Google検索API |
APIキーを取得 |
| Jina AI |
JINA_API_KEY |
APIキー |
Jina AI検索API |
APIキーを取得 |
| Bing |
BING_API_KEY |
APIキー |
Microsoft Bing検索API |
APIキーを取得 |
| Baidu |
BAIDU_API_KEY
BAIDU_SECRET_KEY |
両方必要 |
Baidu検索API |
APIキーを取得 |
| Exa |
EXA_API_KEY |
APIキー |
Exa AI検索API |
APIキーを取得 |
| DuckDuckGo |
不要 |
- |
無料検索、APIキー不要 |
- |
代替変数名:
GOOGLE_SEARCH_API_KEY
GOOGLE_SEARCH_CSE_ID
SERPER_SEARCH_API_KEY
エンジンの優先順位
検索エンジンは自動的に優先順位付けされます:
- Google Search (優先度1) - APIキーによる高品質な検索性能
- Serper Search (優先度1) - 高度な機能を備えたGoogleの代替エンジン
- Jina AI Search (優先度1.5) - AIベースの検索で、高度な機能にはオプションのAPIキーが必要
- DuckDuckGo (優先度2) - 無料、APIキー不要
- Exa Search (優先度2) - APIキーを持つAIベースの検索
- Bing Search (優先度3) - Microsoftの検索API
- Baidu Search (優先度3) - 中国の検索エンジン
🛠️ MCPツール
1. search
インテリジェントなエンジン選択とフェイルオーバーを備えたウェブ検索を実行します。
パラメータ:
query (必須): 検索クエリ用語
num_results (デフォルト: 10): 返す結果の数
engine (デフォルト: "auto"): エンジンの優先度
"auto": 自動エンジン選択(推奨)
"google": Google検索を優先
"serper": Serper検索を優先
"jina": Jina AI検索を優先
"duckduckgo": DuckDuckGoを優先
"exa": Exa検索を優先
"bing": Bing検索を優先
"baidu": Baidu検索を優先
2. fetch_url
インテリジェントなページネーションとマルチメソッドフォールバックを備えたウェブコンテンツの取得と処理を行います。
パラメータ:
url (必須): 取得するウェブURL
use_jina (デフォルト: true): LLM最適化コンテンツにJina Readerを優先するかどうか
with_image_alt (デフォルト: false): 画像にaltテキストを生成するかどうか
max_length (デフォルト: 50000): ページごとの最大コンテンツ長(超えた場合は自動的にページネーション)
page_number (デフォルト: 1): 以前に取得したコンテンツから特定のページを取得
機能:
- インテリジェントなマルチメソッドフォールバック: Jina Reader → Serper Scrape → 直接HTTPを試みます
- 自動ページネーション: 大きなコンテンツを管理しやすいページに分割します
- 並列安全なキャッシュ: 一意のページIDで高並列シナリオでの競合を防ぎます
- LLM最適化コンテンツ: AI処理に最適化されたクリーンなマークダウン形式
3. get_available_engines
すべての検索エンジンの現在のステータスと可用性を取得します。
4. search_wikipedia
エンティティ、人物、場所、概念などのWikipedia記事を検索します。
パラメータ:
entity (必須): 検索するエンティティ
first_sentences (デフォルト: 10): 返す文の数(0で全文を返す)
5. search_archived_webpage
Wayback Machineを使用してウェブサイトのアーカイブバージョンを検索します。
パラメータ:
url (必須): 検索するウェブサイトのURL
year (オプション): 対象の年
month (オプション): 対象の月
day (オプション): 対象の日
💻 使用例
基本的な検索
result = await search("artificial intelligence trends 2024")
result = await search("machine learning", engine="google")
高度なウェブフェッチ
result = await fetch_url("https://example.com/long-article")
if result.get("is_paginated"):
page_2 = await get_page(result["page_id"], 2)
Wikipedia検索
result = await search_wikipedia("Python programming language")
result = await search_wikipedia("Quantum computing", first_sentences=0)
🧪 開発
開発環境のセットアップ
git clone https://github.com/sailaoda/search-fusion-mcp.git
cd search-fusion-mcp
pip install -r requirements.txt
pip install -e .
🔧 構成ガイド
詳細な構成手順については、MCP_CONFIG_GUIDE.mdを参照してください。
📊 パフォーマンス
- レイテンシー: キャッシュを使用することでサブ秒単位の応答時間
- 可用性: インテリジェントなフェイルオーバーにより99.9%の稼働率
- スループット: 並列リクエストを効率的に処理
- スケーラビリティ: 効率的なリソース利用と並列処理
📈 並列処理ベンチマーク
テスト済みのパフォーマンス(v3.0.0以降):
- ✅ 50以上の同時検索 - 競合状態やデータ破損がない
- ✅ スレッドセーフな統計 - 正確なリクエストカウントとエラー追跡
- ⚡ コネクションプーリング - 効率的なHTTPリソース管理
- 🛡️ タイムアウト保護 - リクエストごとに60秒のタイムアウトでシステムの過負荷を防ぐ
- 📊 リアルタイムモニタリング - 高負荷時のライブエンジンステータス
推奨制限:
- 同時検索: 10(セマフォーで設定可能)
- コネクションプール: 最大100コネクション、20キープアライブ
- リクエストタイムアウト: 60秒
- メモリ使用量: ベースライン約50MB + 同時リクエストごとに約2MB
🤝 コントリビューション
- リポジトリをフォークする
- 機能ブランチを作成する
- 変更を加える
- 新機能に対するテストを追加する
- プルリクエストを送信する
📄 ライセンス
このプロジェクトはMITライセンスの下でライセンスされています - 詳細についてはLICENSEファイルを参照してください。
🚨 レート制限とベストプラクティス
- Google Search: 1日あたり100クエリ(無料プラン)
- Serper API: プランによって異なります
- Jina AI: サブスクリプションに基づいてレート制限が適用されます
- DuckDuckGo: 公式の制限はありませんが、責任を持って使用してください
- その他のエンジン: それぞれのAPIドキュメントを確認してください
持続可能な使用を確保するために、適切な遅延を実装し、レート制限を尊重してください。
📞 サポート
MCPコミュニティのために愛情を込めて作られました