MCP DuckDuckGo Search Plugin

Integrations

  • Provides web search functionality with detailed results, related searches, pagination support, domain extraction, advanced filtering by site and time period, enhanced content extraction, basic web spidering, metadata extraction, and content structure analysis.

MCP DuckDuckGo 検索プラグイン

Claude Codeと互換性のある、Model Context Protocol(MCP)用のDuckDuckGo検索プラグイン。高度なナビゲーション機能とコンテンツ探索機能を備えたWeb検索機能を提供します。

説明

このプロジェクトは、DuckDuckGoを用いたウェブ検索機能を提供するModel Context Protocol(MCP)サーバーを実装します。このプラグインは、Claude CodeやMCPをサポートする他のクライアントとシームレスに連携するように設計されており、基本的な検索機能だけでなく、高度なナビゲーション機能や結果探索機能も提供します。

特徴

  • ウェブ検索ツール: DuckDuckGoを使用してウェブ検索を実行します
  • 詳細な結果: 特定の検索結果に関する詳細情報を取得します
  • 関連検索: 元の検索に基づいて関連する検索クエリを見つけます
  • ページネーションのサポート: 検索結果の複数ページをナビゲートします
  • ドメイン抽出:検索結果ごとにドメイン情報を表示
  • 高度なフィルタリング: サイトと期間で結果をフィルタリングします
  • 強化されたコンテンツ抽出: メタデータ、構造、スニペットを含むウェブページからリッチコンテンツを抽出します。
  • 基本的なウェブスパイダー:検索結果からリンクをたどって関連コンテンツを探索します(深さは設定可能)
  • メタデータ抽出: タイトル、著者、キーワード、発行日などを抽出します
  • ソーシャル メディア検出: Web ページからソーシャル メディア リンクを識別して抽出します
  • コンテンツ構造分析: 見出しとセクションを抽出してウェブページの構造を理解する
  • 検索ドキュメント: 検索機能に関する包括的なドキュメントにアクセスします
  • 検索アシスタント: 効果的な検索クエリの作成を支援
  • パラメータ化されたリソース: 特定のクエリのフォーマットされた検索結果を取得します

要件

  • Python 3.9以上
  • pip (Python パッケージ マネージャー)
  • pyproject.tomlにリストされている Python パッケージ

インストール

PyPIから

注意: このパッケージはまだPyPIに公開されていません。以下のソースからインストールしてください。

将来、公開されたら、次のようにインストールできるようになります。

pip install mcp-duckduckgo

ソースから

  1. このリポジトリをクローンします:
    git clone https://github.com/gianlucamazza/mcp-duckduckgo.git cd mcp-duckduckgo
  2. 開発モードでパッケージをインストールします。
    pip install -e .
    または、提供されているスクリプトを使用します。
    ./scripts/install_dev.sh
    または Make を使用します:
    make install

使用法

サーバーの手動起動

MCP サーバーを起動するには:

mcp-duckduckgo

またはカスタムパラメータを使用する場合:

mcp-duckduckgo --host 127.0.0.1 --port 8000

または、開発用に提供されているスクリプトを使用します。

./scripts/run.sh

または Make を使用します:

make run

Claude Codeと併用

  1. 上記の説明に従ってソースからパッケージをインストールします。
  2. プラグインを使用するために Claude Code を設定します。
    claude mcp add duckduckgo-search -- mcp-duckduckgo
  3. グローバル構成の場合(すべてのプロジェクトで使用可能):
    claude mcp add duckduckgo-search --scope global -- mcp-duckduckgo
  4. クロードコードを開始:
    claude
  5. これで、Claude Code 内で DuckDuckGo 検索機能を使用できるようになります。

利用可能なエンドポイント

プラグインは次のエンドポイントを提供します。

