Skip to content

A Binary Ninja plugin, MCP server, and bridge that seamlessly integrates Binary Ninja with your favorite LLM/MCP client.

License

Notifications You must be signed in to change notification settings

opensensor/binary_ninja_mcp

 
 

Repository files navigation

Binary Ninja MCP

This repository contains a Binary Ninja plugin, MCP server, and bridge that enables seamless integration of Binary Ninja's capabilities with your favorite LLM client.

Features

  • Seamless, real-time integration between Binary Ninja and MCP clients
  • Multi-binary support: Analyze multiple binaries simultaneously with automatic routing
  • Enhanced reverse engineering workflow with AI assistance
  • Binary selection and comparative analysis capabilities
  • Primary support for Claude Desktop as the MCP client, but extensible for other integrations

Examples

Generating a Binary Analysis Report

Binary Analysis Report Generation

Renaming Functions

Rename Function Demo

Components

This repository contains two separate components:

  1. A Binary Ninja plugin that provides MCP servers that expose Binary Ninja's capabilities through HTTP endpoints. Now supports multiple binaries simultaneously with automatic port allocation and server management.
  2. A separate MCP bridge component that connects your favorite MCP client to the Binary Ninja MCP servers. Enhanced with routing capabilities to work with multiple binaries and automatic server discovery.

Multi-Binary Support

The enhanced system now supports analyzing multiple binaries simultaneously:

  • Multiple Servers: Each binary gets its own MCP server on a unique port (9009, 9010, 9011, etc.)
  • Automatic Discovery: The bridge automatically discovers all running Binary Ninja servers
  • Binary Selection: Use binary_id parameters in MCP tools to select which binary to analyze
  • Comparative Analysis: Analyze and compare multiple binaries in the same session

For detailed setup instructions, see MULTI_BINARY_SETUP.md.

Supported Integrations

The following table details which integrations with Binary Ninja are currently supported.

Function Description
get_binary_status Get the current status of the loaded binary.
list_classes List all namespace/class names in the program.
list_data_items List defined data labels and their values.
list_exports List exported functions/symbols.
list_imports List imported symbols in the program.
list_methods List all function names in the program.
list_namespaces List all non-global namespaces in the program.
list_segments List all memory segments in the program.
rename_data Rename a data label at the specified address.
rename_function Rename a function by its current name to a new user-defined name.
search_functions_by_name Search for functions whose name contains the given substring.
decompile_function Decompile a specific function by name and return the decompiled C code.

Prerequisites

Installation

Binary Ninja Plugin

You may install the plugin through Binary Ninja's Plugin Manager (Plugins > Manage Plugins).

Plugin Manager Listing

To manually configure the plugin, this repository can be copied into the Binary Ninja plugins folder.

Claude Desktop Bridge (Optional)

This is only needed if you want to use Claude Desktop as your MCP client. Make sure that you have your virtual environment configured first:

git clone git@github.com:fosdickio/binary_ninja_mcp.git
cd binary_ninja_mcp

python3 -m venv .venv
source .venv/bin/activate   # On macOS/Linux

pip install -r bridge/requirements.txt

Automated Configuration (Mac)

On a Mac, you can automate the setup by running:

./scripts/setup_claude_desktop.py

Manual Configuration

On other operating systems or to manually configure the Claude Desktop integration:

  1. Navigate to Settings > Developer > Edit Config
  2. Add the following configuration:

Single Binary (Legacy)

{
  "mcpServers": {
    "binary_ninja_mcp": {
      "command": "/ABSOLUTE/PATH/TO/binary_ninja_mcp/.venv/bin/python",
      "args": [
        "/ABSOLUTE/PATH/TO/binary_ninja_mcp/bridge/bn_mcp_bridge_stdio.py"
      ]
    }
  }
}

Multi-Binary (Recommended)

{
  "mcpServers": {
    "binary_ninja_multi_mcp": {
      "command": "/ABSOLUTE/PATH/TO/binary_ninja_mcp/.venv/bin/python",
      "args": [
        "/ABSOLUTE/PATH/TO/binary_ninja_mcp/bridge/bn_mcp_bridge_multi_http.py"
      ]
    }
  }
}

Note: Replace `/ABSOLUTE/PATH/TO` with the actual absolute path to your project directory. The virtual environment's Python interpreter must be used to access the installed dependencies.

## Usage

### Claude Desktop

1. Open Binary Ninja and install the `Binary Ninja MCP` plugin
2. Restart Binary Ninja and then open a binary
3. Start the MCP server (`Plugins > MCP Server > Start MCP Server`)
4. Launch Claude Desktop

The integration will be automatically available after you open Claude Desktop.

![Claude Integration](images/claude-desktop-integration.png)

You may now start prompting Claude about the currently open binary.  Example prompts:

- "Generate a binary analysis report for the current binary."
- "Rename function X to Y in the current binary."
- "List all functions in the current binary."
- "What is the status of the loaded binary?"

### Other MCP Client Integrations

The bridge can be used with other MCP clients by implementing the appropriate integration layer.

## Development

The project structure is organized as follows:

binary_ninja_mcp/ ├── bridge/ # MCP client integration ├── plugin/ # Binary Ninja plugin ├── scripts/ │ └── setup_claude_desktop.py # Setup script for Claude Desktop

## Contributing

Contributions are welcome. Please feel free to submit a pull request.

About

A Binary Ninja plugin, MCP server, and bridge that seamlessly integrates Binary Ninja with your favorite LLM/MCP client.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%