ドキュメント検索MCPサーバー(DOCRET)
このプロジェクトは、AIアシスタントがLangChain、LlamaIndex、OpenAIを含む様々なPythonライブラリの最新ドキュメントにアクセスできるようにするModel Context Protocol(MCP)サーバーを実装します。このサーバーを活用することで、AIアシスタントは公式ドキュメントソースから関連情報を動的に取得し、提供できるようになります。AIアプリケーションが常に最新の公式ドキュメントにアクセスできるようにすることを目標としています。
MCP サーバーとは何ですか?
モデルコンテキストプロトコル(MCP)は、開発者がデータソースとAI搭載ツール間の安全な双方向接続を構築できるようにするオープンスタンダードです。アーキテクチャはシンプルで、開発者はMCPサーバーを介してデータを公開するか、これらのサーバーに接続するAIアプリケーション(MCPクライアント)を構築することができます。
Related MCP server: Python Docs Server
特徴
動的ドキュメント取得: 指定された Python ライブラリの最新のドキュメント コンテンツを取得します。
非同期 Web 検索: SERPER APIを利用して、対象のドキュメント サイト内で効率的な Web 検索を実行します。
HTML 解析: BeautifulSoup を使用して、HTML コンテンツから読み取り可能なテキストを抽出します。
拡張可能な設計: 構成を更新することで、追加のライブラリのサポートを簡単に追加できます。
前提条件
Python 3.8以上
Python パッケージ管理用の UV (一般人なら pip)
Serper API キー(Google 検索または「SERP」用)
Claude Desktop または Claude Code (テスト用)
インストール
1. リポジトリのクローンを作成する
2. 仮想環境を作成してアクティブ化する
macOS/Linuxの場合:
python3 -m venv env source env/bin/activateWindowsの場合:
python -m venv env .\env\Scripts\activate
3. 依存関係をインストールする
仮想環境をアクティブ化したら、必要な依存関係をインストールします。
またはuvを使用している場合:
環境変数を設定する
アプリケーションを実行する前に、必要な環境変数を設定してください。このプロジェクトでは、ドキュメントの検索にSERPER APIを使用するため、APIキーが必要です。
プロジェクトのルート ディレクトリに
.envファイルを作成します。次の環境変数を追加します。
SERPER_API_KEY=your_serper_api_key_here
your_serper_api_key_here実際の API キーに置き換えます。
MCPサーバーの実行
依存関係がインストールされ、環境変数が設定されると、MCP サーバーを起動できます。
これによりサーバーが起動し、リクエストを処理できる状態になります。
使用法
MCPサーバーは、サポートされているライブラリからドキュメントコンテンツを取得するためのAPIを提供します。このAPIは、SERPER APIにクエリを送信して関連するドキュメントリンクを取得し、ページコンテンツをスクレイピングすることで機能します。
ドキュメントの検索
ライブラリ内の特定のトピックに関するドキュメントを検索するには、 get_docs関数を使用します。この関数は2つのパラメータを取ります。
query: 検索するトピック(例:「Chroma DB」)library: ライブラリの名前(例:"langchain")
使用例:
これにより、関連する OpenAI ドキュメント ページから抽出されたテキストが返されます。
AIアシスタントとの統合
このMCPサーバーは、ClaudeのようなAIアシスタントやカスタムビルドのAIモデルと統合できます。アシスタントがサーバーと連携するように設定するには、以下の設定を使用します。
main.pyへの正しいパスが指定されていることを確認してください。
MCPサーバーの拡張
サーバーは現在、次のライブラリをサポートしています。
ランチェーン
ラマインデックス
オープンAI
追加のライブラリのサポートを追加するには、 main.pyのdocs_urls辞書をライブラリ名とそのドキュメント URL で更新します。
📌 ロードマップ
これは私にとって本当にエキサイティングなことであり、これをさらに発展させ、実装できる最新のニュースやアイデアを常に把握することを楽しみにしています。
私が考えていることは次の通りです。
より多くのライブラリのサポートを追加(例:Hugging Face、PyTorch)
追加のライブラリを使用して
docs_urls辞書を拡張します。さまざまな形式のドキュメント ページを処理できるように get_docs 関数を変更します。
正規表現ベースまたは AI を活用した解析を使用して、意味のあるコンテンツをより適切に抽出します。
新しいライブラリを動的に追加するための API エンドポイントを提供します。
冗長なAPI呼び出しを削減するためにキャッシュを実装する
Redis または
functools.lru_cacheのようなメモリ内キャッシュ機構を使用する時間ベースのキャッシュ無効化を実装します。
ライブラリごと、および検索用語ごとに結果をキャッシュします。
AIを活用した要約でWebスクレイピングを最適化
スクレイピングしたドキュメントを要約するには、
GPT-4、BART、またはT5を使用します。Claude 3 Haiku、Gemini 1.5 Pro、GPT-4-mini、Open-mistral-nemo、Hugging Face Modelsなど、他にも使用できるモデルは多数あります。いずれも議論の余地があります。ユーザーが生のドキュメント テキストと要約バージョンを選択できるようにします。
外部統合用のREST APIを導入する
FastAPI を使用して API エンドポイントを公開します。(理由はありません)
API 操作用のシンプルなフロントエンド ダッシュボードを構築します。(なぜダメなのでしょう?)
信頼性向上のためにユニットテストを追加する参考文献
APIとスクレイピングの信頼性テストにはpytestとunittestを使用してください。(これが核爆弾に変わるのは絶対に避けたいです)
CI/CD ワークフローを実装し、プッシュごとにテストを自動的に実行します。(もちろん、これが基本です)
開発中に役立つその他のMCPツール
データベース統合
Google ドキュメント/スプレッドシート/ドライブの統合
ファイルシステム操作
Git統合
コミュニケーションプラットフォームを統合してアイデアを製品に変換
DockerとKubernetesの管理
参考文献
MCP サーバーとその実装の詳細については、次のガイドを参照してください。
ライセンス
このプロジェクトはMITライセンスの下でライセンスされています。詳細はLICENSEファイルをご覧ください。