Skip to main content
Glama

AI コーディングエージェントは、ツール呼び出しの大半を grep、cat、find、ファイル読み取りによるコードベースの手探りに費やしています。rpg-encoder はそれを解決します。Tree-sitter を使ってコードのセマンティックグラフを構築し、「何が何を呼ぶか」だけでなく「各関数が何をするか」を捉え、MCP 経由で単一のツール呼び出しにより AI アシスタントにリポジトリ全体の理解を与えます。


クイックスタート

claude mcp add rpg -- npx -y -p rpg-encoder rpg-mcp-server

1 つのコマンドで完了します。Claude Code、Cursor、opencode、Windsurf、その他 MCP 互換エージェントで動作します。Rust ツールチェーンも、クローンも、ビルドも不要です。npx がプラットフォーム向けのビルド済みバイナリをダウンロードします。

あとは任意のリポジトリを開いて、エージェントにこう伝えるだけです:

"このリポジトリの RPG をビルドしてリフトしてください"

エージェントがすべて処理します: エンティティのインデックス化(数秒)、各関数の読み取りと意図レベルのフィーチャー追加(数分)、それらをセマンティック階層に整理し、チーム用に .rpg/graph.json をコミットします。

~100+ エンティティのリポジトリでは、lifting_status がエージェントにリフティングループをサブエージェントまたは低コストモデルへ委任するよう指示します。フィーチャー抽出はパターンマッチングであり、新しい推論ではないからです。ランタイムにサブエージェントの仕組みがない場合は、API キーを指定してターミナルで rpg-encoder lift --provider anthropic|openai を実行してください。CLI がエージェントを介さず外部 LLM を直接駆動します。CLI の完了後、セッション内で reload_rpg を呼び出して更新されたグラフを読み込みます。CLI はフィーチャーを持たないエンティティをリフトします。コード変更後に陳腐化したエンティティ(フィーチャーはあるが古い)の再リフトは、CLI ではなくセッション内の MCP フローで処理されます。

リフトが完了したら、試してみてください:

  • "認証を処理しているのは何?" — "auth" と名付けられたものがどこにもなくてもコードを見つけます

  • "データベース接続に依存するすべてを表示して"

  • "API エンドポイントにレート制限を追加する変更を計画して"


Related MCP server: code-intel

grep、cat、find より先に RPG を使う

サーバー指示は、コードの構造や動作に関するあらゆる質問について、エージェントにまず RPG ツールを最初に使うよう指示します。この反射が重要です。grep、cat、場当たり的なファイル読み取りはトークンを浪費し、RPG がすでに把握しているセマンティックな関係を見逃します。

従来はこれを使っていた場合

代わりにこれを使う

grep -r / rg(意図による検索)

search_node(query="...")

grep -r / rg(名前による検索)

search_node(query="...", mode="snippets")

cat / 関数の読み取り

fetch_node(entity_id="file:name")

呼び出し元/呼び出し先を探す連鎖的な grep

explore_rpg(entity_id="...", direction="...")

「X に依存しているもの」を探す再帰 grep

impact_radius(entity_id="...")

wc -l / find / tree

rpg_info

文脈把握のための多数のファイル読み取り

semantic_snapshot

手動の検索 → 取得 → 探索の連鎖

context_pack(query="...")

「X を安全にリファクタリングする方法」

plan_change(goal="...")

grep、cat、ファイル読み取りにフォールバックするのは、クエリがリテラルテキスト(文字列検索、コメント、TODO、ログメッセージ)に関する場合だけにしてください。構造に関するものではありません。


仕組み

  1. パース — Tree-sitter が 15 言語からエンティティ(関数、クラス、メソッド)と依存関係エッジ(インポート、呼び出し、継承)を抽出します。

  2. リフト — LLM(エージェント、または Haiku のような低コスト API)が各エンティティを読み取り、動詞-目的語のフィーチャーを記述します: "JWT トークンを検証する"、"設定をディスクにシリアライズする"。

  3. 組織化 — フィーチャーが 3 レベルのセマンティック階層(エリア → カテゴリ → サブカテゴリ)にクラスタリングされます。これはファイルツリーではなく、コードが何をするかから生成されます。

  4. 理解 — semantic_snapshot がグラフ全体を ~25K トークンに圧縮します。LLM はそれを一度読むだけでリポジトリを把握できます。

セマンティックスナップショット

ファイルを grep する代わりに、LLM は semantic_snapshot を 1 回呼び出して以下を受け取ります:

  • 階層 — 集約フィーチャーを持つすべての機能エリア

  • エンティティ — エリアごとにグループ化されたすべての関数、クラス、メソッドと、そのセマンティックなフィーチャー

  • 依存関係スケルトン — 修飾名付きの凝縮されたコールグラフ

  • ホットスポット — 最も接続数の多い上位 10 エンティティ(アーキテクチャの背骨)

