mcp-server-webcrawl について
mcp-server-webcrawl は、Web クローラーのデータとアーカイブを AI クライアントに接続し、全文検索、フィルタリング、分析を行えるようにする MCP サーバーです。wget や HTTrack などで取得したクロールを検索したいユーザー向けで、無料のオープンソースです。
主な機能
- 01ブール演算に対応した全文検索
- 02タイプや HTTP ステータスによるリソースの絞り込み
- 03複数のクローラーとアーカイブ形式に対応
- 04extras による Markdown・スニペット形式の出力
活用シーン
- 01Web サイトの SEO、リンク切れ、パフォーマンスの監査
- 02リモートホスト上のアーカイブをコマンドラインで検索
MCP 対応
本プロジェクトは MCP サーバーであり、クロールデータの検索、絞り込み、取得のツールを MCP クライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
ウェブサイト | GitHub | ドキュメント | PyPi
mcp-server-webcrawl
ウェブクローラーのデータを高度に検索・取得できます。mcp-server-webcrawl を使うと、AI クライアントがユーザーの指示に従って、または自律的にウェブコンテンツをフィルタリングして分析できます。このサーバーには、ブール検索に対応した全文検索インターフェースと、種類や HTTP ステータスなどによるリソースのフィルタリング機能が含まれています。
mcp-server-webcrawl は、LLM に検索方法を網羅したメニューを提供し、さまざまなウェブクローラーに対応します。
| クローラー/形式 | 説明 | プラットフォーム | セットアップガイド |
|---|---|---|---|
| ArchiveBox | ウェブアーカイブツール | macOS/Linux | セットアップガイド |
| HTTrack | GUI ミラーリングツール | macOS/Windows/Linux | セットアップガイド |
| InterroBot | GUI クローラーおよび分析ツール | macOS/Windows/Linux | セットアップガイド |
| Katana | セキュリティに特化した CLI クローラー | macOS/Windows/Linux | セットアップガイド |
| SiteOne | GUI クローラーおよび分析ツール | macOS/Windows/Linux | セットアップガイド |
| WARC | 標準的なウェブアーカイブ形式 | クライアントにより異なります | セットアップガイド |
| wget | CLI ウェブサイトミラーリングツール | macOS/Linux | セットアップガイド |
mcp-server-webcrawl は無料のオープンソースで、Claude Desktop と Python(>=3.10)が必要です。コマンドラインから pip install でインストールします。
pip install mcp-server-webcrawl
MCP サーバーのセットアップ手順については、セットアップガイドを参照してください。
機能
- Claude Desktop 対応
- 複数のクローラーと互換
- 種類、ステータスなどによるフィルタリング
- ブール検索に対応
- Markdown とスニペットに対応
- 独自のウェブサイトナレッジベースを構築
プロンプトルーチン
mcp-server-webcrawl は、検索のたびに状況を把握し、各クエリに応じて対応しながら、自由にウェブクロールデータを検索するために必要なツールキットを提供します。この用途を想定して設計されています。
プロンプトとしてルーチンを実行することもできます。自分で作成することも、用意されているものを使うこともできます。これらのプロンプトはコピーして貼り付ける形式で、未加工の Markdown として使われます。LLM 向けに用意された高度な検索機能によって有効になり、クエリやロジックを手順形式の指示に組み込んだり、Gopher Service のように入力ループに組み込んだりできます。
| プロンプト | ダウンロード | カテゴリ | 説明 |
|---|---|---|---|
| 🔍 SEO 監査 | auditseo.md | audit | テクニカル SEO(検索エンジン最適化)の分析です。基本を網羅し、さらに詳しく調べるためのオプションも用意されています。 |
| 🔗 404 監査 | audit404.md | audit | リンク切れの検出とパターン分析です。問題を見つけるだけでなく、修正方法も提案します。 |
| ⚡ パフォーマンス監査 | auditperf.md | audit | ウェブサイトの速度と最適化の分析です。率直に評価します。 |
| 📁 ファイル監査 | auditfiles.md | audit | ファイルの整理状況とアセットの分析です。ウェブサイトの構成を確認できます。 |
| 🌐 Gopher インターフェース | gopher.md | interface | 昔の Gopher クライアントに着想を得た、昔ながらの検索インターフェースです。 |
| ⚙️ 検索テスト | testsearch.md | self-test | 検索クエリパーサーとその後の FTS5 変換におけるブール論理の不整合を確認する、一連のテストです。 |
サイト選択の手間を省きたい場合(クエリを 1 回減らせます)、Markdown を貼り付け、同じリクエスト内に「run pasted for [site name or URL].」と入力してください。サイトは自動で判別されます。追加のコンテキストを添えずに貼り付けた場合は、クロール済みサイトの一覧から選ぶように求められます。
ブール検索構文
クエリエンジンは、フィールドを指定した検索(field: value)と複雑なブール式に対応しています。全文検索では、url、content、headers の各フィールドを組み合わせて検索します。
API インターフェースは LLM が直接利用することを想定して設計されていますが、検索構文を把握しておくと便利です。LLM が生成した検索内容は確認できますが、通常、UI では折りたたまれています。クエリを確認するには、MCP の折りたたみ可能なセクションを展開してください。
クエリの例
| クエリの例 | 説明 |
|---|---|
| privacy | 全文検索で単一キーワードに一致 |
| "privacy policy" | 全文検索で完全一致するフレーズ |
| boundar* | 全文検索でワイルドカード検索を行い、boundar で始まる結果に一致(boundary、boundaries) |
| id: 12345 | id フィールドで特定のリソース ID に一致 |
| url: example.com/somedir | url フィールドで、URL に example.com/somedir を含む結果に一致 |
| type: html | type フィールドで HTML ページのみを検索 |
| status: 200 | status フィールドで特定の HTTP ステータスコード(200 に等しいもの)に一致 |
| status: >=400 | status フィールドで特定の HTTP ステータスコード(400 以上)に一致 |
| content: h1 | content フィールドでコンテンツ(HTTP レスポンス本文。多くの場合 HTML ですが、常にそうとは限りません)を検索 |
| headers: text/xml | headers フィールドで HTTP レスポンスヘッダーを検索 |
| privacy AND policy | 全文検索で両方に一致 |
| privacy OR policy | 全文検索でどちらかに一致 |
| policy NOT privacy | privacy を含まない policy に全文一致 |
| (login OR signin) AND form | login または signin と form を含む全文検索 |
| type: html AND status: 200 | HTTP 成功ステータスの HTML ページのみを全文検索 |
フィールド検索の定義
フィールド検索では、検索インデックスのどの列をフィルターするかを指定でき、検索の精度を高められます。コンテンツ全体を検索するのではなく、URL、ヘッダー、本文などの特定の属性に検索対象を絞り込めます。この方法により、クロールデータ内の特定の属性やパターンを探す際の効率が向上します。
| フィールド | 説明 |
|---|---|
| id | データベース ID |
| url | リソース URL |
| type | タイプの列挙リスト(タイプの表を参照) |
| size | ファイルサイズ(バイト単位) |
| status | HTTP レスポンスコード |
| headers | HTTP レスポンスヘッダー |
| content | HTTP 本文(HTML、CSS、JS など) |
フィールドの内容
一部のフィールドは検索結果とともに個別にリクエストできますが、コアフィールドは常に有効です。headers と content を使用すると、トークンをすぐに消費する可能性があります。慎重に使用するか、extras を使ってコンテキストウィンドウにより多くの結果を取り込んでください。fields は、クエリ内でフィールド検索を行うかどうかに関係なく指定する、トップレベルの引数です。
| フィールド | 説明 |
|---|---|
| id | 常に利用可能 |
| url | 常に利用可能 |
| type | 常に利用可能 |
| status | 常に利用可能 |
| created | リクエスト時 |
| modified | リクエスト時 |
| size | リクエスト時 |
| headers | リクエスト時 |
| content | リクエスト時 |
コンテンツタイプ
クロールデータには、HTML ページ以外のリソースタイプも含まれます。type: フィールド検索を使うと、コンテンツタイプの大まかなグループでフィルターできます。特に、複雑な拡張子クエリを使わずに画像をフィルターする場合に便利です。たとえば、type: html NOT content: login と検索すると「login」を含まないページを探せます。また、type: img と検索すると画像リソースを分析できます。以下の表に、検索システムでサポートされているすべてのコンテンツタイプを示します。
| タイプ | 説明 |
|---|---|
| html | ウェブページ |
| iframe | iframe |
| img | ウェブ画像 |
| audio | ウェブ音声ファイル |
| video | ウェブ動画ファイル |
| font | ウェブフォントファイル |
| style | CSS スタイルシート |
| script | JavaScript ファイル |
| rss | RSS 配信フィード |
| text | プレーンテキストコンテンツ |
| PDF ファイル | |
| doc | MS Word 文書 |
| other | 分類なし |
Extras
extras パラメーターは追加の処理オプションを提供し、HTTP データ(Markdown、スニペット、正規表現、XPath)を変換したり、LLM を外部データ(サムネイル)に接続したりします。必要に応じてこれらのオプションを組み合わせ、求める形式の結果を得られます。
| Extra | Description |
|---|---|
| thumbnails | AI モデルが表示・分析できる、Base64 エンコードされた画像を生成します。画像の説明、コンテンツ分析、視覚的な理解を可能にしながら、トークン出力を最小限に抑えます。画像で動作し、クエリで type: img を指定して絞り込めます。SVG はサポートされていません。 |
| markdown | HTML のコンテンツフィールドを簡潔な Markdown として提供し、トークンの使用量を削減して LLM の読みやすさを向上させます。HTML で動作し、クエリで type: html を指定して絞り込めます。 |
| regex | HTML、CSS、JavaScript など、クロールしたファイルから正規表現の一致箇所を抽出します。HTML に対しては XPath ほど精度の高いツールではありませんが、任意のテキストファイルをデータソースとして使用できます。extrasRegex 引数を使って、1 つ以上の正規表現パターンを指定できます。 |
| snippets | 全文検索クエリを、コンテンツ内の文脈に応じたキーワードの使用箇所に対応付けます。コンテンツフィールド(または Markdown の追加オプション)を要求せずに使うと、ページ全体の内容を取得せずに検索を効率よく絞り込めます。Google 検索が登場した 1999 年のように、ヒット箇所を強調表示した昔ながらの結果をリストで表示するのにも適しています。HTML、CSS、JS、またはクロールしたあらゆるテキストベースのファイルで動作します。 |
| xpath | HTML コンテンツのスクレイピングに使う XPath セレクターのデータを抽出します。テキストのみを取得するには XPath の text() セレクターを使います。要素セレクターは outerHTML を返します。type: html でのみサポートされ、その他のタイプは無視されます。extrasXpath 引数を使って、1 つ以上の XPath セレクター(//h1、count(//h1) など)を指定できます。 |
Extras を使うと、トークン効率のよい HTTP コンテンツレスポンスを生成できます。Markdown はソース HTML のおよそ 3 分の 1 のバイト数になり、スニペットは通常、結果ごとに約 500 バイトです。XPath は必要に応じて、対象を細かく絞ることも広く指定することもできます。リクエストを絞り込むほど、LLM のセッションにより多くの結果を収められます。
もちろん、これらの処理は LLM が行うという考え方です。LLM が「content」フィールド(HTML 全文)を好んで使うようであれば、チャットで extras 機能を使ってトークンを節約するよう促すだけで十分です。
Interactive Mode
AI を使わず、ターミナルでウェブアーカイブを従来のブール検索で検索できます。
mcp-server-webcrawl は、ウェブアーカイブを検索するターミナルツールとしても使えます。ローカルアーカイブに対して実行できますが、リモートホストに SSH 接続して、そのホスト上のアーカイブを表示できることに気付くと、さらに便利です。ダウンロード、同期、多要素ログインなど、よくある面倒な作業は必要ありません。インタラクティブモードを使えば、リモートサーバー上にあるクロールデータにすぐアクセスして検索できます。
--crawler と --datasrc を指定して起動すると、すぐに検索できます。または、アプリ内で datasrc と crawler を設定してください。
mcp-server-webcrawl --crawler wget --datasrc /path/to/datasrc --interactive
# or manually enter crawler and datasrc in the UI
mcp-server-webcrawl --interactive
インタラクティブモードを使うと、いつでもターミナルでクロール済みデータのまとまりを検索できます。

コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。