Python コードベース分析 RAG システム
このシステムは、抽象構文木(AST)を用いてPythonコードを解析し、抽出した情報(関数、クラス、呼び出し、変数など)をWeaviateベクターデータベースに保存し、モデルコンテキストプロトコル(MCP)サーバーを介してコードベースをクエリおよび理解するためのツールを提供します。埋め込みと自然言語による説明/回答の生成には、GoogleのGeminiモデルを活用しています。
特徴
- コードスキャン: Python ファイルを解析し、コード要素 (関数、クラス、インポート、呼び出し、代入) とその関係を識別します。抽出対象:
- 基本情報: 名前、タイプ、ファイル パス、行番号、コード スニペット、ドキュメント文字列。
- 関数/メソッドの詳細: パラメーター、戻り値の型、シグネチャ、デコレーター。
- スコープ情報: 親スコープ (クラス/関数) UUID、読み取り可能 ID (例:
file:type:name:line
)、基本クラス名。 - 使用情報: スコープ内の属性アクセス、呼び出し関係 (部分的に追跡)。
- ベクター ストレージ: Weaviate を使用して、コード要素とそのベクター埋め込みを保存します (LLM 生成が有効な場合)。
- LLMエンリッチメント(オプション&バックグラウンド): Geminiを使用して、関数とクラスのセマンティック記述と埋め込みを生成します。これは、スキャン後にトリガーされるバックグラウンドタスクとして、または手動で実行されます。.env
.env
で有効化/無効化できます。 - 自動改良 (オプション & バックグラウンド): LLM 生成が有効になっている場合、バックグラウンド処理の一部としてコンテキスト (呼び出し元、呼び出し先、兄弟、関連変数) を使用して、新しい関数または更新された関数の説明を自動的に改良します。
- **RAG Q&A:**検索拡張生成を使用してコードベースに関する自然言語の質問に回答します (LLM 機能が有効になっており、バックグラウンド処理が完了している必要があります)。
- **ユーザーの説明:**ユーザーが特定のコード要素に手動でメモを追加できるようにします。
- **視覚化:**保存された関係に基づいて MermaidJS 呼び出しグラフを生成します。
- MCP サーバー: MCP ツールを使用して分析およびクエリ機能を公開し、コードベースとアクティブなコードベース コンテキストを管理します。
- **ファイルウォッチャー(統合):**コードベースがスキャンされると自動的に開始(
scan_codebase
)し、別のコードベースが選択されると(select_codebase
)、またはコードベースが削除されると(delete_codebase
)停止します。アクティブなコードベースのファイルが変更されると、再解析とデータベース更新がトリガーされます。start_watcher およびstop_watcher
ツールを介して手動で制御することstart_watcher
できます。 - **コードベースの依存関係:**スキャンされたコードベース間の依存関係を定義できます (
add_codebase_dependency
、remove_codebase_dependency
)。 - **コードベース間のクエリ:**アクティブなコードベースとその宣言された依存関係全体での検索 (
find_element
) と質問 (ask_question
) を可能にします。
設定
- 環境: Python 3.10 以上と Docker がインストールされていることを確認します。
- Weaviate: Docker Compose を使用して Weaviate インスタンスを起動します。
- 依存関係: Python パッケージをインストールします:
- **APIキーと設定:**プロジェクトルートに
.env
ファイルを作成し、Gemini APIキーを追加します。その他の設定も行えます。 - **MCP サーバーの実行:**別のターミナルでサーバーを起動します。(ツールが利用できるようにするには、このターミナルが実行中であることを確認してください)
アーキテクチャの概要
このシステムはPythonコードを分析し、抽出した情報をWeaviateベクターデータベースに保存し、モデルコンテキストプロトコル(MCP)サーバーを介してコードベースをクエリおよび理解するためのツールを提供します。埋め込みと自然言語による説明/回答の生成には、GoogleのGeminiモデルを活用しています。
主なモジュールは次のとおりです。
code_scanner.py
: Python ファイルを検索し、AST を使用して解析し、構造要素 (関数、クラス、インポート、呼び出しなど) を抽出し、Weaviate 用のデータを準備します。weaviate_client.py
: Weaviate への接続を管理し、データ スキーマ (CodeFile
、CodeElement
、CodebaseRegistry
) を定義し、データのバッチアップロード、クエリ、更新、削除の機能を提供します。rag.py
: コードベースに関する質問に答えるための検索拡張生成(RAG)を実装しています。セマンティック検索を使用して関連するコード要素を見つけ、LLMを使用して回答を合成します。mcp_server.py
: FastMCP サーバーを設定し、CodebaseRegistry
コレクション内のコードベースを管理し、アクティブなコードベース コンテキスト (ACTIVE_CODEBASE_NAME
) を処理し、ファイル監視ロジック (自動開始/停止を含む) を統合し、コードベースの依存関係を管理し、詳細な引数の説明を持つ MCP ツールとして分析機能を公開します。visualization.py
: 保存された関係に基づいて MermaidJS 呼び出しグラフを生成します。
システムは、 CodeFile
およびCodeElement
コレクションに Weaviate のマルチテナント機能を使用します。テナント ID はユーザー定義のcodebase_name
です。別の非マルチテナントCodebaseRegistry
コレクションは、コードベースのメタデータ(名前、ディレクトリ、ステータス、サマリー、ウォッチャーステータス、依存関係)を追跡します。サーバーのACTIVE_CODEBASE_NAME
グローバル変数は、クエリのプライマリコードベーステナントを決定します。クエリツール( find_element
、 ask_question
)は、レジストリに保存されているアクティブなコードベースと宣言された依存関係をオプションで検索できます。list_codebases ツールlist_codebases
使用すると、すべてのコードベースのステータスと依存関係を表示できます。
バックグラウンドLLM処理は、コード要素の意味記述と埋め込みを生成するために使用されます。これはオプション機能であり、 .env
ファイルで有効化/無効化できます。
使用可能なツールとその引数に関する詳細情報は、サーバーの実行後、標準の MCP イントロスペクション メソッドを使用して MCP サーバーから直接取得できます。
This server cannot be installed
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
AST を使用して Python コードベースを分析し、コード要素をベクター データベースに保存し、Google の Gemini モデルと RAG を使用してコードの構造と機能に関する自然言語クエリを可能にする MCP サーバー。
Related MCP Servers
- AsecurityAlicenseAqualityA MCP server for managing and storing code snippets in various programming languages, allowing users to create, list, and delete snippets via a standardized interface.Last updated -34JavaScriptMIT License
- -securityFlicense-qualityAn MCP server that enables language models to access code intelligence features like completions, definitions, and references across multiple programming languages through the Language Server Protocol.Last updated -Python
- -securityAlicense-qualityAn MCP server that implements Claude Code-like functionality, allowing the AI to analyze codebases, modify files, execute commands, and manage projects through direct file system interactions.Last updated -179PythonMIT License
- -securityAlicense-qualityAn MCP server that analyzes codebases and generates contextual prompts, making it easier for AI assistants to understand and work with code repositories.Last updated -10PythonMIT License