mcpField
R
rpg-encoder

rpg-encoder

ローカル
github.com/userFRM開発ツール3128 週間前に更新

rpg-encoder について

rpg-encoder は Tree-sitter を用いてコードのセマンティックグラフを構築し、MCP ツールを通じて AI コーディングエージェントにリポジトリ全体の理解を提供します。呼び出し関係に加え、各関数の処理内容を意図レベルの機能として記録し、作業ツリーの変更に合わせてグラフを同期します。

主な機能

  1. 01Tree-sitter によるエンティティと依存関係の抽出
  2. 02関数やクラスへの意図レベルの機能説明の付与
  3. 03機能の3段階の階層への整理
  4. 04スナップショットによるリポジトリ全体の概要表示
  5. 05増分同期と影響範囲の分析

活用シーン

  1. 01grep のキーワードではなく意図に基づくコード検索
  2. 02変更計画の立案と影響範囲の確認
  3. 03大規模リポジトリにおけるモジュールの責務の把握

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"userfrm-rpg-encoder": {
"command": "npx",
"args": [
"-y",
"rpg-encoder"
]
}
}
}
起動コマンドnpx -y rpg-encoder

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmrpg-encoder0.6.7

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

rpg-encoder

AI エージェントにコードベースのための頭脳を。

CI MIT License Rust 1.85+ npm MCP Stars


AI コーディングエージェントは、ツール呼び出しの大半を grep、cat、find、ファイル読み取りでコードベースを手探りするために無駄にしています。rpg-encoder はそれを解決します。Tree-sitter を使ってコードのセマンティックグラフを構築します。単に何が何を呼び出すかだけでなく、各関数が何をするかまで捉え、MCP を通じて 1 回のツール呼び出しでリポジトリ全体を理解できるようにします。

RPG なしの場合: 34,000 回の混沌とした grep/cat/find 呼び出し。RPG ありの場合: 1 回の semantic_snapshot 呼び出しでリポジトリ全体の構造化マップが返る。


クイックスタート

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 エンドポイントにレート制限を追加する変更を計画して」

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")
呼び出し元/呼び出し先を探す連鎖的な grepexplore_rpg(entity_id="...", direction="...")
「X に依存しているのは何か」を探す再帰的 grepimpact_radius(entity_id="...")
wc -l / find / treerpg_info
コンテキスト取得のための多数ファイルの読み取りsemantic_snapshot
手動での search → fetch → explore の連鎖context_pack(query="...")
「X を安全にリファクタリングするには」plan_change(goal="...")

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


仕組み

4段階のパイプライン: Parse(tree-sitter)→ Lift(動詞-目的語の特徴)→ Organize(3レベルの階層)→ Understand(LLM がリポジトリ全体の知識を取得)

  1. Parse — Tree-sitter が 15 言語からエンティティ(関数、クラス、メソッド)と依存関係のエッジ(インポート、呼び出し、継承)を抽出します。
  2. Lift — LLM(あなたのエージェント、または Haiku のような安価な API)が各エンティティを読み、動詞-目的語の特徴を書き出します: 「JWT トークンを検証する」、「設定をディスクにシリアライズする」。
  3. Organize — 特徴が 3 レベルのセマンティック階層(エリア → カテゴリ → サブカテゴリ)にクラスタリングされます。これはファイルツリーではなく、コードが何をするかから生まれます。
  4. Understand — semantic_snapshot がグラフ全体を約 25K トークンに圧縮します。あなたの LLM はそれを一度読むだけでリポジトリを把握します。
セマンティックスナップショット

リポジトリ全体 — ソースの約 500K トークン — が階層、特徴、依存関係、ホットスポットを含む約 25K トークンのスナップショットに 20 倍圧縮される

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

  • 階層 — 集約された特徴を持つすべての機能エリア
  • エンティティ — エリアごとにグループ化された、すべての関数、クラス、メソッドとそのセマンティックな特徴
  • 依存関係の骨格 — 修飾名を含む凝縮されたコールグラフ
  • ホットスポット — 最も接続が多い上位 10 エンティティ(アーキテクチャのバックボーン)

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

自己メンテナンスするグラフ

Git HEAD が移動 → RPG サーバーが自動同期 → update_rpg が追加/変更/削除を適用 → グラフは常に最新、エージェントの操作はゼロ

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

