This page covers installing ReVa, connecting an AI client, and configuration. The two most common setups are:
- GUI mode — Install the plugin into Ghidra, connect an MCP client over HTTP. You work in the CodeBrowser alongside the AI.
- CLI mode — Install the
reverse-engineering-assistantPython package, add it to Claude Code. No need to open Ghidra — ReVa handles everything.Plugin Installation
ReVa is distributed as a standard Ghidra extension archive (
.zipfile).
- Download the ReVa extension archive matching the installed Ghidra version.
- Open Ghidra and navigate to File
Install Extensions from the Project window.
- Click the + button (top right) and select the ReVa
.ziparchive.- Ensure the checkbox next to ReVa is checked, then click OK.
- Restart Ghidra to load the extension.
The extension must match the Ghidra version. ReVa requires Ghidra 12.0+ and Java 21+.
Plugin Activation
ReVa has
STABLEstatus, which means it auto-loads in Ghidra's default tool configurations after installation. If you're using a fresh Ghidra setup, ReVa should already be active after restarting — look for this message in the log:Starting MCP server on http://127.0.0.1:8080 MCP server started successfullyIf you're using a customized tool configuration, ReVa must be activated manually in two places:
Step 1: Project Window
This starts the MCP server.
- From the Project window, select File
Configure.
- Find the ReVa package and enable it.
- Click OK.
Step 2: CodeBrowser
This makes open programs visible to the AI.
- Open a program in the CodeBrowser.
- Select File
Configure.
- Find the ReVa package and enable it.
- Click OK.
Save the tool configuration after activating ReVa (File
Save Tool) so you don't have to repeat this step.
MCP Client Configuration
Once ReVa is running in Ghidra, connect an MCP client.
Claude Code (HTTP)
Add ReVa to Claude Code's MCP configuration:
{ "mcpServers": { "ReVa": { "url": "http://localhost:8080/mcp/message" } } }VS Code / Cursor
Add the same configuration to your editor's MCP settings:
{ "mcpServers": { "ReVa": { "url": "http://localhost:8080/mcp/message" } } }Other MCP Clients
Any client supporting streamable HTTP transport can connect. Default endpoint:
http://localhost:8080/mcp/message. If API key auth is enabled, send the key in theX-API-Keyheader.CLI Setup (Claude Code without Ghidra GUI)
ReVa can run entirely from the command line through Claude Code, without opening Ghidra's GUI. The
reverse-engineering-assistantPython package handles everything: it starts Ghidra headlessly, creates a project, and bridges Claude Code to the MCP server.Installation
Install the package (requires Python 3.10+ and a Ghidra installation):
uv tool install reverse-engineering-assistantOr with pip:
pip install reverse-engineering-assistantAdd to Claude Code
claude mcp add ReVa -- mcp-revaUsage
That's it. Now just run
claudein a directory with a binary and ask the AI to analyze it:"Import ./firmware.bin and tell me what it does."
ReVa automatically creates a temporary Ghidra project, imports the binary, runs analysis, and makes everything available to the AI. The temporary project is cleaned up when the session ends.
The
GHIDRA_INSTALL_DIRenvironment variable must point to a Ghidra installation for the CLI to work.Headless Mode
For automation, scripting, or server deployments, ReVa can run without any GUI using the
RevaHeadlessLauncherJava API via PyGhidra. The CLI mode (mcp-reva) is the simplest way to run headless — it handles all the setup automatically. See the project README for advanced headless configuration.Configuration Options
In GUI mode, configure ReVa through Edit
Tool Options
ReVa Server Options.
Server
Option Default Description Server Port 8080TCP port for the MCP server. Server Host 127.0.0.1Bind address. Use 0.0.0.0for remote access (enable API key auth first).Server Enabled trueSet to falseto disable the server.Security
Option Default Description API Key Authentication Enabled falseRequire an API key for all requests. API Key (auto-generated) The key value. Auto-generated as ReVa-{UUID}if left empty.Analysis
Option Default Description Decompiler Timeout (seconds) 10Max time per decompilation. Increase for complex functions. Max Decompiler Search Functions 1000Warns the AI about performance above this threshold. Import
Option Default Description Import Analysis Timeout (seconds) 600Max time for auto-analysis after import (10 min). Wait for Analysis on Import trueRun auto-analysis after importing a file. Import Max Depth 10Max depth for importing containers/archives. Debug
Option Default Description Debug Mode falseEnable debug logging. Request Logging Enabled falseLog all MCP requests to reva-tools.log.Follow Me Mode
Follow Me is a GUI-only demo mode that automatically navigates the active CodeBrowser to whichever address the AI is operating on. It is useful for live demos and screen-shares because viewers can watch the listing scroll along with each MCP tool call.
Toggle Follow Me from the CodeBrowser toolbar (the navigate-on-event arrow icon) or from Tools
ReVa
Follow Me. The toggle is off by default and is not persisted — it resets every Ghidra session, so demos do not accidentally follow tools during normal analysis.
The toolbar button only appears in CodeBrowser tools. It has no effect in headless mode or when ReVa is driven through the stdio CLI.
For each tool call, the listing scrolls to the address being read or modified before the tool's work runs — so during a write, viewers see the cursor land first and the change appear afterwards. Consecutive calls targeting the same address are coalesced (the cursor does not jiggle in place).
Read / Write Filters
The two checkboxes under Edit
Tool Options
ReVa Server Options control which kinds of tool calls trigger navigation when Follow Me is on. Both default to
true.
Option Default Description Follow Reads trueFollow tools that inspect program state — for example get-decompilation,find-cross-references,read-memory,get-call-graph. Turn off if the AI's exploration is too noisy to watch.Follow Writes trueFollow tools that modify program state — for example set-comment,rename-variables,create-function,apply-data-type.Multiple Programs
If the AI operates on a program that is not the one currently displayed in the active CodeBrowser, the navigation is silently skipped — Ghidra does not switch programs underneath you. Open the program first if you want the cursor to follow.
Build from Source
Requirements: Java 21+ (JDK), Gradle 9.x+, Ghidra 12.0+.
- Set
GHIDRA_INSTALL_DIR:export GHIDRA_INSTALL_DIR=/path/to/ghidra- Build:
gradle- The extension archive is in
dist/.
Use
gradledirectly, not./gradlew.To install directly into Ghidra (for development):
gradle installTroubleshooting
Server Does Not Start
- Port in use — Another process is using port 8080. Change the port in Tool Options, or stop the other process.
- Plugin not activated in Project window — The server is managed by the application-level plugin. See Plugin Activation.
- Server disabled — Check that Server Enabled is
truein Tool Options.No Programs Visible
- Plugin not activated in CodeBrowser — Each CodeBrowser needs ReVa activated. See Step 2.
- No program open — Open a program in the CodeBrowser, or ask the AI to import one.
Client Cannot Connect
- Wrong URL — Use
http://localhost:8080/mcp/message(the full path matters).- API key required — Include the key in the
X-API-Keyheader if auth is enabled.Jackson Library Conflicts
If the extension fails to load with Jackson errors:
rm lib/*.jar gradleCLI Issues
- PyGhidra fails — Ensure
GHIDRA_INSTALL_DIRis set correctly.- Stdio bridge hangs — Make sure nothing else is writing to stdout (e.g., shell init scripts printing messages).
- Slow startup — Initial startup takes 4–7 seconds while Ghidra initializes. This is normal.
Provided by: ReVa