duckdata について
duckdata は、HasData がホストする DuckDuckGo MCP サーバーへのローカルブリッジです。構造化された検索結果を必要とするクライアント向けに、広告を通常の検索結果と分けて返す読み取り専用ツールを中継します。
主な機能
- 01順位付き DuckDuckGo 検索結果の取得
- 02広告と通常の検索結果の分離
- 03地域・言語・デバイスによる絞り込み
- 04SafeSearch の設定とページ送り
活用シーン
- 01エージェント向けの検索結果取得
- 02ページトークンを使った検索の継続
MCP 対応
MCP クライアントに DuckDuckGo 検索ツールを公開し、HasData のホスト型 MCP サーバーへ呼び出しを転送して、結果を変更せず返します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
1掲載時のツール一覧 · 2 日前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| q | string | いいえ | SERP をスクレイピングする検索語を指定します。`nextPageToken`(続きのページのクエリを含む)が指定されている場合を除き、必須です。 |
| cc | enum | いいえ | 検索元の国を指定する2文字の国コードです。`setLang` と組み合わせて DuckDuckGo の地域設定を構成します。`kl` が設定されている場合は無視されます。ar | au | at | be | br | ca | cl | dk | fi | fr | de | hk | in | id | it | jp | kr | my | mx | nl | nz | no | cn | pl | pt | ph | ru | sa | za | es | se | ch | tw | tr | gb | us |
| kl | enum | いいえ | DuckDuckGo の地域コードです。形式は `<country>-<language>` です(例:`us-en`、`de-de`)。国とインターフェース言語を同時に設定し、`cc`/`setLang` より優先されます。地域を指定しない場合は `wt-wt` を使用します。ar-es | au-en | at-de | be-nl | be-fr | br-pt | ca-en | ca-fr | cl-es | dk-da | fi-fi | fr-fr | de-de | hk-tzh | in-en | id-en | it-it | jp-jp | kr-kr | my-en | mx-es | nl-nl | nz-en | no-no | cn-zh | pl-pl | ph-en | ru-ru | za-en | es-es | se-sv | ch-de | tw-tzh | tr-tr | uk-en | us-en | wt-wt |
| setLang | enum | いいえ | 優先する結果/インターフェースの言語コードです。通常は 2 文字(例:`en`、`de`)で、一部の言語ではスクリプトタグ付きの形式(例:`zh-hans`、`zh-hant`)を使用します。`cc` と組み合わせて DuckDuckGo の地域を指定します。`kl` が設定されている場合は無視されます。ar | ca | zh-hans | zh-hant | hr | cs | da | nl | en | et | fi | fr | de | he | hu | it | ja | ko | lv | lt | nb | pl | pt | ro | ru | sk | sl | es | sv | th | tr | uk | vi |
| deviceType | enum | いいえ | 検索に使用するデバイスの種類を指定します。desktop | mobile | tablet |
| safeSearch | enum | いいえ | 成人向けコンテンツのフィルタリングオプションです。off | moderate | strict |
| nextPageToken | string | いいえ | 各レスポンスで `nextPageToken` として返される不透明なトークンです。次のページの結果を取得するには、`q` の代わりに渡します。元のリクエストのセッションに紐づく署名済みページ URL が含まれるため、そのまま使用する必要があり、手動で作成することはできません。次のページがない場合は返されません。 |
詳細
duckdata
duckdata は、ホスト型の HasData DuckDuckGo MCP サーバーへの小さなローカルブリッジです。DuckDuckGo の検索結果を JSON として返します。クエリを指定すると、タイトル、URL、スニペット、表示 URL、順位、日付、サイトリンク、動画メタデータを含む、順位付けされたオーガニック検索結果が返されます。広告は別の配列に分けられ、上流サーバーが提供する場合は Search Assist AI の回答も含まれます。
このブリッジは独自の検索結果を保持しません。ライブエンドポイントから取得した上流サーバーのツール一覧を、そのままローカルで提供し、各ツール呼び出しを上流に転送して、結果を変更せずに返します。取得時に確認された機能は、読み取り専用の検索取得が 1 つだけです。書き込み、メッセージング、決済のツールはありません。
ツール
hasdata_duckduckgo_serp_getSearchResults— DuckDuckGo の SERP を取得します。取得時のスキーマにはrequired配列がありません。qは検索語です(nextPageTokenが指定されている場合を除き必須です。nextPageTokenには次のページで継続するクエリが含まれます)。kl(us-enやde-deのような<country>-<language>コード。37 地域に対応)で地域を指定するか、代わりにccとsetLangを組み合わせて指定します。klが優先されます。safeSearch(off、moderate、strict)で成人向けコンテンツをフィルタリングし、deviceType(desktop、mobile、tablet)でフォームファクターを選択し、前回のレスポンスで返された不透明なnextPageTokenを使ってページを移動します。
設定
HASDATA_DUCKDUCKGO_MCP_URL(任意)— 上流エンドポイントを上書きします。デフォルトはhttps://mcp.hasdata.com/mcp?apis=duckduckgoです。(この上書き用フックは、この再構築で独自にラベル付けした再現です。)HASDATA_API_KEY(任意)— 設定すると、すべての上流リクエストに、呼び出し元自身の HasData API キーを使ったx-api-key: <key>ヘッダーが付加されます。設定されていない場合、キーのヘッダーは送信されません。(ヘッダー名と環境変数名は、元のレジストリレコードで固定されています。この環境変数からキーを転送する動作は、ラベル付けした再現です。元の機能はキーなしで取得されています。)
転送の仕組み
最初のツール呼び出し時に、クライアントは上流とのストリーミング可能な HTTP セッションを開きます。まず JSON-RPC の initialize リクエスト(protocolVersion 2025-03-26、clientInfo name duckdata)を送信し、続いて notifications/initialized 通知を送信してから、呼び出し元の引数を変更せずに含めた tools/call リクエストを送信します。上流が initialize に Mcp-Session-Id ヘッダーを付けて応答した場合、その値はセッションの以降すべてのリクエストに付加されます。このセッションはプロセスの存続期間中、再利用されます。レスポンスは通常の JSON またはサーバー送信イベントとして届く場合があり、どちらも読み取られます。
成功した上流の結果は、上流が設定した isError フラグも含め、そのまま渡されます。JSON-RPC エラー、2xx 以外のステータス、読み取り不能なレスポンス、完了できないリクエストなどの失敗は、テキストが duckdata error: で始まる isError 結果として返されます(この表示方法は、この再構築で独自にラベル付けした再現です)。
CLI
このツールは、JSON 引数文字列を 1 つ受け取るサブコマンドとしても利用できます。
npx @reneturcios/duckdata hasdata_duckduckgo_serp_getSearchResults '{"q":"open source search","kl":"us-en","safeSearch":"moderate","deviceType":"desktop"}'
npx @reneturcios/duckdata --version
終了コード:成功時は 0、isError 結果の場合は 1、使用方法に誤りがある場合は 2 です。
MCP サーバー
npx -y @reneturcios/duckdata mcp
MCP クライアントの設定:
{
"mcpServers": {
"duckdata": {
"command": "npx",
"args": ["-y", "@reneturcios/duckdata", "mcp"]
}
}
}
Docker
docker run -i ghcr.io/cloudcorprecords/duckdata
docker run --rm ghcr.io/cloudcorprecords/duckdata --version
コンテナのデフォルトコマンドは mcp なので、最初の形式は stdio MCP サーバーとして動作します。それ以外の引数は通常どおり CLI に渡されます。
開発
npm install
npm run build
npm test
npm run dev
テストスイートは、スタブ化された JSON-RPC 上流サーバーのみを使って実行されます。ライブネットワークへの呼び出しはありません。
ライセンス
MIT — LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。