binaryninja-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@binaryninja-mcpget pseudo C code for the main function"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Another™ MCP Server for Binary Ninja
The MCP (Model Context Protocol) Server for Binary Ninja
English | 中文
Demo
The tests/binary/beleaf.elf is taken from CSAW'19: Beleaf - Nightmare. You can also find the complete writeup from the link above!

... but why Another?
See: Key Differences from the Existing Plugin
Installation
Related MCP server: BinAssistMCP
Server Setup
There are two ways to run the MCP server:
Binary Ninja UI Plugin:
Install the plugin via Binary Ninja's plugin manager
The MCP server will start automatically when first file is loaded.
Auto start is configurable via
Settings - MCP Server - Auto StartListen port is configurable via
Settings - MCP Server - Server port number
All opened files are exposed to separate resources, see Available Resources section below
Binary Ninja Headless Mode:
uvx binaryninja-mcp install-api # only run once uvx binaryninja-mcp server <filename> [filename]...filenamecould be any binary files or BNDB, like in UI mode, all opened files are available to the MCP client.Server runs on default port 7000
Use
--portflag to specify a different port
MCP Client Setup
Claude Desktop (stdio relay client): Configure the client to connect via stdio transport using built-in relay.
{ "mcpServers": { "binaryninja": { "command": "uvx", "args": ["binaryninja-mcp", "client"] } } }Cherry Studio:
SSE endpoint (recommanded): URL:
http://localhost:7000/ssestdio client:
Command:
uvxArguments:
binaryninja-mcp client
Add --port 12345 to both server and client command line if you prefer to run
MCP server on port other than default.
Available Tools for MCP Clients
The MCP server provides the following tools:
rename_symbol: Rename a function or a data variablepseudo_c: Get pseudo C code of a specified functionpseudo_rust: Get pseudo Rust code of a specified functionhigh_level_il: Get high level IL of a specified functionmedium_level_il: Get medium level IL of a specified functiondisassembly: Get disassembly of a function or specified rangeupdate_analysis_and_wait: Update analysis for the binary and wait for completionget_triage_summary: Get basic information from BinaryNinja Triage viewget_imports: Get dictionary of imported symbolsget_exports: Get dictionary of exported symbolsget_segments: Get list of memory segmentsget_sections: Get list of binary sectionsget_strings: Get list of strings found in the binaryget_functions: Get list of functionsget_data_variables: Get list of data variables
Available Resources for MCP Clients
MCP Resources can be accessed via URIs in the format:
binaryninja://{filename}/{resource_type}
The server provides these resource types for each binary:
triage_summary: Basic information from BinaryNinja Triage viewimports: Dictionary of imported symbols/functionsexports: Dictionary of exported symbols/functionssegments: List of memory segmentssections: List of binary sectionsstrings: List of strings found in the binaryfunctions: List of functionsdata_variables: List of data variables
Development
uv is the recommanded package management tool for this project.
Clone directory to Binary Ninja Plugin Directory
git clone https://github.com/MCPPhalanx/binaryninja-mcp.git "${env:APPDATA}\Binary Ninja\plugins\MCPPhalanx_binaryninja_mcp"Setup Python Environment
Binary Ninja API must be installed into virtualenv manually.
uv venv
uv sync --dev
# install binaryninja API
binaryninja-mcp install-api
# check API is correctly installed
uv run python -c 'import binaryninja as bn; assert bn._init_plugins() is None; assert bn.core_ui_enabled() is not None; print("BN API check PASSED!!")'Setup MCP Client for Development
For MCP clients with stdio transport like Claude Desktop, change working directory to development folder.
{
"mcpServers": {
"binaryninja": {
"command": "uv",
"args": [
"--directory",
"C:/path/to/binaryninja-mcp",
"run",
"binaryninja-mcp",
"client"
]
}
}
}SSE-enabled MCP clients can connect using: http://localhost:7000/sse
Build
uv buildTest
pytest
# To update test snapshots:
pytest --snapshot-updateVersion Bump
The PyPI package version is automatically derived from Binary Ninja's
plugin.json (using package.json format), maintaining version consistency
between the BN plugin and PyPI package.
# bump alpha version
uvx hatch version a
# bump release version
uvx hatch version minor,rc
uvx hatch version releaseSee: Versioning - Hatch
Release
uv publishLicense
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/MCPPhalanx/binaryninja-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server