websearch について
websearchは、ウェブ、ニュース、参考資料、専門ソースを横断して調査するMCPサーバーです。並列検索、ページ取得、ブラウザー操作に加え、重複排除、任意のローカル再ランキング、Groqによる回答生成に対応します。
主な機能
- 01複数エンジンでの並列検索
- 02ブラウザーへフォールバックするページ取得
- 03ブラウザー操作とスクリーンショット
- 04ページとPDFの構造化抽出
- 05重複排除と任意の再ランキング
- 06引用付きのGroq回答生成
活用シーン
- 01複数の検索エンジンでテーマを調査
- 02ウェブページの読み取りと情報抽出
- 03ブラウザー操作が必要なページの確認
- 04論文、脆弱性、コードの検索
MCP 対応
検索、取得、ブラウザー操作、抽出、ソース別機能をstdio経由のMCPツールとして提供します。MCPクライアントは`run`スクリプトまたは`websearch-mcp`コマンドで接続できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx skdev-websearch-mcpGROQ_API_KEYSシークレットOptional. Groq keys for synthesis and query rewriting.TAVILY_KEYSシークレットOptional. Tavily search lane.NV_KEYシークレットOptional. NVIDIA embeddings for ranking.SE_KEYシークレットOptional. Stack Exchange key (10k/day instead of 300).S2_KEYシークレットOptional. Semantic Scholar key (1 RPS).ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
11掲載時のツール一覧 · 3 日前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| probe_network | boolean | いいえ | 送信 HTTPS チェックを実行します(約 1 秒追加) |
詳細
websearch MCP サーバー
mcp-name: io.github.SK-DEV-AI/websearch
·
npx skills add SK-DEV-AI/skills
複数の検索エンジンに対応したウェブ検索+取得用 MCP サーバーです。DuckDuckGo、Bing Web/News RSS、Tavily、Wikipedia、arXiv、Google News RSS、Brave(一部のネットワークではレート制限されるため、最後の手段)、Google AI Mode、および意図に応じて利用する垂直検索レーン(MDN、Stack Exchange、GitHub、HN、Semantic Scholar、OSV 脆弱性情報、grep.app/Sourcegraph のコード検索、GDELT ニュース)に並列で検索を振り分けます。結果はコンセンサスに基づいて重複を統合し、ローカルのクロスエンコーダーで再ランキングしたうえで、グラウンディングチェック付きの Groq による統合結果を生成します。
ツール(10)
- search — オープンな調査の質問に使用します。depth=1 ではスニペットを返し、depth≥2 ではページ全体を取得して再ランキングします。
synthesizeは [N] 形式の引用付きで Groq の回答を返します。 - fetch — URL を Markdown/テキストに変換します。直接取得し、ブロックされたページや JavaScript が必要なページでは Helium CDP ブラウザーに自動でフォールバックします。PDF/EPUB/DOCX に対応しています。ページネーション(
offset)にも対応します。構造化 JSON を取得する場合はextractを使用してください。 - screenshot — ARIA アクセシビリティスナップショットを取得します(LLM が読み取れるページテキストとインタラクティブな構造)。
- browser_action — 実際のブラウザーページを操作します(移動、クリック、入力、キーの押下、JS の評価、HTML/テキストの読み取り、ARIA ツリー、スクリーンショット)。ページの操作が必要な場合に使用してください。通常の読み取りには
fetchを使用してください。 - wikipedia — Wikipedia API クライアントの全機能に対応します。記事、要約、カテゴリ、リンク、ページビュー、改訂履歴、バックリンク、地理検索、最近の変更、ランダムなページを利用できます。
- arxiv — ブール演算子/フレーズ/ワイルドカード構文を使った arXiv 論文検索に対応します(単一ソース。複数ソースの論文検索は codesearch の
papersにあります)。 - extract — CSS(高速・無料)、LLM、または正規表現の各方式で、ページから構造化 JSON を取得します。繰り返しの呼び出しはキャッシュされます。
- pdf_extract — PDF を Markdown/JSON/HTML に変換します。テキストレイヤー付き PDF には PyMuPDF の高速処理を使用し、スキャンされた PDF には Docling+OCR でフォールバックします。
- map_site — サイトマップ XML(優先)と HTML リンクのフォールバックを使ってサイトのページを調査してから、個別に取得します。
- ping — インターネットと主要な検索エンドポイントへの接続を確認します。確信が持てない場合、高コストの呼び出しの前に使用してください。
セットアップ
Python 3.14 以降が必要です。
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
cp run.example run # fill in your API keys (run is gitignored — never commit it)
chmod +x run
MCP クライアントで run(stdio)を指定します。
{ "websearch": { "command": "/path/to/websearch/run" } }
API キー(run)
| キー | 用途 | 必須? |
|---|---|---|
GROQ_API_KEYS | クエリの書き換え、統合、グラウンディングチェック | 推奨(キーがなくても検索できますが、統合はできません) |
TAVILY_KEYS | Tavily 検索レーン | 任意 |
NV_KEY | NVIDIA 埋め込みエンドポイント | 任意 |
その他(DDG、Bing RSS、Wikipedia、arXiv、RSS)はすべてキー不要です。Brave の HTML スクレイピングは現在、一部のネットワークでレート制限されるため、一般的なウェブ検索には Bing RSS を主に使用し、Brave は最後の手段としています。
PyPI からインストール
pip install skdev-websearch-mcp # core install, small
pip install skdev-websearch-mcp[all] # + browser/OCR/extract extras (multi-GB)
websearch-mcp コンソールスクリプトは、stdio 経由で MCP を使用します。
{ "websearch": { "command": "websearch-mcp" } }
Docker
docker build -t websearch-mcp .
docker run --rm -i websearch-mcp
キーは実行時に渡し、イメージには埋め込みません:-e GROQ_API_KEYS=...。
重い追加機能:docker build --build-arg EXTRAS="[all]" -t websearch-mcp .
注意事項
- 再ランキング(任意、ローカル): ランキングには、Unix ソケット経由でローカルの
gte-reranker-modernbert-baseクロスエンコーダーを使用します(RERANKER_MODELでモデルを上書きできます)。これがない場合、結果はランク付けされず、relevance_score 0.0が返されます。それでもすべての機能は動作します。 - Helium CDP(任意): ボット対策でブロックされたページは、利用可能な場合、
127.0.0.1:9222の Chrome DevTools ブラウザーに処理を引き継ぎます。利用できない場合、それらのページはハングせずに最終判定を返します。 - キャッシュ: 取得結果は1時間キャッシュされます(
cache_ttl=0にすると最新の結果を取得します)。データベースはなく、キャッシュディレクトリ以外に状態を保持しません。 - 安全性: ユーザー指定URLの取得はすべて SSRF 検証の対象です(プライベートIPのブロック、リダイレクトの各段階での再検証、robots.txt の確認)。
- Groq モデルの使い分け: 合成、グラウンディング、extract-llm には
openai/gpt-oss-120bを使用し、書き換え、分類、拡張、分解にはopenai/gpt-oss-20bを使用します(以前のllama-3.1-8b-instantは Groq によって廃止され、現在は404を返します)。config.py の定数GROQ_SMART_MODEL/GROQ_CHEAP_MODELを参照してください。 - キー不要の経路(すべて参考情報のみ): OSV.dev の脆弱性検索と NVD の CVE 補完、grep.app MCP コード検索(Sourcegraph を予備として使用)、Bing Web RSS と Bing News RSS(Brave のスクレイピングはレート制限され、GDELT は一部のネットワークで429を返します)、Wikipedia 検索、Jina Reader の CDP 前段階、enrich() における Wayback CDX 履歴の復元、map_site における Common Crawl のドメイン調査支援。
- ローカル再ランキング:
gte-reranker-modernbert-baseクロスエンコーダーを、Unix ソケット経由で1つの共有ワーカーとして実行します。どちらのサーバーも必要に応じてワーカーを起動し、アイドル状態になるとアンロードします。任意機能です。これがない場合、結果はエンジンによるランキングのみとなります。 - 任意のキー(キーなしでも適切にフォールバック):
SE_KEY/STACKEXCHANGE_KEY(SEで1日10,000回)、S2_KEY/S2_API_KEY(専用のS2、1 RPS)。 - Marginalia: ベストエフォートの経路のみです(共有の公開キー・プールを使用し、負荷時には503が発生します)。独立インデックスの再現率を補いますが、専用キーは設定されていません(キーについては [email protected] までお問い合わせください)。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。