npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@xi0yu/android-reverse-tools

v3.0.6

Published

Android reverse-engineering MCP server — Frida, UIAutomator, JADX, JEB

Readme

ARev

ARev is an MCP server for Android reverse engineering. It gives Codex, Claude Code, and other MCP clients access to Frida, UIAutomator2, JADX, and JEB.

| Item | Name | | --- | --- | | npm package | @xi0yu/android-reverse-tools | | command | arev | | MCP server name | arev |

The npm package keeps its descriptive registry name. The installed command stays short: arev.

Quick start

Install ARev globally:

npm install -g @xi0yu/android-reverse-tools@latest

Prepare its Python runtime:

arev init

If you use JEB, install the companion plugin separately:

arev plugin

Then register ARev with your MCP client.

Codex:

codex mcp add arev -- arev
codex mcp get arev

Claude Code:

claude mcp add --scope user --transport stdio arev -- arev
claude mcp get arev

ARev is now started automatically by the MCP client. You do not need to keep a separate terminal process running.

Requirements

  • Node.js 18 or newer
  • uv for arev init
  • A matching frida-server on the device for live Frida operations
  • The companion desktop plugin for JADX or JEB integrations

The npm installation itself is non-interactive. It does not download Python, initialize the runtime, or change a JEB installation.

Install in mainland China

If npm downloads are slow, select the npmmirror registry before installing:

npm config set registry https://registry.npmmirror.com
npm install -g @xi0yu/android-reverse-tools@latest

To switch back to the official npm registry later:

npm config set registry https://registry.npmjs.org/

Initialize ARev

Run this after the first installation and after updating ARev:

arev init

This command prepares the runtime used by the MCP server. It does not ask about JEB and does not install or update the JEB plugin.

Each ARev release uses its own managed runtime and its tested dependency set. Initializing an update does not modify the previous release's Python environment.

Normal arev startup never waits for setup questions. If the runtime has not been initialized for the installed version, ARev tells you to run arev init from a terminal.

Install or update the JEB plugin

The JEB tools require the compatible companion plugin bundled with ARev. The ARev package and JEB plugin have independent version numbers because they are updated separately.

  1. Close JEB.
  2. Run arev plugin in a terminal.
  3. At [Y/n], press Enter to install or update the plugin, or enter n to skip.
  4. Enter the JEB installation directory or its coreplugins directory. ARev asks every time and does not save the path.
  5. Restart JEB after ARev prints the completed installation path.
arev plugin

The path prompt accepts standard Windows, macOS, and Linux paths.

Examples:

C:\Tools\JEB
C:\Tools\JEB\coreplugins
/Users/you/Tools/JEB/coreplugins
/opt/jeb/coreplugins

For scripts or an explicit installation path:

arev plugin install --jeb-home "/path/to/JEB"
arev plugin install --plugins-dir "/path/to/coreplugins"
arev plugin update --plugins-dir "/path/to/coreplugins"
arev plugin status --plugins-dir "/path/to/coreplugins"

Other useful commands:

# Print the verified JAR bundled with ARev
arev plugin path

# Copy the JAR to the current user's Downloads directory
arev plugin export

arev plugin export prints the complete output path. It does not install the file into JEB.

For unattended setup, use AREV_JEB_HOME or AREV_JEB_PLUGINS_DIR. A command-line path takes priority over these variables.

If JEB runs on another computer, install the plugin on that computer. --jeb-host changes where ARev connects; it does not copy the JAR to the remote host.

Configure MCP clients

Codex

Global installation:

codex mcp add arev -- arev

Remote JADX and JEB hosts:

codex mcp add arev -- arev --jadx-host 192.168.1.100 --jeb-host 192.168.1.100

Codex CLI and the Codex IDE extension use the same MCP configuration.

Claude Code

Global installation:

claude mcp add --scope user --transport stdio arev -- arev

Remote JADX and JEB hosts:

claude mcp add --scope user --transport stdio arev -- arev --jadx-host 192.168.1.100 --jeb-host 192.168.1.100

Other MCP clients

Use arev as a stdio MCP server:

{
  "mcpServers": {
    "arev": {
      "command": "arev",
      "args": []
    }
  }
}

