Community研究&データ分析github.com

Lekssays/codebadger

🦡 codebadger は、AIエージェントやLLMに対して、Joernコードプロパティグラフ(CPG)を介してコードベースの構造とデータフローへの深くクエリ可能なアクセスを提供する、コンテナ化されたModel Context Protocol(MCP)サーバーです。

codebadger とは?

codebadger は、Joernをベースにしたコードプロパティグラフ(CPG)を活用し、AIエージェントや大規模言語モデル(LLM)がコードベースの構造やデータフローを深く理解・クエリできるようにするためのMCPサーバーです。コンテナ化されているため、環境依存を気にせず簡単に起動でき、Claude CodeやCursor、CodexなどのMCP対応クライアントシームレスに統合できます。このスキールにより、開発者はコードの依存関係、関数の呼び出し関係、変数のデータフローなどを自然言語で問い合わせることができ、複雑なリファクタリングやバグ調査、コードレビューを効率化できます。

対応~Claude Code~Codex CLI~Cursor
npx skills add Lekssays/codebadger

Installed? Explore more 研究&データ分析 skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

codebadger は何をしますか?

🦡 codebadger は、AIエージェントやLLMに対して、Joernコードプロパティグラフ(CPG)を介してコードベースの構造とデータフローへの深くクエリ可能なアクセスを提供する、コンテナ化されたModel Context Protocol(MCP)サーバーです。

概要

codebadger は、Joern CPG(Code Property Graph)を活用して、コードベースの静的な解析を実行します。これにより、開発者は「この関数を呼び出しているのはどこか」「特定の変数のデータフローはどのようになっているか」といった複雑な質問を、自然言語または構造化されたクエリでAIに問い合わせることができます。

特徴

  • コンテナ化: DockerまたはPodmanで簡単に起動でき、依存関係を気にする必要がありません。
  • Joern CPG統合: コードベースをCPGに変換し、グラフベースのクエリを可能にします。
  • MCP互換: Claude Code、Cursor、CodexなどのMCP対応クライアントで使用できます。
  • データフロー分析: 変数や関数のデータフローを追跡し、セキュリティ脆弱性やバグを特定するのに役立ちます。

前提条件

  • Docker または Podman がインストールされていること。
  • 解析したいコードベースへのアクセス権があること。
  • MCP対応のAIクライアント(Claude Code, Cursor, Codexなど)がセットアップされていること。

クイックスタート

# リポジトリをクローン
git clone https://github.com/Lekssays/codebadger.git
cd codebadger

# コンテナをビルドして起動
docker-compose up -d

# またはPodmanを使用する場合
podman-compose up -d

使用方法

MCPクライアントの設定

MCP対応クライアント(例: Claude Code)でcodebadgerを使用するには、以下の設定を追加します:

{
  "mcpServers": {
    "codebadger": {
      "command": "docker",
      "args": ["exec", "-i", "codebadger", "node", "/app/dist/index.js"],
      "env": {}
    }
  }
}

サポートされるクエリ

codebadger は以下のようなクエリをサポートしています(例):

  • find_calls("function_name"): 特定の関数を呼び出しているすべての箇所を検索
  • data_flow("variable_name"): 特定の変数のデータフローを追跡
  • get_dependencies(): コードベース全体の依存関係グラフを取得
  • get_ast("file_path"): 指定したファイルの抽象構文木(AST)を取得

設定

環境変数による設定:

変数名説明デフォルト値
MCP_PORTMCPサーバーのポート8080
JOERN_PORTJoernサービスのポート9000
CODEBASE_PATH解析するコードベースのパス/codebase
LOG_LEVELログレベルinfo

アーキテクチャ

+------------------+       +------------------+       +------------------+
| MCP Client       | <--> | codebadger MCP   | <--> | Joern CPG Engine |
| (Claude/Cursor)  |       |  Server          |       |                  |
+------------------+       +------------------+       +------------------+
                                 ^                     ^
                                 |                     |
                          +------+------+       +------+------+
                          | Codebase    |       | CPG Graph   |
                          | (files)     |       | (Neo4j)     |
                          +-------------+       +-------------+

開発

ローカルでの実行

# 依存関係のインストール
npm install

# ビルド
npm run build

# テストの実行
npm test

貢献

プルリクエストは大歓迎です。大きな変更を加える場合は、まずイシューを開いて議論してください。

ライセンス

MIT

関連スキル