Binary Ninja
Visit ProjectPlugin and bridge integrating Binary Ninja with your MCP client.
Visit ProjectCategory
Tags
What is Binary Ninja MCP?
Binary Ninja MCP is a plugin and bridge system that integrates Binary Ninja (a powerful binary analysis and reverse engineering tool) with various MCP (LLM client) implementations, enabling AI-assisted reverse engineering workflows.
How to use Binary Ninja MCP?
- Install Binary Ninja and the plugin through Binary Ninja's Plugin Manager or manually copy the repository.
- For Claude Desktop integration, set up the virtual environment and configure MCP server settings.
- Start the MCP server from Binary Ninja (
Plugins > MCP Server > Start MCP Server
). - Use your preferred MCP client (like Claude Desktop) to interact with Binary Ninja through natural language prompts.
Key features of Binary Ninja MCP?
- Real-time integration between Binary Ninja and MCP clients
- AI-assisted reverse engineering capabilities
- Extensive function coverage including:
- Binary status checking
- Function and data renaming
- Code decompilation
- Comment management
- Type editing
- Search capabilities
- Primary support for Claude Desktop with extensibility for other MCP clients
Use cases of Binary Ninja MCP?
- Automated binary analysis report generation
- Smart function renaming suggestions
- AI-guided code decompilation reviews
- Context-aware binary exploration
- Quick function and data information retrieval
- Collaborative reverse engineering sessions
FAQ from Binary Ninja MCP?
-
**What are the system requirements?
Binary Ninja, Python 3.12+, and Claude Desktop (or another MCP client)**
-
Can I use this with other LLMs besides Claude?
Yes, the MCP server can be used with other clients by implementing the appropriate integration layer.
-
What programming knowledge is required?
Basic Python knowledge for setup, but the interface is designed to be natural language-based.
-
Is this free to use?
The plugin is open-source (check the project's license), but you'll need a valid Binary Ninja license.
-
What functions are currently supported?
See the extensive list of supported integrations in the project documentation, including function listing, renaming, decompilation, and more.
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
- Enhanced reverse engineering workflow with AI assistance
- Primary support for Claude Desktop as the MCP client, but extensible for other integrations
Examples
Generating a Binary Analysis Report
Renaming Functions
Components
This repository contains two separate components:
- A Binary Ninja plugin that provides an MCP server that exposes Binary Ninja's capabilities through HTTP endpoints. This can be used with any client that implements the MCP protocol.
- A separate MCP bridge component that connects your favorite MCP client to the Binary Ninja MCP server. While Claude Desktop is the primary integration path, the MCP server can be used with other clients.
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. |
set_comment |
Set a comment at a specific address. |
set_function_comment |
Set a comment for a function. |
get_comment |
Get the comment at a specific address. |
get_function_comment |
Get the comment for a function. |
delete_comment |
Delete the comment at a specific address. |
delete_function_comment |
Delete the comment for a function. |
get_assembly_function |
Get the assembly representation of a function by name or address. |
function_at |
Retrive the name of the function the address belongs to. |
code_references |
Retrive names and addresses of functions that call the given function. |
get_user_defined_type |
Retrive definition of a user defined type (struct, enumeration, typedef, union). |
rename_variable |
Rename variable inside a given function. |
retype_variable |
Retype variable inside a given function. |
define_types |
Add type definitions from a C string type definition. |
edit_function_signature |
Edit signature of a given function, given as a type string. |
Prerequisites
- Binary Ninja
- Python 3.12+
- Claude Desktop (or your preferred integration)
Installation
Binary Ninja Plugin
You may install the plugin through Binary Ninja's Plugin Manager (Plugins > Manage Plugins
).
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:
- Navigate to
Settings > Developer > Edit Config
- Add the following configuration:
{
"mcpServers": {
"binary_ninja_mcp": {
"command": "/ABSOLUTE/PATH/TO/binary_ninja_mcp/.venv/bin/python",
"args": [
"/ABSOLUTE/PATH/TO/binary_ninja_mcp/bridge/binja_mcp_bridge.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
- Open Binary Ninja and install the
Binary Ninja MCP
plugin - Restart Binary Ninja and then open a binary
- Start the MCP server (
Plugins > MCP Server > Start MCP Server
) - Launch Claude Desktop
The integration will be automatically available after you open Claude Desktop.
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.