Lift の 2 つの方法
モードコマンドコスト誰が支払うか
エージェントによる lift「RPG をビルドして lift する」サブスクリプションのトークンあなたの Claude Code / Cursor サブスクリプション
自律的な liftauto_lift(provider="anthropic", api_key_env="ANTHROPIC_API_KEY")100 エンティティあたり約 $0.02外部 API キー(Haiku、GPT-4o-mini、OpenRouter、Gemini)

auto_lift は安価な外部 LLM を直接呼び出します — あなたのコーディングサブスクリプションが lift 作業に触れることはありません。api_key_env を使って環境変数からキーを解決すれば、ツール呼び出しのトランスクリプトにキーが現れることはありません。


アーキテクチャ

あなたのコードベース (15 言語) → RPG Engine (5 つの Rust クレート: parser, encoder, nav, lift, mcp) → クライアント (Claude Code, Cursor, opencode) を MCP プロトコル経由で接続

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

クレート役割
rpg-coreグラフ型 (RPGraph、Entity、HierarchyNode)、ストレージ、LCA アルゴリズム
rpg-parserTree-sitter によるエンティティ + 依存関係の抽出 (15 言語)
rpg-encoderエンコードパイプライン、リフティングユーティリティ、インクリメンタル進化
rpg-nav検索、フェッチ、探索、スナップショット、TOON シリアライゼーション
rpg-lift自律型 LLM リフティング (Anthropic、OpenAI、OpenRouter、Gemini)
rpg-cliCLI バイナリ (rpg-encoder)
rpg-mcp27 のツールを備えた MCP サーバーバイナリ (rpg-mcp-server)

MCP ツール (27)

ビルドとメンテナンス (4 ツール)
ツール説明
build_rpgコードベースをインデックス化します (一度実行するだけで即時完了)
update_rpggit の変更に基づくインクリメンタル更新
reload_rpg外部変更後にディスクからグラフを再読み込み
rpg_infoグラフ統計、階層の概要、エリアごとのリフティングカバレッジ
ナビゲートと検索 (5 ツール)
ツール説明
semantic_snapshot1 回の呼び出しでリポジトリ全体のセマンティック理解を取得 (1000 エンティティで約 25K トークン)
search_node意図やキーワードでエンティティを検索 (ハイブリッド埋め込み + 字句スコアリング)
fetch_nodeエンティティのメタデータ、ソースコード、依存関係、階層コンテキストを取得
explore_rpg依存関係グラフをたどる (上流、下流、またはその両方)
context_packトークン予算を考慮した、検索 + フェッチ + 探索の単一呼び出し
計画と分析 (7 ツール)
ツール説明
impact_radiusBFS 到達可能性分析 — 「何が X に依存しているか?」
plan_change変更計画 — 関連エンティティ、変更順序、ブラスト半径を特定
find_paths2 つのエンティティ間の K 最短依存パス
slice_betweenエンティティ間を接続する最小サブグラフを抽出
analyze_healthコードヘルス: 結合度、不安定度、神オブジェクト、クローン検出
detect_cycles循環依存とアーキテクチャ上の循環を検出
reconstruct_plan依存関係を安全に考慮した再構築の実行計画
セマンティックリフティング (11 ツール)
ツール説明
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関数、クラス、メソッドimports、calls、inheritance
Rust関数、構造体、トレイト、impl メソッドuse、calls、trait impls
TypeScript関数、クラス、メソッド、インターフェースimports、calls、inheritance
JavaScript関数、クラス、メソッドimports、calls、inheritance
Go関数、構造体、メソッド、インターフェースimports、calls
Javaクラス、メソッド、インターフェースimports、calls、inheritance
C / C++関数、クラス、メソッド、構造体includes、calls、inheritance
C#クラス、メソッド、インターフェースusing、calls、inheritance
PHP関数、クラス、メソッドuse、calls、inheritance
Rubyクラス、メソッド、モジュールrequire、calls、inheritance
Kotlin関数、クラス、メソッドimports、calls、inheritance
Swift関数、クラス、構造体、プロトコルimports、calls、inheritance
Scala関数、クラス、オブジェクト、トレイトimports、calls、inheritance
Bash関数source、calls

インストール

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"]
    }
  }
}

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

CLI
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 とは提携しておらず、承認も受けていません。


ライセンス

MIT

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。