次のパラメータを使用して DuckDuckGo を使用して Web 検索を実行します。

  • query (必須): 検索クエリ(最大400文字、50語)
  • count (オプション、デフォルト:10):ページあたりの結果数(1~20)
  • page (オプション、デフォルト: 1): ページ番号
  • site (オプション):結果を特定のサイト(例:'example.com')に限定します
  • time_period (オプション): 期間 (「日」、「週」、「月」、「年」) で結果をフィルタリングします

Claude Codeでの使用例:

Search for "artificial intelligence latest developments"

ツール: duckduckgo_get_details

特定の検索結果に関する詳細情報を取得します。

  • url (必須): 詳細を取得する結果のURL

Claude Codeでの使用例:

Get details for "https://example.com/article"

元のクエリに基づいて関連する検索クエリを提案します。

  • query (必須): 元の検索クエリ(最大400文字)
  • count (オプション、デフォルト:5):返される関連検索の数(1〜10)

Claude Codeでの使用例:

Find related searches for "renewable energy"

リソース: docs://search

検索機能に関する包括的なドキュメントを提供します。

Claude Codeでの使用例:

Show me the documentation for the DuckDuckGo search

プロンプト: search_assistant

効果的な検索クエリを作成するのに役立ちます。

Claude Codeでの使用例:

Help me formulate a search query about climate change solutions

リソース: search://{query}

特定のクエリのフォーマットされた検索結果を取得します。

Claude Codeでの使用例:

Get search results for "quantum computing breakthroughs"

ナビゲーション機能の使用

このプラグインは、検索結果のナビゲーションと探索に役立ついくつかの機能を提供します。

ページネーション

検索結果の複数ページを移動するには:

Search for "climate change solutions" with 5 results per page, page 2

結果のフィルタリング

特定のサイトで結果をフィルタリングするには:

Search for "machine learning tutorials" on "tensorflow.org"

期間別に結果をフィルタリングするには:

Search for "latest news" from the past week

結果の詳細を調べる

特定の検索結果の詳細情報を取得するには:

Get details for "https://example.com/article-found-in-search"

関連検索を見つける

関連する検索クエリを見つけるには:

Find related searches for "electric vehicles"

これらのナビゲーション機能をClaudeの自然言語機能と組み合わせることで、強力な検索・探索エクスペリエンスを実現できます。例えば:

Search for "python machine learning libraries", then get details on the top result, and finally show me related search terms

実装ノート

この実装では、DuckDuckGoの公開ウェブインターフェースを使用し、HTMLレスポンスを解析して結果を抽出します。DuckDuckGoは公式の検索APIを提供していないため、このアプローチはデモ目的で使用されています。本番環境では、公式APIを備えた検索サービスを使用することをお勧めします。

強化されたコンテンツ抽出

DuckDuckGo プラグインには、単純な検索結果を超えた高度なコンテンツ抽出機能が含まれています。

コンテンツ抽出機能

  • 完全なウェブページ分析:検索結果の URL から HTML コンテンツを抽出して解析します
  • インテリジェントコンテンツターゲティング:さまざまな種類のウェブサイトから主要なコンテンツ領域を識別して抽出します
  • 豊富なメタデータ抽出: タイトル、説明、著者、キーワード、公開日を抽出します
  • 画像検出: ウェブページから主要な画像とメディアを識別して抽出します
  • ソーシャルメディア統合: ソーシャルメディアプロフィールへのリンクを検出して抽出します
  • コンテンツ構造分析:見出しとセクションを抽出してウェブページの構成を理解する
  • 公式ソース検出: ドメインとコンテンツのシグナルに基づいてソースが公式かどうかを識別します

ウェブスパイダー機能

プラグインには基本的な Web スパイダー機能が含まれています。

  • 設定可能な深さ: 元の URL から 0 から 3 レベルの深さまでのリンクをたどります
  • リンク制限: ページごとにフォローできるリンクの最大数を制御します (1-5)
  • ドメイン制限:同じドメイン内のリンクのみをたどるオプション
  • 関連コンテンツの発見: 元の検索に関連するコンテンツを見つけて分析します

