MCP DuckDuckResearch について
MCP DuckDuckResearchは、ウェブ検索とコンテンツ取得に使うMCPサーバーで、DuckDuckGo検索、Markdown抽出、スクリーンショットを組み合わせています。セーフサーチ設定に加え、コンテンツ検証やボット検出への対処も行います。
主な機能
- 01DuckDuckGoでウェブ検索
- 02ページ内容をMarkdownで抽出
- 03ページのスクリーンショットを最適化
- 04セーフサーチレベルの設定
- 05ボット検出とコンテンツ検証への対処
活用シーン
- 01トピックを検索してウェブ結果を取得
- 02ウェブページをMarkdownとして抽出
- 03ウェブ取得の作業でスクリーンショットを保存
MCP 対応
MCPクライアントにDuckDuckGo検索、ウェブページのコンテンツ抽出、スクリーンショットのツールを公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP DuckDuckResearch
DuckDuckGo の検索機能に、ウェブページのコンテンツ抽出とスクリーンショット機能を組み合わせた MCP(Model Context Protocol)サーバーです。このサーバーによって、情報を検索することと、ウェブコンテンツにプログラムからアクセスすることの間を橋渡しします。
機能
- 🔍 DuckDuckGo 検索:DuckDuckGo の検索エンジンを使用してウェブを検索します
- 📄 コンテンツ抽出:ウェブページにアクセスし、コンテンツを Markdown として抽出します
- 📸 スクリーンショットの撮影:サイズを自動で最適化して、ウェブページのスクリーンショットを撮影します
- ⚡ 堅牢なエラー処理:ボット検出やコンテンツ検証に対する保護機能を内蔵しています
- 🔒 セーフサーチオプション:適切なコンテンツフィルタリングのために、セーフサーチのレベルを設定できます
インストール
# Clone the repository
git clone https://github.com/yourusername/mcp-duckduckresearch.git
cd mcp-duckduckresearch
# Install dependencies
npm install
# Build the project
npm run build
Cline および Roo Code での使用
Cline へのインストール
-
まず、上記のインストール手順に従ってプロジェクトをビルドします
-
Cline の設定で MCP サーバーを設定します:
次の場所にある Cline の MCP 設定ファイルを編集します:
%APPDATA%\Code\User\globalStorage\rooveterinaryinc.roo-cline\settings\cline_mcp_settings.json次の設定を追加します:
{ "mcpServers": { "duckduckmcp": { "command": "node", "args": ["path/to/mcp-duckduckresearch/build/index.js"], "disabled": false, "alwaysAllow": [] } } }path/to/mcp-duckduckresearchを、このリポジトリをクローンした実際のパスに置き換えてください。
利用可能なツール
設定が完了すると、Roo Code で次のツールを利用できます:
1. search_duckduckgo
DuckDuckGo を使用してウェブを検索します。Roo Code での使用例:
<use_mcp_tool>
<server_name>duckduckmcp</server_name>
<tool_name>search_duckduckgo</tool_name>
<arguments>
{
"query": "typescript best practices",
"options": {
"region": "zh-cn",
"safeSearch": "MODERATE",
"numResults": 10
}
}
</arguments>
</use_mcp_tool>
2. visit_page
ウェブページにアクセスし、コンテンツを Markdown として抽出します:
<use_mcp_tool>
<server_name>duckduckmcp</server_name>
<tool_name>visit_page</tool_name>
<arguments>
{
"url": "https://example.com",
"takeScreenshot": false
}
</arguments>
</use_mcp_tool>
3. take_screenshot
現在読み込まれているページのスクリーンショットを撮影します:
<use_mcp_tool>
<server_name>duckduckmcp</server_name>
<tool_name>take_screenshot</tool_name>
<arguments>
{}
</arguments>
</use_mcp_tool>
Roo Code でのワークフロー例
情報を検索して検索結果のページにアクセスするまでの一連の例を紹介します:
- まず、情報を検索します:
<use_mcp_tool>
<server_name>duckduckmcp</server_name>
<tool_name>search_duckduckgo</tool_name>
<arguments>
{
"query": "TypeScript best practices",
"options": {
"numResults": 10,
"safeSearch": "MODERATE"
}
}
</arguments>
</use_mcp_tool>
- 次に、検索結果のいずれかにアクセスします:
<use_mcp_tool>
<server_name>duckduckmcp</server_name>
<tool_name>visit_page</tool_name>
<arguments>
{
"url": "https://example.com/typescript-practices",
"takeScreenshot": true
}
</arguments>
</use_mcp_tool>
サーバーは次の処理を自動で行います:
- ブラウザーの初期化と終了処理
- コンテンツの抽出と Markdown への変換
- スクリーンショットの撮影と最適化
- エラー処理と再試行
開発
前提条件
- Node.js(v18 以降)
- npm
- Chrome/Chromium を実行できるシステム(Playwright 用)
開発環境のセットアップ
# Install dependencies
npm install
# Start in development mode
npm run dev
# Run tests
npm test
# Run tests with coverage
npm run test:coverage
# Format code
npm run format
# Lint code
npm run lint
プロジェクト構成
mcp-duckduckresearch/
├── src/
│ ├── browser.ts # Browser management and content extraction
│ ├── search.ts # DuckDuckGo search implementation
│ ├── types.ts # Type definitions and schemas
│ ├── utils.ts # Utility functions
│ └── index.ts # Main server implementation
├── tests/
│ ├── unit/ # Unit tests
│ └── integration/ # Integration tests
└── package.json # Project configuration
テスト
このプロジェクトではテストに Vitest を使用します。テストは次のように分類されています:
- ユニットテスト:個々のコンポーネントと関数をテストします
- 統合テスト:ワークフロー全体をテストします
- テストカバレッジ:80% 超を目指します
次のコマンドでテストを実行します:
# Run all tests
npm test
# Run with coverage
npm run test:coverage
貢献
- リポジトリをフォークします
- 機能ブランチを作成します(
git checkout -b feature/amazing-feature) - 変更をコミットします(
git commit -m 'Add some amazing feature') - ブランチにプッシュします(
git push origin feature/amazing-feature) - プルリクエストを作成します
ライセンス
このプロジェクトは MIT ライセンスの下でライセンスされています。詳細については LICENSE ファイルをご覧ください。
クレジット
- duck-duck-scrape - DuckDuckGo 検索の実装
- Playwright - ブラウザーの自動操作とスクリーンショット
- Model Context Protocol - MCP の仕様と SDK
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。