
BinAssistMCP
Enables AI-assisted reverse engineering by bridging Binary Ninja with Large Language Models through 40+ analysis tools. Provides comprehensive binary analysis capabilities including decompilation, symbol management, type analysis, and documentation generation through natural language interactions.
README
BinAssistMCP
Comprehensive Model Context Protocol (MCP) server for Binary Ninja with AI-powered reverse engineering capabilities
Summary
BinAssistMCP is a powerful bridge between Binary Ninja and Large Language Models (LLMs) like Claude, providing comprehensive reverse engineering tools through the Model Context Protocol (MCP). It enables AI-assisted binary analysis by exposing Binary Ninja's advanced capabilities through both Server-Sent Events (SSE) and STDIO transports.
Key Features
- Dual Transport Support: Both SSE (web-based) and STDIO (command-line) transports
- 40+ Analysis Tools: Complete Binary Ninja API wrapper with advanced functionality
- Multi-Binary Sessions: Concurrent analysis of multiple binaries with intelligent context management
- Smart Symbol Management: Advanced function searching, renaming, and type management
- Auto-Integration: Seamless Binary Ninja plugin with automatic startup capabilities
- Flexible Configuration: Comprehensive settings management through Binary Ninja's interface
- AI-Ready: Optimized for LLM integration with structured tool responses
Use Cases
- AI-Assisted Reverse Engineering: Leverage LLMs for intelligent code analysis and documentation
- Automated Binary Analysis: Script complex analysis workflows with natural language
- Research and Education: Teach reverse engineering concepts with AI guidance
- Security Analysis: Accelerate vulnerability research and malware analysis
- Code Understanding: Generate comprehensive documentation and explanations
Tool Details
BinAssistMCP provides over 40 specialized tools organized into functional categories:
Binary Management
list_binaries
- List all loaded binary filesget_binary_status
- Check analysis status and metadataupdate_analysis_and_wait
- Force analysis update and wait for completion
Code Analysis & Decompilation
decompile_function
- Generate high-level decompiled codeget_function_pseudo_c
- Extract pseudo-C representationget_function_high_level_il
- Access High-Level Intermediate Languageget_function_medium_level_il
- Access Medium-Level Intermediate Languageget_disassembly
- Retrieve assembly code with annotations
Information Retrieval
get_functions
- List all functions with metadatasearch_functions_by_name
- Find functions by name patternsget_functions_advanced
- Advanced filtering (size, complexity, parameters)search_functions_advanced
- Multi-target searching (name, comments, calls, variables)get_function_statistics
- Comprehensive binary statisticsget_imports
- Import table analysis grouped by moduleget_exports
- Export table with symbol informationget_strings
- String extraction with contextget_segments
- Memory layout analysisget_sections
- Binary section information
Symbol & Naming Management
rename_symbol
- Rename functions and data variablesget_cross_references
- Find all references to/from symbolsanalyze_function
- Comprehensive function analysisget_call_graph
- Call relationship mapping
Documentation & Comments
set_comment
- Add comments to specific addressesget_comment
- Retrieve comments at addressesget_all_comments
- Export all comments with contextremove_comment
- Delete existing commentsset_function_comment
- Add function-level documentation
Variable Management
create_variable
- Define local variables in functionsget_variables
- List function parameters and localsrename_variable
- Rename variables for clarityset_variable_type
- Update variable type information
Type System Management
create_type
- Define custom types and structuresget_types
- List all user-defined typescreate_enum
- Create enumeration typescreate_typedef
- Create type aliasesget_type_info
- Detailed type informationget_classes
- List classes and structurescreate_class
- Define new classes/structuresadd_class_member
- Add members to existing types
Data Analysis
create_data_var
- Define data variables at addressesget_data_vars
- List all defined data variablesget_data_at_address
- Analyze raw data with type inference
Navigation & Context
get_current_address
- Get current cursor positionget_current_function
- Identify function at current addressget_namespaces
- Namespace and symbol organization
Advanced Analysis
get_triage_summary
- Complete binary overviewget_function_statistics
- Statistical analysis of all functions
Each tool is designed for seamless integration with AI workflows, providing structured responses that LLMs can easily interpret and act upon.
Installation
Prerequisites
- Binary Ninja: Version 4000 or higher
- Python: 3.8+ (typically bundled with Binary Ninja)
- Platform: Windows, macOS, or Linux
Option 1: Binary Ninja Plugin Manager (Recommended)
- Open Binary Ninja
- Navigate to Tools → Manage Plugins
- Search for "BinAssistMCP"
- Click Install
- Restart Binary Ninja
Option 2: Manual Installation
Step 1: Download and Extract
git clone https://github.com/jtang613/BinAssistMCP.git
cd BinAssistMCP
Step 2: Install Dependencies
# Install Python dependencies
pip install -r requirements.txt
# Or install individually:
pip install anyio>=4.0.0 hypercorn>=0.16.0 mcp>=1.0.0 trio>=0.27.0 pydantic>=2.0.0 pydantic-settings>=2.0.0 click>=8.0.0
Step 3: Copy to Plugin Directory
Windows:
copy BinAssistMCP "%APPDATA%\Binary Ninja\plugins\"
macOS:
cp -r BinAssistMCP ~/Library/Application\ Support/Binary\ Ninja/plugins/
Linux:
cp -r BinAssistMCP ~/.binaryninja/plugins/
Step 4: Verify Installation
- Restart Binary Ninja
- Open any binary file
- Check Tools menu for "BinAssistMCP" submenu
- Look for startup messages in the log panel
Configuration
Basic Setup
- Open Binary Ninja Settings (Edit → Preferences)
- Navigate to the binassistmcp section
- Configure server settings:
- Host:
localhost
(default) - Port:
9090
(default) - Transport:
both
(SSE + STDIO)
- Host:
Advanced Configuration
# Environment variables (optional)
export BINASSISTMCP_SERVER__HOST=localhost
export BINASSISTMCP_SERVER__PORT=9090
export BINASSISTMCP_SERVER__TRANSPORT=both
export BINASSISTMCP_BINARY__MAX_BINARIES=10
Usage
Starting the Server
Via Binary Ninja Menu:
- Tools → BinAssistMCP → Start Server
- Check log panel for startup confirmation
- Note the server URL (e.g.,
http://localhost:9090
)
Auto-Startup (Default):
- Server starts automatically when Binary Ninja loads a file
- Configurable via settings:
binassistmcp.plugin.auto_startup
Connecting with Claude Desktop
Add to your Claude Desktop MCP configuration:
{
"mcpServers": {
"binassist": {
"command": "python",
"args": ["/path/to/BinAssistMCP"],
"env": {
"BINASSISTMCP_SERVER__TRANSPORT": "stdio"
}
}
}
}
Using with SSE Transport
Connect web-based MCP clients to:
http://localhost:9090/sse
Integration Examples
Basic Function Analysis
Ask Claude: "Analyze the main function in the loaded binary and explain what it does"
Claude will use tools like:
- get_functions() to find main
- decompile_function() to get readable code
- get_function_pseudo_c() for C representation
- analyze_function() for comprehensive analysis
Vulnerability Research
Ask Claude: "Find all functions that handle user input and check for buffer overflows"
Claude will use:
- search_functions_advanced() to find input handlers
- get_cross_references() to trace data flow
- get_variables() to analyze buffer usage
- set_comment() to document findings
Troubleshooting
Common Issues
Server won't start:
- Check Binary Ninja log panel for error messages
- Verify all dependencies are installed
- Ensure port 9090 is not in use
Binary Ninja crashes:
- Check Python environment compatibility
- Try reducing
max_binaries
setting - Restart with a single binary file
Tools return errors:
- Ensure binary analysis is complete
- Check if Binary Ninja file is still open
- Verify function/address exists
Support
- Issues: Report bugs on GitHub Issues
- Binary Ninja: Check official Binary Ninja documentation
Contributing
- Fork the repository
- Create a feature branch
- Make your changes following the existing code style
- Test with multiple binary types
- Submit a pull request
License
This project is licensed under the MIT License - see the LICENSE file for details.
推荐服务器

Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。