MCP DuckDuckGo 検索プラグイン
Claude Codeと互換性のある、Model Context Protocol(MCP)用のDuckDuckGo検索プラグイン。高度なナビゲーション機能とコンテンツ探索機能を備えたWeb検索機能を提供します。
説明
このプロジェクトは、DuckDuckGoを用いたウェブ検索機能を提供するModel Context Protocol(MCP)サーバーを実装します。このプラグインは、Claude CodeやMCPをサポートする他のクライアントとシームレスに連携するように設計されており、基本的な検索機能だけでなく、高度なナビゲーション機能や結果探索機能も提供します。
Related MCP server: Search MCP Server
特徴
ウェブ検索ツール: DuckDuckGoを使用してウェブ検索を実行します
詳細な結果: 特定の検索結果に関する詳細情報を取得します
関連検索: 元の検索に基づいて関連する検索クエリを見つけます
ページネーションのサポート: 検索結果の複数ページをナビゲートします
ドメイン抽出:検索結果ごとにドメイン情報を表示
高度なフィルタリング: サイトと期間で結果をフィルタリングします
強化されたコンテンツ抽出: メタデータ、構造、スニペットを含むウェブページからリッチコンテンツを抽出します。
基本的なウェブスパイダー:検索結果からリンクをたどって関連コンテンツを探索します(深さは設定可能)
メタデータ抽出: タイトル、著者、キーワード、発行日などを抽出します
ソーシャル メディア検出: Web ページからソーシャル メディア リンクを識別して抽出します
コンテンツ構造分析: 見出しとセクションを抽出してウェブページの構造を理解する
検索ドキュメント: 検索機能に関する包括的なドキュメントにアクセスします
検索アシスタント: 効果的な検索クエリの作成を支援
パラメータ化されたリソース: 特定のクエリのフォーマットされた検索結果を取得します
要件
Python 3.9以上
pip (Python パッケージ マネージャー)
pyproject.tomlにリストされている Python パッケージ
インストール
PyPIから
注意: このパッケージはまだPyPIに公開されていません。以下のソースからインストールしてください。
将来、公開されたら、次のようにインストールできるようになります。
ソースから
このリポジトリをクローンします:
git clone https://github.com/gianlucamazza/mcp-duckduckgo.git cd mcp-duckduckgo開発モードでパッケージをインストールします。
pip install -e .または、提供されているスクリプトを使用します。
./scripts/install_dev.shまたは Make を使用します:
make install
使用法
サーバーの手動起動
MCP サーバーを起動するには:
またはカスタムパラメータを使用する場合:
または、開発用に提供されているスクリプトを使用します。
または Make を使用します:
Claude Codeと併用
上記の説明に従ってソースからパッケージをインストールします。
プラグインを使用するために Claude Code を設定します。
claude mcp add duckduckgo-search -- mcp-duckduckgoグローバル構成の場合(すべてのプロジェクトで使用可能):
claude mcp add duckduckgo-search --scope global -- mcp-duckduckgoクロードコードを開始:
claudeこれで、Claude Code 内で DuckDuckGo 検索機能を使用できるようになります。
利用可能なエンドポイント
プラグインは次のエンドポイントを提供します。
ツール: duckduckgo_web_search
次のパラメータを使用して DuckDuckGo を使用して Web 検索を実行します。
query(必須): 検索クエリ(最大400文字、50語)count(オプション、デフォルト:10):ページあたりの結果数(1~20)page(オプション、デフォルト: 1): ページ番号site(オプション):結果を特定のサイト(例:'example.com')に限定しますtime_period(オプション): 期間 (「日」、「週」、「月」、「年」) で結果をフィルタリングします
Claude Codeでの使用例:
ツール: duckduckgo_get_details
特定の検索結果に関する詳細情報を取得します。
url(必須): 詳細を取得する結果のURL
Claude Codeでの使用例:
ツール: duckduckgo_related_searches
元のクエリに基づいて関連する検索クエリを提案します。
query(必須): 元の検索クエリ(最大400文字)count(オプション、デフォルト:5):返される関連検索の数(1〜10)
Claude Codeでの使用例:
リソース: docs://search
検索機能に関する包括的なドキュメントを提供します。
Claude Codeでの使用例:
プロンプト: search_assistant
効果的な検索クエリを作成するのに役立ちます。
Claude Codeでの使用例:
リソース: search://{query}
特定のクエリのフォーマットされた検索結果を取得します。
Claude Codeでの使用例:
ナビゲーション機能の使用
このプラグインは、検索結果のナビゲーションと探索に役立ついくつかの機能を提供します。
ページネーション
検索結果の複数ページを移動するには:
結果のフィルタリング
特定のサイトで結果をフィルタリングするには:
期間別に結果をフィルタリングするには:
結果の詳細を調べる
特定の検索結果の詳細情報を取得するには:
関連検索を見つける
関連する検索クエリを見つけるには:
これらのナビゲーション機能をClaudeの自然言語機能と組み合わせることで、強力な検索・探索エクスペリエンスを実現できます。例えば:
実装ノート
この実装では、DuckDuckGoの公開ウェブインターフェースを使用し、HTMLレスポンスを解析して結果を抽出します。DuckDuckGoは公式の検索APIを提供していないため、このアプローチはデモ目的で使用されています。本番環境では、公式APIを備えた検索サービスを使用することをお勧めします。
強化されたコンテンツ抽出
DuckDuckGo プラグインには、単純な検索結果を超えた高度なコンテンツ抽出機能が含まれています。
コンテンツ抽出機能
完全なウェブページ分析:検索結果の URL から HTML コンテンツを抽出して解析します
インテリジェントコンテンツターゲティング:さまざまな種類のウェブサイトから主要なコンテンツ領域を識別して抽出します
豊富なメタデータ抽出: タイトル、説明、著者、キーワード、公開日を抽出します
画像検出: ウェブページから主要な画像とメディアを識別して抽出します
ソーシャルメディア統合: ソーシャルメディアプロフィールへのリンクを検出して抽出します
コンテンツ構造分析:見出しとセクションを抽出してウェブページの構成を理解する
公式ソース検出: ドメインとコンテンツのシグナルに基づいてソースが公式かどうかを識別します
ウェブスパイダー機能
プラグインには基本的な Web スパイダー機能が含まれています。
設定可能な深さ: 元の URL から 0 から 3 レベルの深さまでのリンクをたどります
リンク制限: ページごとにフォローできるリンクの最大数を制御します (1-5)
ドメイン制限:同じドメイン内のリンクのみをたどるオプション
関連コンテンツの発見: 元の検索に関連するコンテンツを見つけて分析します
拡張コンテンツ抽出の使用
拡張コンテンツ抽出機能を使用するには:
スパイダー動作を制御するには:
発達
このプロジェクトには、開発に役立ついくつかのユーティリティ スクリプトがscriptsディレクトリに含まれています。
install_dev.sh: 開発環境をセットアップするrun.sh: 開発設定でMCPサーバーを実行しますtest.sh: カバレッジレポート付きのテストを実行するlint.sh: リンティングとコードフォーマットを実行するpublish.sh: パッケージをビルドして PyPI に公開する
便宜上、次のターゲットを含む Makefile も提供されています。
テスト
このプロジェクトには、主要な機能すべてを網羅した包括的なテストスイートが含まれています。テストはtests/ディレクトリに保存されています。
テスト依存関係のインストール
テストを実行する前に、テストの依存関係をインストールします。
テストの実行
すべてのテストは次のように実行できます。
カバレッジ レポートを使用してテストを実行するには:
特定のテスト ファイルを実行するには:
詳細出力でテストを実行するには:
または、提供されているスクリプトを使用します。
または Make を使用します:
テスト構造
テスト スイートは次のように構成されています。
conftest.py- テスト用の共有フィクスチャと構成test_models.py- データモデルのテストtest_search.py- 検索機能のテストtest_tools.py- MCP ツールのテストtest_resources.py- MCP リソースのテストtest_integration.py- エンドツーエンドの統合テストtest_server.py- サーバーのライフサイクルテスト
テストの詳細については、 tests/README.mdファイルを参照してください。
コードのフォーマットとリンティング
または、提供されているスクリプトを使用します。
または Make を使用します:
PyPIへの公開
パッケージをPyPIに公開する場合:
pyproject.tomlのバージョンを更新する必要な資格情報とツールがあることを確認してください。
pip install build twineビルドして公開:
python -m build twine upload dist/*
または、提供されているスクリプトが利用可能な場合はそれを使用します。
または Make を使用します:
貢献
貢献を歓迎します!お気軽にプルリクエストを送信してください。