hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Integrations
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 インスタンスを起動します。Copy
- 依存関係: Python パッケージをインストールします:Copy
- **APIキーと設定:**プロジェクトルートに
.env
ファイルを作成し、Gemini APIキーを追加します。その他の設定も行えます。Copy - **MCP サーバーの実行:**別のターミナルでサーバーを起動します。(ツールが利用できるようにするには、このターミナルが実行中であることを確認してください)Copy
アーキテクチャの概要
このシステムは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
AST を使用して Python コードベースを分析し、コード要素をベクター データベースに保存し、Google の Gemini モデルと RAG を使用してコードの構造と機能に関する自然言語クエリを可能にする MCP サーバー。