Binary Ninja MCP Server
A Model Context Protocol server for Binary Ninja interaction and automation. This server provides tools to interact with Binary Ninja via Large Language Models.
Overview
The Binary Ninja MCP Server is a plugin and server implementation that allows Large Language Models to interact with Binary Ninja through the Model Context Protocol (MCP). It provides functionalities such as:
- Get assembly code for functions
- Get decompiled code (HLIL) for functions
- Rename functions and variables
- Add comments
Installation
Using uv (recommended)
When using uv no specific installation is needed. We will
use uvx to directly run binja_mcp.
Using PIP
Alternatively you can install binja-mcp via pip:
After installation, you can run it as a script using:
Binary Ninja Plugin Installation
Clone this repository OR link the cloned repository into Binary Ninja's plugin directory:
- Linux:
~/.binaryninja/plugins/
- macOS:
~/Library/Application Support/Binary Ninja/plugins/
- Windows:
%APPDATA%\Binary Ninja\plugins\
Configuration
Usage with Claude Desktop/Cursor
Add this to your claude_desktop_config.json or Cursor MCP servers:
Using uvx
"mcpServers": {
"binja": {
"command": "uvx",
"args": [
"-n",
"mcp-server-binja"
]
}
}
Using pip installation
"mcpServers": {
"binja": {
"command": "python",
"args": [
"-m",
"mcp_server_binja"
]
}
}
Usage
- Open Binary Ninja and load a binary
- Start the MCP Server from the Tools menu or using the keyboard shortcut
- Use Claude Desktop, Cursor, or any MCP client of your preference to interact with the binary
Available Commands
The following commands are available through the MCP interface:
binja_get_function_assembly: Get assembly code for a named function
binja_get_function_decompiled: Get decompiled code for a named function
binja_get_global_variable: Get information about a global variable
binja_get_current_function_assembly: Get assembly for the current function
binja_get_current_function_decompiled: Get decompiled code for the current function
Development
If you are doing local development, there are two ways to test your changes:
- Run the MCP inspector to test your changes:
npx @modelcontextprotocol/inspector uvx binja_mcp
- Test using the Claude desktop app by adding the following to your
claude_desktop_config.json:
{
"mcpServers": {
"binja": {
"command": "uv",
"args": [
"--directory",
"//src",
"run",
"mcp-server-binja"
]
}
}
}
License
This project is licensed under the MIT License - see the LICENSE file for details.