morluto/rea · eab789a

REA: an MCP server that hands your coding agent a reverse engineer's tools, running on your own machine.

  • TypeScript
  • 5 parts
  • main path 21 blocks · ~10 min
  • 876 blocks in all

Outside in: server exposes every tool over MCP, contracts declare each tool's inputs and effects, application owns the one live analysis session, hopper drives the Hopper disassembler, and bridge runs inside Hopper itself to answer.

bridge

Python that runs on Hopper's own thread, the only place Hopper's document objects can be touched, and answers REA over an authenticated socket.

application

The analysis session: one active target shared by the CLI and MCP, the providers behind it, and the evidence it keeps.

contracts

One contract per tool: input schemas, examples and audited effects, kept in one place so a tool's name, schema and hints cannot drift apart.

hopper

The Hopper client: launches Hopper with the bridge injected, sends it one request at a time, and cleans up every process and file it started.

server

The MCP face: registers every tool, runs each call through one execute, record and deliver path, and keeps results inside the response budget.

Watch the reading agent work through it

How does REA decompile a function?