~25K トークンで ~1000 エンティティをカバーします。これは 1M コンテキストウィンドウの 2〜3% です。LLM は毎セッション、リポジトリを把握した状態で開始します。

自己メンテナンスグラフ

作業ツリーが変更されるたび(コミット済み、ステージ済み、未ステージのいずれでも)、MCP サーバーは次のクエリに応答する前に自動的に再同期します。(path, size, mtime) に対するチェンジセットハッシュにより、同じファイルの繰り返し保存は 1 回の同期にまとめられ、アイドル状態のクエリでは同期は発生しません。リバートも検出されます。以前ダーティだったファイルが HEAD 状態に戻った場合、グラフが復元されます。

2 つのリフト方法

モード

コマンド

コスト

支払い元

エージェントリフティング

"RPG をビルドしてリフト"

サブスクリプショントークン

あなたの Claude Code / Cursor サブスクリプション

自律リフティング

auto_lift(provider="anthropic", api_key_env="ANTHROPIC_API_KEY")

100 エンティティあたり ~$0.02

外部 API キー(Haiku、GPT-4o-mini、OpenRouter、Gemini)

auto_lift は低コストの外部 LLM を直接呼び出します。コーディングサブスクリプションがリフティング作業に関与することはありません。api_key_env を使用して環境変数からキーを解決することで、キーがツール呼び出しのトランスクリプトに一切表示されないようにできます。


アーキテクチャ

7 つの Rust クレート、1 つの MCP サーバーバイナリ、1 つの CLI バイナリ:

クレート

役割

rpg-core

グラフ型(RPGraph、Entity、HierarchyNode)、ストレージ、LCA アルゴリズム

rpg-parser

Tree-sitter によるエンティティ + 依存関係の抽出(15 言語)

rpg-encoder

エンコーディングパイプライン、リフティングユーティリティ、段階的進化

rpg-nav

検索、取得、探索、スナップショット、TOON シリアライゼーション

rpg-lift

自律 LLM リフティング(Anthropic、OpenAI、OpenRouter、Gemini)

rpg-cli

CLI バイナリ(rpg-encoder)

rpg-mcp

27 のツールを備えた MCP サーバーバイナリ(rpg-mcp-server)


MCP ツール (27)

ツール

説明

build_rpg

コードベースをインデックス化(1 回実行するだけ、即時)

update_rpg

git の変更から段階的に更新

reload_rpg

外部変更後にディスクからグラフを再読み込み

rpg_info

グラフ統計、階層概要、エリアごとのリフティングカバレッジ

ツール

説明

semantic_snapshot

1 回の呼び出しでリポジトリ全体をセマンティックに理解(1000 エンティティで約 ~25K トークン)

search_node

意図またはキーワードでエンティティを検索(ハイブリッド埋め込み + 字句スコアリング)

fetch_node

エンティティのメタデータ、ソースコード、依存関係、階層コンテキストを取得

explore_rpg

依存グラフを走査(上流、下流、またはその両方)

context_pack

トークン予算付きの検索 + 取得 + 探索を 1 回の呼び出しで実行

ツール

説明

impact_radius

BFS 到達可能性分析 —「X に依存しているものは?」

plan_change

変更計画 — 関連エンティティ、変更順序、影響範囲の特定

find_paths

2 つのエンティティ間の K 最短依存パス

slice_between

エンティティ間の最小接続サブグラフを抽出

analyze_health

コードヘルス: 結合度、不安定性、神クラス、クローン検出

detect_cycles

循環依存とアーキテクチャ上の循環を検出

reconstruct_plan

依存関係を安全に考慮した再構築実行計画

ツール

説明

auto_lift

安価な LLM API(Haiku、GPT-4o-mini、OpenRouter、Gemini)によるワンコール自律リフティング

lifting_status

ダッシュボード — カバレッジ、エリア別進捗、NEXT STEP

get_entities_for_lifting

エージェントが解析するエンティティのソースコードを取得

submit_lift_results

エージェントのセマンティック特徴をグラフに送り返す

finalize_lifting

ファイルレベルの特徴を集約し、階層メタデータを再構築

get_files_for_synthesis

全体的な合成のためのファイルレベルのエンティティ特徴を取得

submit_file_syntheses

ファイルレベルの全体的な要約を送信

build_semantic_hierarchy

ドメイン発見 + 階層割り当てプロンプトを取得

submit_hierarchy