拡張コンテンツ抽出の使用

拡張コンテンツ抽出機能を使用するには:

Get details for "https://example.com/article" with spider depth 1

スパイダー動作を制御するには:

Get details for "https://example.com/article" with spider depth 2, max links 3, same domain only

発達

このプロジェクトには、開発に役立ついくつかのユーティリティ スクリプトがscriptsディレクトリに含まれています。

  • install_dev.sh : 開発環境をセットアップする
  • run.sh : 開発設定でMCPサーバーを実行します
  • test.sh : カバレッジレポート付きのテストを実行する
  • lint.sh : リンティングとコードフォーマットを実行する
  • publish.sh : パッケージをビルドして PyPI に公開する

便宜上、次のターゲットを含む Makefile も提供されています。

make install # Install the package in development mode make test # Run tests with coverage make lint # Run linting and code formatting make run # Run the MCP server make publish # Build and publish the package to PyPI make clean # Clean build artifacts make all # Run install, lint, and test (default) make help # Show help message

テスト

このプロジェクトには、主要な機能すべてを網羅した包括的なテストスイートが含まれています。テストはtests/ディレクトリに保存されています。

テスト依存関係のインストール

テストを実行する前に、テストの依存関係をインストールします。

pip install -e ".[test]"

テストの実行

すべてのテストは次のように実行できます。

pytest

カバレッジ レポートを使用してテストを実行するには:

pytest --cov=mcp_duckduckgo

特定のテスト ファイルを実行するには:

pytest tests/test_models.py

詳細出力でテストを実行するには:

pytest -v

または、提供されているスクリプトを使用します。

./scripts/test.sh

または Make を使用します:

make test

テスト構造

テスト スイートは次のように構成されています。

  • 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ファイルを参照してください。

コードのフォーマットとリンティング

black mcp_duckduckgo isort mcp_duckduckgo mypy mcp_duckduckgo

または、提供されているスクリプトを使用します。

./scripts/lint.sh

または Make を使用します:

make lint

PyPIへの公開

パッケージをPyPIに公開する場合:

  1. pyproject.tomlのバージョンを更新する
  2. 必要な資格情報とツールがあることを確認してください。
    pip install build twine
  3. ビルドして公開:
    python -m build twine upload dist/*

または、提供されているスクリプトが利用可能な場合はそれを使用します。

./scripts/publish.sh

または Make を使用します:

make publish

貢献

貢献を歓迎します!お気軽にプルリクエストを送信してください。

ライセンス

マサチューセッツ工科大学

リポジトリ

https://github.com/gianlucamazza/mcp-duckduckgo

-
security - not tested
A
license - permissive license
-
quality - not tested

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.

Claude Code および MCP 互換クライアント向けに DuckDuckGo 経由の Web 検索機能を提供し、高度なコンテンツ探索、検索結果間のナビゲーション、詳細な Web ページ分析などの機能を備えています。

  1. Description
    1. Features
      1. Requirements
        1. Installation
          1. From PyPI
          2. From Source
        2. Usage
          1. Starting the Server Manually
          2. Using with Claude Code
        3. Available Endpoints
          1. Tool: duckduckgo_web_search
          2. Tool: duckduckgo_get_details
          3. Tool: duckduckgo_related_searches
          4. Resource: docs://search
          5. Prompt: search_assistant
          6. Resource: search://{query}
        4. Using the Navigation Features
          1. Pagination
          2. Filtering Results
          3. Exploring Result Details
          4. Finding Related Searches
        5. Implementation Notes
          1. Enhanced Content Extraction
            1. Content Extraction Features
            2. Web Spidering Capabilities
            3. Using Enhanced Content Extraction
          2. Development
            1. Testing
            2. Code Formatting and Linting
            3. Publishing to PyPI
          3. Contributing
            1. License
              1. Repository
                ID: dd8cpyu3mo