Documentation Retrieval MCP Server (DOCRET)

ドキュメント検索MCPサーバー(DOCRET)

このプロジェクトは、AIアシスタントがLangChain、LlamaIndex、OpenAIを含む様々なPythonライブラリの最新ドキュメントにアクセスできるようにするModel Context Protocol(MCP)サーバーを実装します。このサーバーを活用することで、AIアシスタントは公式ドキュメントソースから関連情報を動的に取得し、提供できるようになります。AIアプリケーションが常に最新の公式ドキュメントにアクセスできるようにすることを目標としています。

MCP サーバーとは何ですか?

モデルコンテキストプロトコル(MCP)は、開発者がデータソースとAI搭載ツール間の安全な双方向接続を構築できるようにするオープンスタンダードです。アーキテクチャはシンプルで、開発者はMCPサーバーを介してデータを公開するか、これらのサーバーに接続するAIアプリケーション(MCPクライアント)を構築することができます。

特徴

  • 動的ドキュメント取得: 指定された Python ライブラリの最新のドキュメント コンテンツを取得します。
  • 非同期 Web 検索: SERPER APIを利用して、対象のドキュメント サイト内で効率的な Web 検索を実行します。
  • HTML 解析: BeautifulSoup を使用して、HTML コンテンツから読み取り可能なテキストを抽出します。
  • 拡張可能な設計: 構成を更新することで、追加のライブラリのサポートを簡単に追加できます。

前提条件

  • Python 3.8以上
  • Python パッケージ管理用の UV (一般人なら pip)
  • Serper API キー(Google 検索または「SERP」用)
  • Claude Desktop または Claude Code (テスト用)

インストール

1. リポジトリのクローンを作成する

git clone https://github.com/Sreedeep-SS/docret-mcp-server.git cd docret-mcp-server

2. 仮想環境を作成してアクティブ化する

  • macOS/Linuxの場合:
    python3 -m venv env source env/bin/activate
  • Windowsの場合:
    python -m venv env .\env\Scripts\activate

3. 依存関係をインストールする

仮想環境をアクティブ化したら、必要な依存関係をインストールします。

pip install -r requirements.txt

またはuvを使用している場合:

uv sync

環境変数を設定する

アプリケーションを実行する前に、必要な環境変数を設定してください。このプロジェクトでは、ドキュメントの検索にSERPER APIを使用するため、APIキーが必要です。

  1. プロジェクトのルート ディレクトリに.envファイルを作成します。
  2. 次の環境変数を追加します。
    SERPER_API_KEY=your_serper_api_key_here

your_serper_api_key_here実際の API キーに置き換えます。

MCPサーバーの実行

依存関係がインストールされ、環境変数が設定されると、MCP サーバーを起動できます。

python main.py

これによりサーバーが起動し、リクエストを処理できる状態になります。

使用法

MCPサーバーは、サポートされているライブラリからドキュメントコンテンツを取得するためのAPIを提供します。このAPIは、SERPER APIにクエリを送信して関連するドキュメントリンクを取得し、ページコンテンツをスクレイピングすることで機能します。

ドキュメントの検索

ライブラリ内の特定のトピックに関するドキュメントを検索するには、 get_docs関数を使用します。この関数は2つのパラメータを取ります。

  • query : 検索するトピック(例:「Chroma DB」)
  • library : ライブラリの名前(例:"langchain")

使用例:

from main import get_docs result = await get_docs("memory management", "openai") print(result)

これにより、関連する OpenAI ドキュメント ページから抽出されたテキストが返されます。

AIアシスタントとの統合

このMCPサーバーは、ClaudeのようなAIアシスタントやカスタムビルドのAIモデルと統合できます。アシスタントがサーバーと連携するように設定するには、以下の設定を使用します。

{ "servers": [ { "name": "Documentation Retrieval Server", "command": "python /path/to/main.py" } ] }

main.pyへの正しいパスが指定されていることを確認してください。

MCPサーバーの拡張

サーバーは現在、次のライブラリをサポートしています。

  • ランチェーン
  • ラマインデックス
  • オープンAI

追加のライブラリのサポートを追加するには、 main.pydocs_urls辞書をライブラリ名とそのドキュメント URL で更新します。

docs_urls = { "langchain": "python.langchain.com/docs", "llama-index": "docs.llamaindex.ai/en/stable", "openai": "platform.openai.com/docs", "new-library": "new-library-docs-url.com", }

📌 ロードマップ

これは私にとって本当にエキサイティングなことであり、これをさらに発展させ、実装できる最新のニュースやアイデアを常に把握することを楽しみにしています。

私が考えていることは次の通りです。

  1. より多くのライブラリのサポートを追加(例:Hugging Face、PyTorch)

    • 追加のライブラリを使用してdocs_urls辞書を拡張します。
    • さまざまな形式のドキュメント ページを処理できるように get_docs 関数を変更します。
    • 正規表現ベースまたは AI を活用した解析を使用して、意味のあるコンテンツをより適切に抽出します。
    • 新しいライブラリを動的に追加するための API エンドポイントを提供します。
  2. 冗長なAPI呼び出しを削減するためにキャッシュを実装する

    • Redis またはfunctools.lru_cacheのようなメモリ内キャッシュ機構を使用する
    • 時間ベースのキャッシュ無効化を実装します。
    • ライブラリごと、および検索用語ごとに結果をキャッシュします。
  3. AIを活用した要約でWebスクレイピングを最適化

    • スクレイピングしたドキュメントを要約するには、 GPT-4BART 、またはT5を使用します。
    • Claude 3 HaikuGemini 1.5 ProGPT-4-miniOpen-mistral-nemoHugging Face Modelsなど、他にも使用できるモデルは多数あります。いずれも議論の余地があります。
    • ユーザーが生のドキュメント テキストと要約バージョンを選択できるようにします。
  4. 外部統合用のREST APIを導入する

    • FastAPI を使用して API エンドポイントを公開します。(理由はありません)
    • API 操作用のシンプルなフロントエンド ダッシュボードを構築します。(なぜダメなのでしょう?)
  5. 信頼性向上のためにユニットテストを追加する参考文献

    • APIとスクレイピングの信頼性テストにはpytestとunittestを使用してください。(これが核爆弾に変わるのは絶対に避けたいです)
    • CI/CD ワークフローを実装し、プッシュごとにテストを自動的に実行します。(もちろん、これが基本です)
  6. 開発中に役立つその他のMCPツール

    • データベース統合
    • Google ドキュメント/スプレッドシート/ドライブの統合
    • ファイルシステム操作
    • Git統合
    • コミュニケーションプラットフォームを統合してアイデアを製品に変換
    • DockerとKubernetesの管理

参考文献

MCP サーバーとその実装の詳細については、次のガイドを参照してください。

ライセンス

このプロジェクトはMITライセンスの下でライセンスされています。詳細はLICENSEファイルをご覧ください。

ID: j1bg7jklhy