mcp-qdrant-docs MCP Server について
WebサイトをスクレイピングしてQdrantにインデックス化し、自然言語でドキュメントを検索できるTypeScript製MCPサーバーです。URL、ページ数、パスパターンで取得範囲を設定できます。
主な機能
- 01Webページのスクレイピング
- 02コンテンツの分割と埋め込み生成
- 03Qdrantへのインデックス保存
- 04自然言語によるドキュメント検索
- 05ページ数とパスによる範囲設定
活用シーン
- 01Honoドキュメントの検索
- 02React Routerドキュメントの検索
- 03Gradioドキュメントからの情報検索
MCP 対応
MCPクライアントから、対象サイトに応じて動的に命名される検索ツールを呼び出せます。例:ask_reactrouter_docs。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
mcp-qdrant-docs MCP サーバー
Model Context Protocol サーバーです
これは TypeScript ベースの MCP サーバーです。ウェブサイトのコンテンツをスクレイピングして Qdrant ベクトルデータベースにインデックス化し、インデックス化されたコンテンツについて質問に回答するツールを提供します。
使用例
ask_hono_docs: Hono.devのドキュメント内容について質問できます
ask_reactrouter_docs: ReactRouter.comのドキュメント内容について質問できます
ask_gradio_docs: Gradio.appのLLMsドキュメントについて質問できます
機能
ツール:ask_<doc name>_docs
- 名前:
DOCS_URLまたは--start-urlに基づいて動的に生成されます(例:ask_reactrouter_docs)。 - 機能: 指定したウェブサイトからスクレイピングしたコンテンツについて、自然言語で質問できます。
- 処理:
- 起動時(または
force-reindexが指定された場合)、サーバーが対象のウェブサイトをスクレイピングします。 - スクレイピングしたコンテンツを処理してチャンクに分割し、センテンストランスフォーマーモデルを使って埋め込みを生成します。
- これらの埋め込みとコンテンツのチャンクは、そのウェブサイト専用の Qdrant コレクションに保存されます。
- クエリを指定してツールを呼び出すと、サーバーがクエリの埋め込みを生成し、Qdrant で関連するチャンクを検索して、見つかったコンテンツを回答として返します。
- 起動時(または
- 入力: 自然言語のクエリ(文字列)。
- 出力: Qdrant インデックスで見つかった、関連するコンテンツのチャンクを含むテキスト。
インストール
Claude Desktop で使用するには、サーバー設定を追加します。
MacOS の場合:~/Library/Application Support/Claude/claude_desktop_config.json
Windows の場合:%APPDATA%/Claude/claude_desktop_config.json
npm i -g @kazuph/mcp-qdrant-docs
npx を使用する
このサーバーの実行には、MCP クライアントの設定(例:Claude Desktop の claude_desktop_config.json)内で npx を使用する方法を推奨します。これにより、グローバルインストールが不要になります。
npx を使用する claude_desktop_config.json の例:
{
"mcpServers": {
"react-router-docs": { // A unique name for this server instance
"command": "npx",
"args": [
"@kazuph/mcp-qdrant-docs", // The command registered in package.json bin
// Optional: Add command-line arguments here if needed
// "--start-url", "https://some-default-url.com/",
// "--debug"
],
// Optional: Set environment variables for configuration
"env": {
"DOCS_URL": "https://reactrouter.com/",
"QDRANT_URL": "http://your-qdrant-instance:6333",
"COLLECTION_NAME": "react-router-docs", // Base name for the collection
"EMBEDDING_MODEL": "sentence-transformers/all-MiniLM-L6-v2"
// "DEBUG": "true" // Alternative way to enable debug logging
}
}
// You can add more server instances for different documentation sites here
}
}
コマンドラインオプション
サーバーを直接実行する場合(例:npx mcp-qdrant-docs または npm run dev --)、次のコマンドラインオプションを使用できます。これらのオプションは、対応する環境変数も設定されている場合、それらの値を上書きします。
--start-url <url>または-s <url>:- 必須(
DOCS_URL環境変数が設定されていない場合)。 - スクレイピングするウェブサイトの開始 URL です。
DOCS_URL環境変数を上書きします。
- 必須(
--limit <number>または-l <number>:- スクレイピングするページの最大数です。
- デフォルト:
300。
--match <pattern>または-m <pattern>:- スクレイピング対象を絞り込む URL パスのパターン(プレフィックス一致)です。複数回指定できます。
- 例:
--match /docs/ --match /api/ - デフォルト:
start-urlと同じドメインにあるすべてのページをスクレイピングします。
--force-reindex:- Qdrant コレクションがすでに存在していても、強制的に再スクレイピングして再インデックス化します。
- デフォルト:
false。
--collection-name <name>または-c <name>:- Qdrant コレクションのベース名です。最終的なコレクション名は
<base_name>-<sanitized_hostname>になります。 COLLECTION_NAME環境変数を上書きします。- デフォルト:
docs-collection。
- Qdrant コレクションのベース名です。最終的なコレクション名は
--qdrant-url <url>:- Qdrant インスタンスの URL です。
QDRANT_URL環境変数を上書きします。- デフォルト:
http://localhost:6333。
--embedding-model <model_name>:- 埋め込みの生成に使用するセンテンストランスフォーマーモデルの名前です(Hugging Face またはローカルから指定)。
EMBEDDING_MODEL環境変数を上書きします。- デフォルト:
Xenova/all-MiniLM-L6-v2。
--debug:- 詳細なデバッグログを有効にします。
DEBUG環境変数を(trueに設定されている場合)上書きします。- デフォルト:
false。
--helpまたは-h:- すべてのオプションを一覧表示するヘルプメッセージを表示します。
コマンドラインオプションを使用する例:
npx @kazuph/mcp-qdrant-docs --start-url https://example-docs.com/ --collection-name my-docs --limit 50 --debug
設定の優先順位:
サーバーは、設定に次の優先順位を使用します。
- コマンドライン引数:(例:
--start-url、--collection-name)- 最優先。 - 環境変数:(例:
DOCS_URL、COLLECTION_NAME)- コマンドライン引数が指定されていない場合に使用されます。 - デフォルト値:(コード内で定義)- 最も優先度が低くなります。
例:React Router ドキュメントの追加
React Router ドキュメントを検索するためのサーバーインスタンスを追加するには、mcpServers 設定(例:claude_desktop_config.json)に次のエントリーを追加します。
{
"mcpServers": {
// ... other servers ...
"react-router-docs": {
"command": "npx", // Or the direct path if not installed globally
"args": [
"@kazuph/mcp-qdrant-docs"
// No need to specify --start-url etc. if using env vars
],
"env": {
"DOCS_URL": "https://reactrouter.com/",
"QDRANT_URL": "http://your-qdrant-instance:6333", // Replace with your Qdrant URL
"COLLECTION_NAME": "react-router-docs", // Base name, will become 'react-router-docs-reactrouter_com'
"EMBEDDING_MODEL": "sentence-transformers/all-MiniLM-L6-v2" // Or your preferred model
// "DEBUG": "true" // Enable debug logs if needed
}
}
// ... other servers ...
}
}
生成されるツール:
このサーバーインスタンスが起動して MCP クライアントに接続されると、ask_reactrouter_docs のような名前のツール(ask_reactrouter_com_docs ではありません)が提供されます。
- ツール名:
ask_<doc name>_docs(例:ask_reactrouter_docs) - 説明:
DOCS_URL(または--start-url)で指定されたサイトの内容について質問します。 - 入力: ドキュメントに関する自然言語でのクエリ。
コレクションが存在しない場合、または --force-reindex が使用された場合、サーバーはサイトを自動的にスクレイピングし、指定された Qdrant コレクション(この例では react-router-docs-reactrouter_com)にコンテンツをインデックス化します。その後、インデックスを使用して、提供されたツール(ask_reactrouter_docs)経由でクエリに回答します。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。