Skip to main content
Glama
AngelN-Halo

MCP Web Search Pro

by AngelN-Halo

MCP Web Search Pro

拡張されたセルフホスト型のWebリサーチサーバーで、MCP互換クライアント向けです。AIアシスタントに、Webページの発見、読みやすいコンテンツの抽出、JavaScriptアプリケーションのレンダリング、ページが利用できない場合のInternet Archiveの活用、YouTubeのキャプション読み取りといったツールを提供します。

このサービスはローカルまたは信頼できるネットワークでの使用を想定しています。ステートレスで、APIキーは不要で、MCP Streamable HTTPトランスポートをポート8082で公開します。別のポートで動作する軽量なWeb検索MCPサーバーと並べて実行できます。

軽量なmcp-web-search(ポート8081)とともに別のコンテナとしてポート8082で動作します。タスクに応じてクライアントをどちらかに向けてください — Proが遅く感じられたとしても、軽量版はそのまま手つかずで存在しています。

機能

  • DuckDuckGoによるWeb検索、結果数の制限とリージョン選択に対応。

  • ナビゲーションや定型文を除去した、読みやすいHTMLのMarkdown抽出。

  • PDFの自動検出とテキスト抽出。

  • React、Vue、SPAなどJavaScriptを多用するページ向けのヘッドレスChromiumレンダリング。

  • 利用不可または変更されたページのWayback Machineスナップショット。

  • URLまたは動画IDからのYouTubeトランスクリプト、タイムスタンプのオプション付き。

  • コンテナとプロセスの確認用/healthエンドポイント。

  • ステートレスなStreamable HTTPおよびstdio MCPトランスポート。

Related MCP server: Basic MCP Tools

MCPツール

ツール

説明

web_search

DuckDuckGo (ddgs) でWeb検索。引数: query (必須), max_results (1–20), region。

web_fetch

URLを取得 → Markdown。PDFを自動検出しテキスト抽出。trafilaturaを使用してクリーンな記事抽出(ナビ/広告/定型文を除去)。引数: url, timeout。

web_fetch_js

ヘッドレスChromiumでJavaScript多用/SPAページをレンダリングし、テキスト抽出。web_fetchが空またはスタブページを返す場合に使用。遅め(約5–15秒)。引数: url, wait_ms (0–15000, デフォルト2500), timeout。

web_fetch_archive

Wayback MachineからURLの最新(またはタイムスタンプ指定)のアーカイブスナップショットを取得。一時的な503でリトライ。引数: url, timestamp (オプション YYYYMMDDhhmm)。

youtube_transcript

YouTube動画のトランスクリプトを取得。完全なYouTube URLまたは11文字の動画IDを受け付け。引数: url, include_timestamps (bool, デフォルト false)。

通常のページにはweb_fetchを使用してください(高速)。web_fetchが空のシェルや不完全なコンテンツを返す場合、サイトがクライアントサイドJavaScriptに依存しているためweb_fetch_jsを使用します。

Dockerで実行

docker compose up -d --build

確認:

curl http://localhost:8082/health      # → {"status":"ok"}

ログ / 再起動 / 停止:

docker compose logs -f
docker compose restart
docker compose down

初回ビルドはChromiumをPlaywright用にダウンロードするため大きい(約400MB)。以降のビルドはキャッシュされたレイヤーを再利用します。

クライアントの接続

任意のMCP互換クライアントを以下に向けてください:

http://<server-host>:8082/mcp

ヘッダーやAPIキーは不要です。サーバーはステートレスモードで動作します。

Dockerなしでローカル実行

Python 3.12を推奨:

python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
playwright install --with-deps chromium
python server.py

HTTPトランスポートを直接実行:

python server.py --sse --host 127.0.0.1 --port 8082

歴史的な--sseオプション名ですが、HTTP実装はステートレスなMCP Streamable HTTPトランスポートを使用しています。

パフォーマンスに関する注意

  • 実行時に重いのはweb_fetch_jsのみ — 呼び出しごとにChromiumを起動します(約5–15秒)。他の4つのツールは軽量なPure Pythonで、応答性は良好です。

  • docker-compose.yml内のshm_size: 1gbにより、コンテナ内でのChromiumサンドボックスクラッシュを防止します。

  • 通常の非JSページにはweb_fetch(高速)を使用し、web_fetch_jsはJavaScriptでコンテンツをレンダリングするReact/Vue/SPAサイトのために確保してください。

設定

ポートを変更するには、docker-compose.yml内のports:マッピングとcommand:の両方を編集します。デバッグ用に生のリクエスト/レスポンスログを有効にするには、コメントアウトされた--verboseのcommand:行に切り替えてください。

検証

このリポジトリはソースコードとDockerビルド設定としてプッシュされることを意図しています。現在、自動テストスイートはありません。推奨されるプロジェクトチェック:

git diff --check
docker compose config
docker compose up -d --build
curl http://localhost:8082/health
docker compose logs --tail=100
docker compose down

認証を追加したり、信頼できるリバースプロキシの背後に配置したりせずに、このサービスを直接パブリックインターネットに公開しないでください。HTTPモードは0.0.0.0にバインドし、APIキーなしでリクエストを許可し、すべてのオリジンを許可します。これはローカルのMCPクライアントには便利ですが、アクセス制御層ではありません。

セキュリティと運用上の注意

  • web_fetchとweb_fetch_jsは任意のHTTP(S) URLをリクエストできます。信頼できないユーザーがサービスを呼び出せる場合は、ネットワークアクセスを制限するか、URL/DNSの保護を追加してください。

  • --verboseはリクエストとレスポンスのボディをログに記録するため、短いローカルデバッグセッション以外では無効にしておいてください。

  • 依存関係は最小バージョン制約を使用しています。再現可能なプロダクションビルドに依存する前に、バージョンを固定またはロックしてください。

ファイル

  • server.py — MCPサーバー(5ツール)

  • requirements.txt — mcp, httpx, beautifulsoup4, markdownify, ddgs, trafilatura, pypdf, youtube-transcript-api, playwright

  • Dockerfile — Python 3.12-slim + Playwright Chromium

  • docker-compose.yml — ポート8082のサービス、shm_size: 1gb

ライセンス

現在ライセンスファイルは含まれていません。外部からのコントリビューションを受け入れたり、プロジェクトを再配布したりする前にライセンスを追加してください。

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Zero-auth multi-source research MCP server that enables web search, reading URLs, PDFs, GitHub repos, and querying Hacker News, Stack Overflow, Semantic Scholar, and YouTube transcripts without API keys.
    11
    Apache 2.0
  • F
    license
    Not graded
    quality
    C
    maintenance
    A self-hosted MCP server providing private web search, web page fetching, and current date/time tools, powered by a bundled SearXNG instance for API-key-free local search.
    2
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    A fully local MCP server that provides web search via self-hosted SearXNG and page-to-markdown conversion (static and JS-rendered), all aggregated behind a single endpoint for use with AI assistants.
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    MCP server enabling local-first web search, fetch, extract, and caching with citeable excerpts, no API key required. Supports research workflows for agents and apps.
    105 npm
    1
    MIT