Integrations
Provides capability to crawl and search Apache documentation, with a specific example for crawling the Apache Pulsar Admin API documentation.
Utilizes Rich for enhanced terminal output and formatting when displaying crawl results and server status.
Leverages Typer to build the crawler command-line interface with support for various configuration options.
ドキュメントクローラーとMCPサーバー
このプロジェクトは、Web サイトをクロールし、Markdown ドキュメントを生成し、そのドキュメントを Model Context Protocol (MCP) サーバー経由で検索可能にするためのツールセットを提供します。これは、Cursor などのツールとの統合を目的として設計されています。
特徴
- Web クローラー (
crawler_cli
) :- 指定された URL から、
crawl4ai
を使用して Web サイトをクロールします。 - クロール深度、URL パターン (含める/除外する)、コンテンツ タイプなどを構成できます。
- Markdown 変換前の HTML のオプションのクリーンアップ (ナビゲーション リンク、ヘッダー、フッターを削除します)。
- クロールされたコンテンツから単一の統合された Markdown ファイルを生成します。
- デフォルトでは出力を
./storage/
に保存します。
- 指定された URL から、
- MCP サーバー (
mcp_server
) :./storage/
ディレクトリから Markdown ファイルを読み込みます。- 見出しに基づいて Markdown を意味的なチャンクに解析します。
sentence-transformers
(multi-qa-mpnet-base-dot-v1
) を使用して、各チャンクのベクトル埋め込みを生成します。- **キャッシュ:**処理済みのチャンクと埋め込みを保存するためにキャッシュ ファイル (
storage/document_chunks_cache.pkl
) を使用します。- **初回実行:**新しいドキュメントをクロールした後の最初のサーバーの起動には、すべてのコンテンツの解析、チャンク化、埋め込みの生成が必要になるため、時間がかかる場合があります。
- **後続の実行:**キャッシュ ファイルが存在し、
./storage/
内のソース.md
ファイルの変更時刻が変更されていない場合、サーバーはキャッシュから直接読み込むため、起動時間が大幅に短縮されます。 - **キャッシュの無効化:**キャッシュが最後に作成されてから
./storage/
内の.md
ファイルが変更、追加、または削除された場合、キャッシュは自動的に無効化され、再生成されます。
- Cursor などのクライアント向けに
fastmcp
経由で MCP ツールを公開します。list_documents
: 利用可能なクロールされたドキュメントを一覧表示します。get_document_headings
: ドキュメントの見出し構造を取得します。search_documentation
: ベクトル類似性を使用してドキュメント チャンクに対してセマンティック検索を実行します。
- カーソル統合: カーソル内で使用するために、
stdio
トランスポート経由で MCP サーバーを実行するように設計されています。
ワークフロー
- クロール:
crawler_cli
ツールを使用して Web サイトをクロールし、./storage/
に.md
ファイルを生成します。 - サーバー実行:
mcp_server
(通常は Cursor などの MCP クライアントによって管理されます) を構成して実行します。 - **ロードと埋め込み:**サーバーは、
./storage/
内の.md
ファイルからコンテンツを自動的にロード、チャンク化、埋め込みます。 - クエリ: MCP クライアント (例: Cursor Agent) を使用して、サーバーのツール (
list_documents
、search_documentation
など) と対話し、クロールされたコンテンツをクエリします。
設定
このプロジェクトでは、依存関係の管理と実行にuv
使用します。
uv
をインストールします。uv Web サイトの指示に従います。- リポジトリをクローンします。Copy
- 依存関係をインストールします:このコマンドは仮想環境 (通常はCopy
.venv
) を作成し、pyproject.toml
にリストされているすべての依存関係をインストールします。
使用法
1. ドキュメントのクローリング
クローラーは、 crawl.py
スクリプトを使用するか、 uv run
経由で直接実行します。
基本的な例:
これにより、デフォルト設定でhttps://docs.example.com
がクロールされ、出力が./storage/docs.example.com.md
に保存されます。
オプション付きの例:
すべてのオプションを表示:
主なオプションは次のとおりです。
--output
/-o
: 出力ファイルのパスを指定します。--max-depth
/-d
: クロール深度を設定します (1 ~ 5 の範囲で指定する必要があります)。--include-pattern
/--exclude-pattern
: クロールする URL をフィルタリングします。--keyword
/-k
: クロール中に関連性スコアを付けるキーワード。--remove-links
/--keep-links
: HTML のクリーンアップを制御します。--cache-mode
:crawl4ai
キャッシュを制御します (DEFAULT
、BYPASS
、FORCE_REFRESH
)。
パターンと深度によるクロールの改良
場合によっては、ドキュメントサイトの特定のサブセクションのみをクロールしたい場合があります。この場合、 --include-pattern
と--max-depth
を試行錯誤する必要があることがよくあります。
--include-pattern
: クローラーが、指定されたパターンに一致するURLのリンクのみをたどるように制限します。柔軟性を高めるために、ワイルドカード(*
)を使用してください。--max-depth
: クローラーが開始URLから何クリック離れるかを制御します。深さ1は、開始URLから直接リンクされているページのみをクロールすることを意味します。深さ2は、開始URLのページ*と、*そこからリンクされているページ(includeパターンにも一致する場合)をクロールすることを意味します。
例: Pulsar Admin APIセクションのみをクロールする
https://pulsar.apache.org/docs/4.0.x/admin-api-*
の下のコンテンツのみが必要だとします。
- **開始 URL:**概要ページから開始できます:
https://pulsar.apache.org/docs/4.0.x/admin-api-overview/
。 - 含めるパターン:
admin-api
を含むリンクのみが必要な場合:--include-pattern "*admin-api*"
。 - **最大深度:**管理APIリンクが開始ページから何階層まで階層化されるかを把握する必要があります。最初は
2
から始め、必要に応じて階層を増やしてください。 - 詳細モード:
-v
を使用して、どの URL がアクセスされているか、またはスキップされているかを確認します。これは、パターンと深度のデバッグに役立ちます。
出力ファイル(この場合はデフォルトで./storage/pulsar.apache.org.md
)を確認してください。ページが欠落している場合は、 --max-depth
を3
に増やしてみてください。関連のないページが多すぎる場合は、 --include-pattern
より具体的にするか、 --exclude-pattern
ルールを追加してください。
2. MCPサーバーの実行
MCPサーバーは、CursorなどのMCPクライアントからstdio
トランスポート経由で実行されるように設計されています。サーバーを実行するコマンドは次のとおりです。
ただし、Python がmcp_server
モジュールを見つけられるように、プロジェクトのルート ディレクトリ ( MCPDocSearch
) から実行する必要があります。
3. カーソルの設定
このサーバーを Cursor で使用するには、このプロジェクトのルート ( MCPDocSearch/.cursor/mcp.json
) に次の内容を含む.cursor/mcp.json
ファイルを作成します。
説明:
"doc-query-server"
: カーソル内のサーバーの名前。"command": "uv"
: コマンドランナーとしてuv
を指定します。"args"
:"--directory", "/path/to/your/MCPDocSearch"
:重要なのは、コマンド実行前に作業ディレクトリをプロジェクトルートに変更するようにuv
に指示することです。/path/to/your/MCPDocSearch/path/to/your/MCPDocSearch
システム上の実際の絶対パスに置き換えてください。"run", "python", "-m", "mcp_server.main"
: コマンドuv
正しいディレクトリと仮想環境内で実行されます。
このファイルを保存して Cursor を再起動すると、「doc-query-server」が Cursor の MCP 設定で使用可能になり、エージェントで使用できるようになります (例: @doc-query-server search documentation for "how to install"
)。
依存関係
使用される主要なライブラリ:
crawl4ai
: コア Web クロール機能。fastmcp
: MCP サーバーの実装。sentence-transformers
: テキスト埋め込みを生成します。torch
:sentence-transformers
で必要です。typer
: クローラー CLI を構築しています。uv
: プロジェクトと環境の管理。beautifulsoup4
(crawl4ai
経由): HTML 解析。rich
: 強化された端末出力。
建築
このプロジェクトの基本的な流れは次のとおりです。
crawler_cli
: 開始 URL とオプションを指定してこのツールを実行します。- クロール (
crawl4ai
) : このツールは、設定されたルール (深度、パターン) に基づいてリンクをたどり、crawl4ai
を使用して Web ページを取得します。 - クリーニング (
crawler_cli/markdown.py
) : オプションで、BeautifulSoup を使用して HTML コンテンツをクリーニングします (ナビゲーション、リンクを削除します)。 - Markdown 生成 (
crawl4ai
) : クリーン化された HTML は Markdown に変換されます。 - ストレージ (
./storage/
) : 生成された Markdown コンテンツは、./storage/
ディレクトリ内のファイルに保存されます。 mcp_server
起動: MCP サーバーが起動すると (通常は Cursor の設定を介して)、mcp_server/data_loader.py
が実行されます。- 読み込みとキャッシュ:データローダーはキャッシュファイル(
.pkl
)をチェックします。有効な場合は、キャッシュからチャンクと埋め込みを読み込み、無効な場合は./storage/
から.md
ファイルを読み取ります。 - チャンク化と埋め込み:Markdownファイルは見出しに基づいてチャンクに分割されます。各チャンクに対して
sentence-transformers
を用いて埋め込みが生成され、メモリに保存されます(キャッシュにも保存されます)。 - MCP ツール (
mcp_server/mcp_tools.py
) : サーバーはfastmcp
を介してツール (list_documents
、search_documentation
など) を公開します。 - クエリ (カーソル) : カーソルなどの MCP クライアントはこれらのツールを呼び出すことができます。search_documentation
search_documentation
、事前に計算された埋め込みを使用して、クエリに対する意味的類似性に基づいて関連するチャンクを検索します。
ライセンス
このプロジェクトは MIT ライセンスに基づいてライセンスされています - 詳細についてはLICENSEファイルを参照してください。
貢献
貢献を歓迎します!お気軽に問題を報告したり、プルリクエストを送信してください。
セキュリティノート
- **Pickle Cache:**このプロジェクトでは、処理済みデータ (
storage/document_chunks_cache.pkl
) をキャッシュするために Python のpickle
モジュールを使用しています。信頼できないソースからのデータを非 Pickle 化することは安全ではない可能性があります。./storage/ ディレクトリ./storage/
の書き込み権限が信頼できるユーザー/プロセスのみに設定されていることを確認してください。
This server cannot be installed
ウェブサイトをクロールし、Markdown ドキュメントを生成し、そのドキュメントを Model Context Protocol (MCP) サーバー経由で検索可能にして、Cursor などのツールと統合するツールセット。