階層割り当てをグラフに適用

get_routing_candidates

セマンティックルーティングが必要なエンティティを取得(ドリフトした、または新たにリフトされたもの)

submit_routing_decisions

ルーティング決定(階層パスまたは "keep")を送信


対応言語

Tree-sitter による15言語:

言語

エンティティ抽出

依存関係の解決

Python

関数、クラス、メソッド

インポート、呼び出し、継承

Rust

関数、構造体、トレイト、implメソッド

use、呼び出し、trait impls

TypeScript

関数、クラス、メソッド、インターフェース

インポート、呼び出し、継承

JavaScript

関数、クラス、メソッド

インポート、呼び出し、継承

Go

関数、構造体、メソッド、インターフェース

インポート、呼び出し

Java

クラス、メソッド、インターフェース

インポート、呼び出し、継承

C / C++

関数、クラス、メソッド、構造体

includes、呼び出し、継承

C#

クラス、メソッド、インターフェース

using、呼び出し、継承

PHP

関数、クラス、メソッド

use、呼び出し、継承

Ruby

クラス、メソッド、モジュール

require、呼び出し、継承

Kotlin

関数、クラス、メソッド

インポート、呼び出し、継承

Swift

関数、クラス、構造体、プロトコル

インポート、呼び出し、継承

Scala

関数、クラス、オブジェクト、トレイト

インポート、呼び出し、継承

Bash

関数

source、呼び出し


インストール

MCP サーバー(推奨)

# Claude Code
claude mcp add rpg -- npx -y -p rpg-encoder rpg-mcp-server

# Cursor — add to ~/.cursor/mcp.json
{
  "mcpServers": {
    "rpg": {
      "command": "npx",
      "args": ["-y", "-p", "rpg-encoder", "rpg-mcp-server"]
    }
  }
}

サーバーは現在の作業ディレクトリからプロジェクトルートを自動検出します — パス引数は不要です。

npm install -g rpg-encoder

# Build a graph
rpg-encoder build

# Query
rpg-encoder search "parse entities from source code"
rpg-encoder fetch "src/parser.rs:extract_entities"
rpg-encoder explore "src/parser.rs:extract_entities" --direction both --depth 2
rpg-encoder info

# Autonomous lifting via API
rpg-encoder lift --provider anthropic --dry-run  # estimate cost
rpg-encoder lift --provider anthropic           # lift with Haiku (~$0.02/100 entities)

# Incremental update
rpg-encoder update

# Pre-commit hook (auto-updates graph on commit)
rpg-encoder hook install
git clone https://github.com/userFRM/rpg-encoder.git
cd rpg-encoder && cargo build --release

次に、MCP 設定で target/release/rpg-mcp-server を指定します。


ドキュメント


インスピレーションと参考文献

rpg-encoder は、RPG-Encoder 研究論文の理論的枠組みに基づいており、コードインテリジェンス分野のさまざまなツールから着想を得た独自の拡張機能を備えています。

  • RPG-Encoder 論文(Luo ら、2026 年、Microsoft Research)— セマンティックリフティングモデル、3レベル階層構築、インクリメンタル進化アルゴリズム、形式グラフモデル G = (V_H ∪ V_L, E_dep ∪ E_feature)。

  • GitNexus — 事前計算された関係インテリジェンス、影響範囲分析、Claude Code フック。コードグラフツールは、不可視であってこそ不可欠になれることを示した。

  • Serena — LSP によるシンボルレベルの精度。リアルタイムのコード認識がバッチ分析よりも重要であることを実証した。

  • TOON — LLM 向けに最適化された出力のための Token-Oriented Object Notation。

これは独立した実装です。すべてのコードは MIT ライセンスの下で作成されたオリジナル作品です。Microsoft とは提携しておらず、Microsoft による推奨も受けていません。


ライセンス

MIT

Maintenance

ActivityInactive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Supercharges AI coding agents with a pre-indexed semantic code graph, enabling instant symbol relationships, impact analysis, and context retrieval across 20+ languages.
    140,534 npm
    73,402
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides semantic code search and code insights via a knowledge graph, enabling AI to understand, navigate, and modify complex projects with deep dependency and architecture analysis.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides a semantic understanding of your codebase by parsing with tree-sitter and building a graph of symbols and dependencies. Enables AI assistants to navigate code, analyze changes, and discover architecture using 18 tools with minimal context overhead.
    14 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables LLM agents to efficiently understand and navigate a codebase by providing semantic search over symbols and a reference graph, replacing expensive grep/glob calls with structured tools like definition lookup, caller/callee queries, and change-impact analysis.
    3
    MIT