HopperMCP
A Model Context Protocol server for Hopper Disassembler
claude mcp add --transport stdio mxiris-reverse-engineering-hoppermcp node path/to/server.js \ --env HOPPER_MCP_APP_PATH="Path to HopperMCP.app or HopperMCP application directory" \ --env HOPPER_MCP_PLUGIN_DIR="Directory where plugins are installed" \ --env HOPPER_MCP_REQUIRED_SIP="disable SIP is required on macOS to inject into Hopper (see README note)."
How to use
HopperMCP exposes a set of tools to read and write Hopper Disassembler files via a Model Context Protocol client. Once the MCP server is running, you can connect with your MCP client using the HopperMCP server endpoint and the available toolset. The server provides capabilities to fetch the current assembly or pseudocode, query by name or by address, and add comments (including inline comments) to the loaded Hopper document. These tools enable automated reasoning and augmentation by large language models to interact with Hopper’s disassembly, streamlining analysis and documentation tasks.
Available tools include: Get current assembly/pseudocode, Get assembly/pseudocode by name, Get assembly/pseudocode by address, Add comment, and Add inline comment. After starting the MCP plugin service and notifying Hopper that a document has loaded, you can begin issuing requests to fetch the current view, locate specific segments by address or symbol, and annotate the code with comments that help guide subsequent analysis or explain decisions made by the model. The workflow typically involves starting HopperMCP, starting the MCP plugin, and then using the client to perform reads and writes as needed to support automation tasks.
How to install
Prerequisites:
- macOS environment with Hopper Disassembler installed
- Ability to disable System Integrity Protection (SIP) if you intend to inject code into Hopper (as described in the README note)
- Access to install and run the HopperMCP server binary or package
Installation steps:
- Install HopperMCP.app and the helper/plugin as described in the project's usage notes.
- Ensure HopperMCP is running in the background and attach it to Hopper as per the documentation (start HopperMCP before launching Hopper).
- Copy the Hopper MCP Server JSON (as shown in the app’s interface) and configure your MCP client to connect to the HopperMCP server using the provided mcp_config details.
- Launch your MCP client and verify connectivity by issuing a simple read (e.g., Get current assembly/pseudocode).
- If needed, place your plugins in the designated directory and use the app’s options to reload plugins or notify document loaded as described in the usage guide.
Additional notes
Tips and considerations:
- HopperMCP relies on injecting code into Hopper, which interacts with Hopper’s private interfaces. This may be unstable across Hopper updates; expect changes in available tools and behavior.
- The host environment often requires disabling SIP to enable code injection, which has security implications. Only proceed if you understand the risks and follow organizational guidelines.
- The MCP server expects a specific sequence: start HopperMCP, start the MCP plugin service, then load a document in Hopper and notify the plugin when the document is fully loaded to trigger caching.
- If you encounter issues connecting from the MCP client, ensure the env hints (paths to HopperMCP app and plugin directory) are correctly configured and that the plugin service is running.
- Since the tooling interacts with private Hopper interfaces, plan for potential breakage with Hopper updates and maintain a version-compatible setup.