Skip to main content
Glama

Python Codebase Analysis RAG System

by shervinemp

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_dependencyremove_codebase_dependency )。
  • **コードベース間のクエリ:**アクティブなコードベースとその宣言された依存関係全体での検索 ( find_element ) と質問 ( ask_question ) を可能にします。

設定

  1. 環境: Python 3.10 以上と Docker がインストールされていることを確認します。
  2. Weaviate: Docker Compose を使用して Weaviate インスタンスを起動します。
    docker-compose up -d
  3. 依存関係: Python パッケージをインストールします:
    pip install -r requirements.txt
  4. **APIキーと設定:**プロジェクトルートに.envファイルを作成し、Gemini APIキーを追加します。その他の設定も行えます。
    # --- Required --- GEMINI_API_KEY=YOUR_API_KEY_HERE # --- Optional --- # Set to true to enable background LLM description generation and refinement GENERATE_LLM_DESCRIPTIONS=true # Max concurrent background LLM tasks (embeddings/descriptions/refinements) LLM_CONCURRENCY=5 # ANALYZE_ON_STARTUP is no longer used. Scanning is done via the scan_codebase tool. # Specify Weaviate connection details if not using defaults # WEAVIATE_HOST=localhost # WEAVIATE_PORT=8080 # WEAVIATE_GRPC_PORT=50051 # Specify alternative Gemini models if desired # GENERATION_MODEL_NAME="models/gemini-pro" # EMBEDDING_MODEL_NAME="models/embedding-001" # Adjust Weaviate batch size # WEAVIATE_BATCH_SIZE=100 # SEMANTIC_SEARCH_LIMIT=5 # SEMANTIC_SEARCH_DISTANCE=0.7 # Watcher polling interval (seconds) # WATCHER_POLLING_INTERVAL=5
  5. **MCP サーバーの実行:**別のターミナルでサーバーを起動します。
    python src/code_analysis_mcp/mcp_server.py
    (ツールが利用できるようにするには、このターミナルが実行中であることを確認してください)

アーキテクチャの概要

このシステムはPythonコードを分析し、抽出した情報をWeaviateベクターデータベースに保存し、モデルコンテキストプロトコル(MCP)サーバーを介してコードベースをクエリおよび理解するためのツールを提供します。埋め込みと自然言語による説明/回答の生成には、GoogleのGeminiモデルを活用しています。

主なモジュールは次のとおりです。

  • code_scanner.py : Python ファイルを検索し、AST を使用して解析し、構造要素 (関数、クラス、インポート、呼び出しなど) を抽出し、Weaviate 用のデータを準備します。
  • weaviate_client.py : Weaviate への接続を管理し、データ スキーマ ( CodeFileCodeElementCodebaseRegistry ) を定義し、データのバッチアップロード、クエリ、更新、削除の機能を提供します。
  • 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_elementask_question )は、レジストリに保存されているアクティブなコードベースと宣言された依存関係をオプションで検索できます。list_codebases ツールlist_codebases使用すると、すべてのコードベースのステータスと依存関係を表示できます。

バックグラウンドLLM処理は、コード要素の意味記述と埋め込みを生成するために使用されます。これはオプション機能であり、 .envファイルで有効化/無効化できます。

使用可能なツールとその引数に関する詳細情報は、サーバーの実行後、標準の MCP イントロスペクション メソッドを使用して MCP サーバーから直接取得できます。

-
security - not tested
F
license - not found
-
quality - not tested

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 サーバー。

  1. 特徴
    1. 設定
      1. アーキテクチャの概要

        Related MCP Servers

        • A
          security
          F
          license
          A
          quality
          An MCP server that enables LLMs to understand and analyze code structure through function call graphs, allowing AI assistants to explore relationships between functions and analyze dependencies in Python repositories.
          Last updated -
          6
          11
          Python
        • -
          security
          A
          license
          -
          quality
          An MCP server that analyzes codebases and generates contextual prompts, making it easier for AI assistants to understand and work with code repositories.
          Last updated -
          10
          Python
          MIT License
        • A
          security
          A
          license
          A
          quality
          Advanced code search and transformation MCP server for AI assistants. Combines ugrep's speed with intelligent replace capabilities, dry-run previews, and language-aware refactoring across 11 tools.
          Last updated -
          1
          3
          JavaScript
          MIT License
          • Apple
        • -
          security
          F
          license
          -
          quality
          A Python-based MCP server that enables integration of Gemini AI models with MCP-compatible applications like Cursor/Claude, allowing for interaction with Gemini APIs through the Model Context Protocol.
          Last updated -
          1
          Python

        View all related MCP servers

        MCP directory API

        We provide all the information about MCP servers via our MCP API.

        curl -X GET 'https://glama.ai/api/mcp/v1/servers/shervinemp/CodebaseMCP'

        If you have feedback or need assistance with the MCP directory API, please join our Discord server