rpg-encoder MCP server
✓ VerifiziertErstellt einen semantischen Code-Graphen mittels tree-sitter, um KI-Agenten durch einen einzigen Tool-Call ein tiefes Verständnis des gesamten Repositories zu ermöglichen.
Auch bekannt als userFRM/rpg-encoder
- Stars
- 33
- Tools
- 27
- Downloads, 30 Tage
- —
- Neueste Version
- 0.6.7
- Letzter Commit
- 29. Mai 2026
- Lizenz
- MIT
Was ist rpg-encoder MCP?
rpg-encoder ist ein MCP server. Erstellt einen semantischen Code-Graphen mittels tree-sitter, um KI-Agenten durch einen einzigen Tool-Call ein tiefes Verständnis des gesamten Repositories zu ermöglichen. Er stellt 27 Tools bereit, etwa build_rpg, update_rpg, reload_rpg.
Zusammenfassung generiert aus dem README des Projekts
Über rpg-encoder MCP server
rpg-encoder bietet KI-Coding-Agenten ein tiefes, semantisches Verständnis ganzer Codebases durch einen strukturierten Graphen. Anstatt sich auf einfache Textsuche wie grep oder cat zu verlassen, nutzt dieser Server tree-sitter, um 15 verschiedene Sprachen zu parsen und funktionale Entitäten wie Klassen, Methoden und Funktionen zu extrahieren. Er baut eine Hierarchie auf Basis dessen auf, was der Code tatsächlich tut, anstatt nur die Dateistruktur zu berücksichtigen.
Entwickler können diesen Server mit MCP-kompatiblen Clients wie Claude Code, Cursor oder Windsurf über einen einzigen npx-Befehl integrieren. Das System läuft lokal und kann durch einen Lifting-Prozess erweitert werden, bei dem ein LLM Features auf Intent-Ebene zu jeder Entität hinzufügt. Bei großen Repositories können Nutzer den autonomen Lifting-Modus mit einem externen API-Key von Providern wie Anthropic oder OpenAI verwenden, um Entitäten effizient zu verarbeiten, ohne die primären Agenten-Tokens zu verbrauchen.
Sobald der Graph erstellt ist, ermöglicht das Tool semantic_snapshot einem Agenten, das gesamte Repository in einem einzigen Aufruf zu erfassen, indem komplexer Quellcode in eine handhabbare Token-Anzahl komprimiert wird. Dies ermöglicht eine intelligentere Planung, Impact-Analysen und die Navigation durch die gesamte Projektarchitektur.
Geschrieben aus dem README des Projekts. Jeder Use Case wurde gegen ein Zitat daraus geprüft.
So installierst du rpg-encoder MCP
Formate geprüft am 10. Nov. 2026Zu Cursor hinzufügenZu Goose hinzufügenrpg-encoder MCP in Claude Code installieren
$ claude mcp add rpg-encoder -- npx -y rpg-encoderrpg-encoder MCP in Cursor installieren
~/.cursor/mcp.json
{
"mcpServers": {
"rpg-encoder": {
"command": "npx",
"args": [
"-y",
"rpg-encoder"
]
}
}
}rpg-encoder MCP in VS Code installieren
.vscode/mcp.json
{
"servers": {
"rpg-encoder": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"rpg-encoder"
]
}
}
}rpg-encoder MCP in VS Code CLI installieren
$ code --add-mcp '{"name":"rpg-encoder","type":"stdio","command":"npx","args":["-y","rpg-encoder"]}'rpg-encoder MCP in Claude Desktop installieren
claude_desktop_config.json
{
"mcpServers": {
"rpg-encoder": {
"command": "npx",
"args": [
"-y",
"rpg-encoder"
]
}
}
}rpg-encoder MCP in Codex installieren
$ codex mcp add rpg-encoder -- npx -y rpg-encoderrpg-encoder MCP in Codex config.toml installieren
~/.codex/config.toml
[mcp_servers.rpg-encoder] command = "npx" args = ["-y", "rpg-encoder"]
rpg-encoder MCP in Gemini CLI installieren
$ gemini mcp add -s user rpg-encoder npx -- -y rpg-encoderrpg-encoder MCP in Gemini settings.json installieren
~/.gemini/settings.json
{
"mcpServers": {
"rpg-encoder": {
"command": "npx",
"args": [
"-y",
"rpg-encoder"
]
}
}
}rpg-encoder MCP tools 27
Erkannt aus dem READMEbuild_rpgupdate_rpgreload_rpgrpg_infosemantic_snapshotsearch_nodefetch_nodeexplore_rpgcontext_packimpact_radiusplan_changefind_paths
| build_rpg | — | |
| update_rpg | — | |
| reload_rpg | — | |
| rpg_info | — | |
| semantic_snapshot | — | |
| search_node | — | |
| fetch_node | — | |
| explore_rpg | — | |
| context_pack | — | |
| impact_radius | — | |
| plan_change | — | |
| find_paths | — |
Alle 27 Tools anzeigenWeniger Tools anzeigen
slice_betweenanalyze_healthdetect_cyclesreconstruct_planauto_liftlifting_statusget_entities_for_liftingsubmit_lift_resultsfinalize_liftingget_files_for_synthesissubmit_file_synthesesbuild_semantic_hierarchysubmit_hierarchyget_routing_candidatessubmit_routing_decisions
| slice_between | — | |
| analyze_health | — | |
| detect_cycles | — | |
| reconstruct_plan | — | |
| auto_lift | — | |
| lifting_status | — | |
| 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 | — |
Automatisierte Checks
Geluften am 14. Nov. 2026Vollständiger Bericht →Unsere automatisierten Checks bestanden. Das ist kein Security-Audit: Lies den Code und gib dem Server nur den minimal notwendigen Zugriff. Wie die Checks funktionieren
- Source Repository verknüpft und erreichbaruserfrm/rpg-encoder is public and reachablegithub.com/userfrm/rpg-encoder ↗Bestanden
- Paket nennt dieses Repository als Quellerpg-encoder names userfrm/rpg-encoder as sourcenpmjs.com/package/rpg-encoder ↗Bestanden
- Build-Provenienz (Sigstore-Attestierung)Sigstore attestation for rpg-encodernpmjs.com/package/rpg-encoder/v/0.6.7#provenance ↗Bestanden
- Open Source Lizenz (OSI)MITspdx.org/licenses/MIT.html ↗Bestanden
- Commit oder Release im letzten JahrLast commit or release 2026-05-29github.com/userfrm/rpg-encoder ↗Bestanden
- OpenSSF ScorecardNicht geprüft
- Package-Name ähnelt keinem populären PackageNo popular package one edit away from rpg-encoderBestanden
- Keine kritischen Advisories im Paket oder seinen Abhängigkeiten1 resolved dependencies checked; no critical advisoryosv.dev ↗Bestanden
- Keine versteckten Anweisungen an das Modell27 tool descriptions and the README read; no override phrases, credential paths or hidden charactersBestanden
- Destruktive Tools sind markiertNo tool named like delete, drop or execBestanden
- Remote-Endpoint beantwortet den MCP-HandshakeNicht geprüft
README
Auf GitHub ansehenAI coding agents waste most of their tool calls fumbling through your codebase with grep, cat, find, and file reads. rpg-encoder fixes that. It builds a semantic graph of your code with Tree-sitter — not just what calls what, but what every function does — and gives your AI assistant whole-repo understanding via MCP in a single tool call.
Quick Start
claude mcp add rpg -- npx -y -p rpg-encoder rpg-mcp-server
One command. Works with Claude Code, Cursor, opencode, Windsurf, or any MCP-compatible agent. No Rust toolchain, no cloning, no building — npx downloads a pre-built binary for your platform.
Then open any repo and tell your agent:
"Build and lift the RPG for this repo"
Your agent handles everything: indexes entities (seconds), reads each function and adds intent-level features (a few minutes), organizes them into a semantic hierarchy, and commits .rpg/graph.json for your team.
For repos with ~100+ entities, lifting_status will tell your agent to delegate the lifting loop to a sub-agent or a cheaper model — feature extraction is pattern-matching, not novel reasoning. If your runtime has no sub-agent mechanism, run rpg-encoder lift --provider anthropic|openai from the terminal with an API key — the CLI drives an external LLM directly with no agent involvement. After the CLI finishes, call reload_rpg in your session to load the updated graph. The CLI lifts entities with no features; re-lifting stale entities (features present but outdated after code changes) is handled by the in-session MCP flow, not the CLI.
Once lifted, try:
- "What handles authentication?" — finds code even when nothing is named "auth"
- "Show everything that depends on the database connection"
- "Plan a change to add rate limiting to API endpoints"
Use RPG before grep, cat, find
The server instructions tell your agent to reach for RPG tools FIRST for any
question about code structure or behavior. That reflex matters — grep, cat,
and ad-hoc file reads burn tokens and miss semantic relationships RPG already
knows.
| If you'd otherwise reach for... | Use this instead |
|---|---|
grep -r / rg (by intent) |
search_node(query="...") |
grep -r / rg (by name) |
search_node(query="...", mode="snippets") |
cat / reading a function |
fetch_node(entity_id="file:name") |
| chained greps for callers/callees | explore_rpg(entity_id="...", direction="...") |
| recursive grep for "what depends on X" | impact_radius(entity_id="...") |
wc -l / find / tree |
rpg_info |
| reading many files for context | semantic_snapshot |
| manual search → fetch → explore chains | context_pack(query="...") |
| "how do I refactor X safely" | plan_change(goal="...") |
Fall back to grep, cat, or file reads only when the query is about literal text
(string search, comments, TODOs, log messages) — not about structure.
How It Works
- Parse — Tree-sitter extracts entities (functions, classes, methods) and dependency edges (imports, calls, inheritance) from 15 languages.
- Lift — An LLM (your agent, or a cheap API like Haiku) reads each entity and writes verb-object features: "validate JWT tokens", "serialize config to disk".
- Organize — Features cluster into a 3-level semantic hierarchy (Area → Category → Subcategory) that emerges from what the code does, not the file tree.
- Understand —
semantic_snapshotcompresses the whole graph into ~25K tokens. Your LLM reads it once and knows the repo.
The semantic snapshot
Instead of grepping through files, the LLM calls semantic_snapshot once and receives:
- Hierarchy — every functional area with aggregate features
- Entities — every function, class, method grouped by area, with its semantic features
- Dependency skeleton — condensed call graph with qualified names
- Hot spots — top 10 most-connected entities (the architectural backbone)
~25K tokens covers ~1000 entities. That's 2-3% of a 1M context window — the LLM starts every session already knowing your repo.
Self-maintaining graph
Whenever your working tree changes — committed, staged, or unstaged — the MCP server automatically re-syncs before responding to the next query. A changeset hash over (path, size, mtime) means repeated saves of the same file trigger one sync, and idle queries trigger none. Reverts are detected too: if a previously-dirty file returns to its HEAD state, the graph is restored.
Two ways to lift
| Mode | Command | Cost | Who pays |
|---|---|---|---|
| Agent lifting | "Build and lift the RPG" | Subscription tokens | Your Claude Code / Cursor subscription |
| Autonomous lifting | auto_lift(provider="anthropic", api_key_env="ANTHROPIC_API_KEY") |
~$0.02 per 100 entities | External API key (Haiku, GPT-4o-mini, OpenRouter, Gemini) |
auto_lift calls a cheap external LLM directly — your coding subscription never touches the lifting work. Use api_key_env to resolve keys from environment variables so they never appear in tool call transcripts.
Architecture
Seven Rust crates, one MCP server binary, one CLI binary:
| Crate | Role |
|---|---|
rpg-core |
Graph types (RPGraph, Entity, HierarchyNode), storage, LCA algorithm |
rpg-parser |
Tree-sitter entity + dependency extraction (15 languages) |
rpg-encoder |
Encoding pipeline, lifting utilities, incremental evolution |
rpg-nav |
Search, fetch, explore, snapshot, TOON serialization |
rpg-lift |
Autonomous LLM lifting (Anthropic, OpenAI, OpenRouter, Gemini) |
rpg-cli |
CLI binary (rpg-encoder) |
rpg-mcp |
MCP server binary (rpg-mcp-server) with 27 tools |
MCP Tools (27)
| Tool | Description |
|---|---|
build_rpg |
Index the codebase (run once, instant) |
update_rpg |
Incremental update from git changes |
reload_rpg |
Reload graph from disk after external changes |
rpg_info |
Graph statistics, hierarchy overview, per-area lifting coverage |
| Tool | Description |
|---|---|
semantic_snapshot |
Whole-repo semantic understanding in one call (~25K tokens for 1000 entities) |
search_node |
Search entities by intent or keywords (hybrid embedding + lexical scoring) |
fetch_node |
Get entity metadata, source code, dependencies, and hierarchy context |
explore_rpg |
Traverse dependency graph (upstream, downstream, or both) |
context_pack |
Single-call search + fetch + explore with token budget |
| Tool | Description |
|---|---|
impact_radius |
BFS reachability analysis — "what depends on X?" |
plan_change |
Change planning — find relevant entities, modification order, blast radius |
find_paths |
K-shortest dependency paths between two entities |
slice_between |
Extract minimal connecting subgraph between entities |
analyze_health |
Code health: coupling, instability, god objects, clone detection |
detect_cycles |
Find circular dependencies and architectural cycles |
reconstruct_plan |
Dependency-safe reconstruction execution plan |
| Tool | Description |
|---|---|
auto_lift |
One-call autonomous lifting via cheap LLM API (Haiku, GPT-4o-mini, OpenRouter, Gemini) |
lifting_status |
Dashboard — coverage, per-area progress, NEXT STEP |
get_entities_for_lifting |
Get entity source code for your agent to analyze |
submit_lift_results |
Submit the agent's semantic features back to the graph |
finalize_lifting |
Aggregate file-level features, rebuild hierarchy metadata |
get_files_for_synthesis |
Get file-level entity features for holistic synthesis |
submit_file_syntheses |
Submit holistic file-level summaries |
build_semantic_hierarchy |
Get domain discovery + hierarchy assignment prompts |
submit_hierarchy |
Apply hierarchy assignments to the graph |
get_routing_candidates |
Get entities needing semantic routing (drifted or newly lifted) |
submit_routing_decisions |
Submit routing decisions (hierarchy path or "keep") |
Supported Languages
15 languages via Tree-sitter:
| Language | Entity Extraction | Dependency Resolution |
|---|---|---|
| Python | Functions, classes, methods | imports, calls, inheritance |
| Rust | Functions, structs, traits, impl methods | use, calls, trait impls |
| TypeScript | Functions, classes, methods, interfaces | imports, calls, inheritance |
| JavaScript | Functions, classes, methods | imports, calls, inheritance |
| Go | Functions, structs, methods, interfaces | imports, calls |
| Java | Classes, methods, interfaces | imports, calls, inheritance |
| C / C++ | Functions, classes, methods, structs | includes, calls, inheritance |
| C# | Classes, methods, interfaces | using, calls, inheritance |
| PHP | Functions, classes, methods | use, calls, inheritance |
| Ruby | Classes, methods, modules | require, calls, inheritance |
| Kotlin | Functions, classes, methods | imports, calls, inheritance |
| Swift | Functions, classes, structs, protocols | imports, calls, inheritance |
| Scala | Functions, classes, objects, traits | imports, calls, inheritance |
| Bash | Functions | source, calls |
Install
MCP server (recommended)
# 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"]
}
}
}
The server auto-detects the project root from the current working directory — no path argument needed.
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
Then point your MCP config at target/release/rpg-mcp-server.
Documentation
- How RPG Compares — honest comparison with GitNexus, Serena, Repomix, and others
- Paper Fidelity — algorithm-by-algorithm comparison with the research paper
- Use Cases — practical examples of what RPG enables
- CHANGELOG — release history
Inspirations & References
rpg-encoder is built on the theoretical framework from the RPG-Encoder research paper, with original extensions inspired by tools across the code intelligence landscape:
- RPG-Encoder paper (Luo et al., 2026, Microsoft Research) — semantic lifting model, 3-level hierarchy construction, incremental evolution algorithms, formal graph model
G = (V_H ∪ V_L, E_dep ∪ E_feature). - GitNexus — precomputed relational intelligence, blast radius analysis, Claude Code hooks. Showed that a code graph tool must be invisible to be essential.
- Serena — symbol-level precision via LSP. Demonstrated that real-time code awareness matters more than batch analysis.
- TOON — Token-Oriented Object Notation for LLM-optimized output.
This is an independent implementation. All code is original work under the MIT license. Not affiliated with or endorsed by Microsoft.
License
rpg-encoder MCP Fragen
Wie füge ich rpg-encoder MCP zu Claude Code hinzu?
Führe claude mcp add rpg-encoder -- npx -y rpg-encoder in deinem Terminal aus. Füge --scope user hinzu, damit der Server in jedem Projekt verfügbar ist.
Wie füge ich rpg-encoder MCP zu Cursor hinzu?
Öffne ~/.cursor/mcp.json und füge den Server unter mcpServers hinzu, mit der Cursor-Config aus dem Installationsabschnitt oben.
Welche Tools bietet rpg-encoder MCP?
Er stellt 27 Tools bereit, darunter build_rpg, update_rpg, reload_rpg, rpg_info, semantic_snapshot.
Wie hilft rpg-encoder KI-Coding-Agenten?
Es ersetzt ineffiziente Dateisuche wie grep oder cat durch einen semantischen Graphen. Dadurch können Agenten die Intention von Funktionen und die Repository-Struktur über einen einzigen Snapshot verstehen.
Wie kann ich den Lifting-Prozess ausführen, ohne die Tokens meines Agenten zu verbrauchen?
Du kannst das CLI nutzen, um ein autonomes Lifting über einen günstigen externen LLM-Provider wie Anthropic oder OpenAI mittels eines API-Keys durchzuführen.
Bleibt der Graph bei Code-Änderungen aktuell?
Ja, der MCP server synchronisiert den Graphen automatisch, sobald sich dein Working Tree ändert, zum Beispiel wenn Dateien committet, gestaged oder unstaged werden.