REA: Reverse Engineer Anything MCP server
  • JavaScript 76.1%
  • Dockerfile 22%
  • Shell 1.9%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Jriyuu a6e47d780a
All checks were successful
Build rea-mcp image / build (push) Successful in 3m15s
checks / lint (push) Successful in 7s
Merge pull request 'Upload files to "assets"' (#5) from jriyuu-patch-6 into main
Reviewed-on: #5
2026-10-30 15:12:42 +11:00
.forgejo/workflows Update .forgejo/workflows/build.yml 2026-10-29 16:21:27 +11:00
assets Upload files to "assets" 2026-10-30 15:12:07 +11:00
.trivyignore Update .trivyignore 2026-10-29 18:16:21 +11:00
Dockerfile Update Dockerfile 2026-10-29 18:56:01 +11:00
entrypoint.sh Update entrypoint.sh 2026-10-29 15:30:33 +11:00
rea-broker.js Upload files to "/" 2026-10-26 09:13:17 +11:00
rea-connect.js Upload files to "/" 2026-10-26 09:13:17 +11:00
rea-launch.js Upload files to "/" 2026-10-26 14:58:08 +11:00
README.md Update README.md 2026-10-29 15:24:23 +11:00
roles.example.json Upload files to "/" 2026-10-25 17:25:57 +11:00
ROLES.md Upload files to "/" 2026-10-26 14:58:08 +11:00

rea-mcp

REA (Reverse Engineer Anything) packaged as a container, with Ghidra 12.1.4 + JDK 21 baked in.

REA only speaks stdio MCP, so supergateway wraps it and serves Streamable HTTP at:

http://<host>:8765/mcp

What's inside

Piece Why
node:24-trixie-slim REA needs Node 22.19+/24.11+
openjdk-21-jdk-headless Full JDK 21 (REA's Ghidra bridge needs javac)
Ghidra 12.1.4 at /opt/ghidra The exact version REA's Ghidra provider supports
procps REA needs ps for process-ownership checks
rea-agents + supergateway The server and the stdio→HTTP bridge

Image is amd64 only. REA's Ghidra provider supports Linux x64 only, so there's no arm64 build.

Image

Built by .forgejo/workflows/build.yml and pushed to:

nidavellir.jriyuu.io/jriyuu-labs/rea-mcp:latest
nidavellir.jriyuu.io/jriyuu-labs/rea-mcp:<rea version>

Triggers: push to main, manual run, and weekly (Mon) so new REA releases get picked up. Uses the ci-bot user / CI_BOT_TOKEN secret.

Deploy (Unraid)

Use unraid/rea-mcp.xml. Defaults:

  • Port 8765 → 8000
  • /data → /mnt/cache/appdata/ai_models_and_tools/rea-mcp (owned by uid/gid 1000)
  • /targets → /mnt/user/rea-targets (read-only). Drop files to analyse here.

Check the container log on first start. It prints rea doctor --json, which should show Ghidra as ready.

Connect an agent

Claude Code:

claude mcp add --transport http rea http://<host>:8765/mcp

Generic MCP config:

{
  "mcpServers": {
    "rea": { "type": "http", "url": "http://<host>:8765/mcp" }
  }
}

Paths you give the agent must be container paths, e.g. /targets/someapp/app.exe.

Security

  • The endpoint has no auth. Keep it LAN-only and don't publish it through SWAG.
  • Targets are mounted read-only. Only analyse software you own or are authorised to examine.

Limits vs. running REA natively

  • No Hopper or IDA, only Ghidra (plus the engine-free JS/Electron, .NET, Go/Rust and SQLite tools).
  • No browser or website observation (no Chrome in the image).
  • No Android device/adb, packet capture (tshark) or firmware tools (binwalk). These can be added to the Dockerfile later if needed.
  • The REA agent skill (workflow instructions) isn't installed on your agent by this. Add it separately if you want it (see "Skill-only installation" in REA's installation docs).