mcpField
M
mcp-qdrant-docs MCP Server

mcp-qdrant-docs MCP Server

ローカル
github.com/kazuphデータベース181 週間前に更新

mcp-qdrant-docs MCP Server について

WebサイトをスクレイピングしてQdrantにインデックス化し、自然言語でドキュメントを検索できるTypeScript製MCPサーバーです。URL、ページ数、パスパターンで取得範囲を設定できます。

主な機能

  1. 01Webページのスクレイピング
  2. 02コンテンツの分割と埋め込み生成
  3. 03Qdrantへのインデックス保存
  4. 04自然言語によるドキュメント検索
  5. 05ページ数とパスによる範囲設定

活用シーン

  1. 01Honoドキュメントの検索
  2. 02React Routerドキュメントの検索
  3. 03Gradioドキュメントからの情報検索

MCP 対応

MCPクライアントから、対象サイトに応じて動的に命名される検索ツールを呼び出せます。例:ask_reactrouter_docs。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"qdrant-docs": {
"command": "npx",
"args": [
"-y",
"@kazuph/mcp-qdrant-docs"
]
}
}
}
起動コマンドnpx -y @kazuph/mcp-qdrant-docs

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@kazuph/mcp-qdrant-docs

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

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)。
  • 機能: 指定したウェブサイトからスクレイピングしたコンテンツについて、自然言語で質問できます。
  • 処理:
    1. 起動時(または force-reindex が指定された場合)、サーバーが対象のウェブサイトをスクレイピングします。
    2. スクレイピングしたコンテンツを処理してチャンクに分割し、センテンストランスフォーマーモデルを使って埋め込みを生成します。
    3. これらの埋め込みとコンテンツのチャンクは、そのウェブサイト専用の Qdrant コレクションに保存されます。
    4. クエリを指定してツールを呼び出すと、サーバーがクエリの埋め込みを生成し、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-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

設定の優先順位:

サーバーは、設定に次の優先順位を使用します。

  1. コマンドライン引数:(例:--start-url、--collection-name)- 最優先。
  2. 環境変数:(例:DOCS_URL、COLLECTION_NAME)- コマンドライン引数が指定されていない場合に使用されます。
  3. デフォルト値:(コード内で定義)- 最も優先度が低くなります。

例: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)経由でクエリに回答します。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

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