To connect to desktop plugins on another host, add arguments:

{
  "mcpServers": {
    "arev": {
      "command": "arev",
      "args": [
        "--jadx-host", "192.168.1.100",
        "--jeb-host", "192.168.1.100"
      ]
    }
  }
}

Use npx without a global installation

Initialize the selected release once:

npx -y @xi0yu/android-reverse-tools@latest init

Install the JEB plugin only if you use JEB:

npx -y @xi0yu/android-reverse-tools@latest plugin

Codex:

codex mcp add arev -- npx -y @xi0yu/android-reverse-tools@latest

Claude Code:

claude mcp add --scope user --transport stdio arev -- npx -y @xi0yu/android-reverse-tools@latest

When @latest changes, run the npx initialization command again before restarting the MCP client.

Connect to JADX and JEB

The default desktop plugin endpoints are:

| Backend | Host | Port | | --- | --- | --- | | JADX | 127.0.0.1 | 8650 | | JEB | 127.0.0.1 | 16161 |

Override them when starting ARev:

arev --jadx-host 192.168.1.100 --jadx-port 8650 --jeb-host 192.168.1.100 --jeb-port 16161

The same options can be placed after arev in a Codex, Claude Code, or JSON MCP configuration.

For JEB operations, call jeb_list_apps first and pass the returned session to later jeb_* calls. The same package name and version produce the same session. Do not load two APKs with the same package name and version at the same time.

If JEB was restarted or an APK changed, call jeb_list_apps again before retrying an operation.

Run ARev manually

Start the default stdio MCP server:

arev

Show all command-line options:

arev --help

Connect only the modules you need:

arev --disable-jadx --disable-jeb --disable-uiautomator

Start an HTTP MCP server:

arev --transport http --host 127.0.0.1 --port 8765

Available tools

  • frida_*: processes, applications, sessions, injection, messages, and script generation
  • ui_*: screen hierarchy, taps, text input, waits, scrolling, and screenshots
  • jadx_*: source, manifest, references, debugger state, search, and renaming
  • jeb_*: loaded applications, decompilation, references, renaming, background tasks, and protobuf recovery
  • server_*: server status and live JADX or JEB endpoint changes

Your MCP client displays the complete tool list for the modules enabled at startup.

Update ARev

Update the npm package, then initialize the new runtime:

npm install -g @xi0yu/android-reverse-tools@latest
arev init

If you use JEB, update its plugin separately:

arev plugin

Updating the ARev runtime and updating the JEB plugin are independent. A problem with one does not block the other.

Troubleshooting

uv is not in PATH

Install uv, open a new terminal, and run:

arev init

After initialization, normal MCP startup and JEB plugin management do not require uv.

ARev says the runtime is not initialized

Run arev init in a terminal, then restart Codex, Claude Code, or the MCP client. Repeat this after installing a newer ARev release.

ARev uses its own versioned Python environment. Do not repair it with the system pip; rerun arev init so the package is installed into the correct environment.

Windows reports failed to rename file or os error 5

Close other ARev, Python, and uv processes, then retry arev init. Antivirus or enterprise endpoint protection can temporarily lock files under %LOCALAPPDATA%\arev; allow that directory or ask the system administrator to review the blocked operation.

The runtime error is unrelated to JEB plugin installation. You can run arev plugin separately.

The JEB plugin cannot be replaced

Close JEB completely and run arev plugin again. On Windows, a running JEB process can keep the old JAR locked.

Do not keep multiple xi0yu-jebplugin*.jar files in the same plugins directory.

jeb_* reports INCOMPATIBLE_JEB_BACKEND

Run arev plugin on the computer that runs JEB, restart JEB, then call jeb_list_apps again.

JADX or JEB cannot be reached

Confirm that the desktop plugin is running. Then verify the host and port passed to ARev. For a remote computer, also confirm that its firewall permits the connection.

From source

uv sync
uv run arev

Installed npm users should use the global arev command or the documented npx form.

License

The Node.js and Python code is licensed under MIT. The bundled JEB plugin is licensed under Apache-2.0; its license and notice are included in the npm package.