An enterprise-grade MCP (Model Context Protocol) server for AI-powered reverse engineering. Enables AI agents to perform comprehensive binary analysis through natural language commands.
Ghidra is required for advanced decompilation features. The installation scripts automatically install Ghidra to <project>/Tools directory.
Option 1: Automatic Installation (Recommended)
# Windows (PowerShell)
.\scripts\install-ghidra.ps1
# With custom version/path (optional)
.\scripts\install-ghidra.ps1 -Version "11.4.3" -InstallDir "C:\CustomPath"# Linux/macOS
chmod +x ./scripts/install-ghidra.sh
./scripts/install-ghidra.sh
# With custom version/path (optional)
./scripts/install-ghidra.sh -v 11.4.3 -d /custom/pathWhat the scripts do:
- Downloads Ghidra 11.4.3 from GitHub (~400MB)
- Extracts to
<project>/Tools/ghidra_11.4.3_PUBLIC_YYYYMMDD - Sets
GHIDRA_INSTALL_DIRenvironment variable - Updates project
.envfile
Option 2: Manual Installation
- Download: Ghidra 11.4.3
- Extract to
<project>/Tools/or any directory - Set environment variable:
Or add to
# Linux/macOS (~/.bashrc or ~/.zshrc) export GHIDRA_INSTALL_DIR=/path/to/ghidra_11.4.3_PUBLIC_YYYYMMDD # Windows (PowerShell - permanent) [Environment]::SetEnvironmentVariable("GHIDRA_INSTALL_DIR", "C:\path\to\ghidra", "User")
.envfile (copy from.env.example)
β οΈ Note: JDK 17+ is required for Ghidra. Download from Adoptium if needed.
# Auto-detect architecture (Intel/AMD or Apple Silicon)
./scripts/run-docker.sh
# Or manually:
# Intel/AMD
docker compose --profile x86 up -d
# Apple Silicon (M1/M2/M3/M4)
docker compose --profile arm64 up -dStep 1: Build Docker Image
The unified Dockerfile automatically detects your system architecture:
# Automatic architecture detection (works for all platforms)
docker build -t reversecore-mcp:latest .
# Or use the convenience script
./scripts/run-docker.shStep 2: Configure MCP Client
Add to ~/.cursor/mcp.json:
π macOS (All Processors)
{
"mcpServers": {
"reversecore": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-v", "/Users/YOUR_USERNAME/Reversecore_Workspace:/app/workspace",
"-e", "REVERSECORE_WORKSPACE=/app/workspace",
"-e", "MCP_TRANSPORT=stdio",
"reversecore-mcp:latest"
]
}
}
}π§ Linux
{
"mcpServers": {
"reversecore": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-v", "/path/to/workspace:/app/workspace",
"-e", "REVERSECORE_WORKSPACE=/app/workspace",
"-e", "MCP_TRANSPORT=stdio",
"reversecore-mcp:latest"
]
}
}
}πͺ Windows
{
"mcpServers": {
"reversecore": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-v", "C:/Reversecore_Workspace:/app/workspace",
"-e", "REVERSECORE_WORKSPACE=/app/workspace",
"-e", "MCP_TRANSPORT=stdio",
"reversecore-mcp:latest"
]
}
}
}
β οΈ IMPORTANT: File Path Usage in DockerThe MCP server runs inside a Docker container. When using analysis tools, use only the filename, not the full local path.
β Wrong β Correct run_file("/Users/john/Reversecore_Workspace/sample.exe")run_file("sample.exe")Why? Your local path (e.g.,
/Users/.../Reversecore_Workspace/) is mounted to/app/workspace/inside the container. Tools automatically look for files in the workspace directory.Tip: Use
list_workspace()to see all available files in your workspace.
Comprehensive file analysis and metadata extraction:
- File Type Detection: Identify binary format, architecture, and compiler information (
run_file) - String Extraction: Extract ASCII/Unicode strings with configurable limits (
run_strings) - Firmware Analysis: Deep scan for embedded files and signatures (
run_binwalk) - Binary Parsing: Parse PE/ELF/Mach-O headers and sections with LIEF (
parse_binary_with_lief)
Multi-architecture binary analysis with intelligent tooling:
- Radare2 Integration: Full r2 command access with connection pooling (
run_radare2,Radare2_disassemble) - Ghidra Decompilation: Enterprise-grade decompilation with 16GB JVM heap (
smart_decompile,get_pseudo_code) - Multi-Architecture Support: x86, x86-64, ARM, ARM64, MIPS, PowerPC via Capstone (
disassemble_with_capstone) - Smart Fallback: Automatic Ghidra-first, r2-fallback strategy for best results
Deep code analysis and behavior understanding:
- Cross-Reference Analysis: Track function calls, data references, and control flow (
analyze_xrefs) - Structure Recovery: Infer data structures from pointer arithmetic and memory access patterns (
recover_structures) - Emulation: ESIL-based code emulation for dynamic behavior analysis (
emulate_machine_code) - Binary Comparison: Diff binaries and match library functions (
diff_binaries,match_libraries)
Specialized tools for threat detection and mitigation:
- Dormant Threat Detection: Find hidden backdoors, orphan functions, and logic bombs (
dormant_detector) - IOC Extraction: Automatically extract IPs, URLs, domains, emails, hashes, and crypto addresses (
extract_iocs) - YARA Scanning: Pattern-based malware detection with custom rules (
run_yara) - Adaptive Vaccine: Generate defensive measures (YARA rules, binary patches, NOP injection) (
adaptive_vaccine) - Vulnerability Hunter: Detect dangerous API patterns and exploit paths (
vulnerability_hunter)
Built-in observability tools for enterprise environments:
- Health Check: Monitor uptime, memory usage, and operational status (
get_server_health) - Performance Metrics: Track tool execution times, error rates, and call counts (
get_tool_metrics) - Auto-Recovery: Automatic retry mechanism with exponential backoff for transient failures
Visual interface for binary analysis without LLM:
# Start server in HTTP mode
MCP_TRANSPORT=http MCP_API_KEY=your-secret-key python server.py
# Access dashboard
open http://localhost:8000/dashboard/Features:
- Overview: File list with upload stats
- Analysis: Functions list, disassembly viewer
- IOCs: Extracted URLs, IPs, emails, strings
Security:
- XSS protection with HTML sanitization
- Path traversal prevention
- API key authentication (optional)
Professional malware analysis report generation with accurate timestamps:
- One-Shot Submission: Generate standardized JSON reports with a single command (
generate_malware_submission) - Session Tracking: Start/end analysis sessions with automatic duration calculation (
start_analysis_session,end_analysis_session) - IOC Collection: Collect and organize indicators during analysis (
add_session_ioc) - MITRE ATT&CK Mapping: Document techniques with proper framework references (
add_session_mitre) - Email Delivery: Send reports directly to security teams with SMTP support (
send_report_email) - Multiple Templates: Full analysis, quick triage, IOC summary, executive brief
# Example 1: One-Shot JSON Submission
generate_malware_submission(
file_path="wannacry.exe",
analyst_name="Hunter",
tags="ransomware,critical"
)
# Example 2: Interactive Session Workflow
get_system_time()
start_analysis_session(sample_path="malware.exe")
add_session_ioc("ips", "192.168.1.100")
add_session_mitre("T1059.001", "PowerShell", "Execution")
end_analysis_session(summary="Ransomware detected")
create_analysis_report(template_type="full_analysis")
send_report_email(to="security-team@company.com")- Resource Management:
- Zombie Killer: Guaranteed subprocess termination with
try...finallyblocks - Memory Guard: Strict 2MB limit on
stringsoutput to prevent OOM - Crash Isolation: LIEF parser runs in isolated process to handle segfaults safely
- Zombie Killer: Guaranteed subprocess termination with
- Optimizations:
- Dynamic Timeout: Auto-scales with file size (base + 2s/MB, max +600s)
- Ghidra JVM: 16GB heap for modern systems (24-32GB RAM)
- Sink-Aware Pruning: 39 dangerous sink APIs for intelligent path prioritization
- Trace Depth Optimization: Reduced from 3 to 2 for faster execution path analysis
- Infrastructure:
- Stateless Reports: Timezone-aware reporting without global state mutation
- Robust Retries: Decorators now correctly propagate exceptions for auto-recovery
- Config-Driven: Validation limits synchronized with central configuration
| Category | Tools |
|---|---|
| File Operations | list_workspace, get_file_info |
| Static Analysis | run_file, run_strings, run_binwalk |
| Disassembly | run_radare2, Radare2_disassemble, disassemble_with_capstone |
| Decompilation | smart_decompile, get_pseudo_code |
| Advanced Analysis | analyze_xrefs, recover_structures, emulate_machine_code |
| Binary Parsing | parse_binary_with_lief |
| Binary Comparison | diff_binaries, match_libraries |
| Malware Analysis | dormant_detector, extract_iocs, run_yara, adaptive_vaccine, vulnerability_hunter |
| Report Generation | get_system_time, set_timezone, start_analysis_session, add_session_ioc, add_session_mitre, end_analysis_session, create_analysis_report, send_report_email, generate_malware_submission |
| Server Management | get_server_health, get_tool_metrics |
π₯ Upload β π Triage β π X-Refs β ποΈ Structures β π Decompile β π‘οΈ Defense
Use built-in prompts for guided analysis:
full_analysis_mode- Comprehensive malware analysis with 6-phase expert reasoning and evidence classificationbasic_analysis_mode- Quick triage for fast initial assessmentgame_analysis_mode- Game client analysis with cheat detection guidancefirmware_analysis_mode- IoT/Firmware security analysis with embedded system focusreport_generation_mode- Professional report generation workflow with MITRE ATT&CK mapping
π‘ AI Reasoning Enhancement: Analysis prompts use expert persona priming, Chain-of-Thought checkpoints, structured reasoning phases, and evidence classification (OBSERVED/INFERRED/POSSIBLE) to maximize AI analysis capabilities and ensure thorough documentation.
reversecore_mcp/
βββ core/ # Infrastructure & Services
β βββ config.py # Configuration management
β βββ ghidra.py, ghidra_manager.py, ghidra_helper.py # Ghidra integration (16GB JVM)
β βββ r2_helpers.py, r2_pool.py # Radare2 connection pooling
β βββ security.py # Path validation & input sanitization
β βββ result.py # ToolSuccess/ToolError response models
β βββ metrics.py # Tool execution metrics
β βββ report_generator.py # Report generation service
β βββ plugin.py # Plugin interface for extensibility
β βββ decorators.py # @log_execution, @track_metrics
β βββ error_handling.py # @handle_tool_errors decorator
β βββ logging_config.py # Structured logging setup
β βββ memory.py # AI memory store (async SQLite)
β βββ mitre_mapper.py # MITRE ATT&CK framework mapping
β βββ resource_manager.py # Subprocess lifecycle management
β βββ validators.py # Input validation
β
βββ tools/ # MCP Tool Implementations
β βββ analysis/ # Basic analysis tools
β β βββ static_analysis.py # file, strings, binwalk
β β βββ lief_tools.py # PE/ELF/Mach-O parsing
β β βββ diff_tools.py # Binary comparison
β β βββ signature_tools.py # YARA scanning
β β
β βββ radare2/ # Radare2 integration
β β βββ r2_analysis.py # Core r2 analysis
β β βββ radare2_mcp_tools.py # Advanced r2 tools (CFG, ESIL)
β β βββ r2_session.py # Session management
β β βββ r2_pool.py # Connection pooling
β β
β βββ ghidra/ # Ghidra decompilation
β β βββ decompilation.py # smart_decompile, pseudo-code
β β βββ ghidra_tools.py # Structure/Enum management
β β
β βββ malware/ # Malware analysis & defense
β β βββ dormant_detector.py # Hidden threat detection
β β βββ adaptive_vaccine.py # Defense generation
β β βββ vulnerability_hunter.py # Vulnerability detection
β β βββ ioc_tools.py # IOC extraction
β β βββ yara_tools.py # YARA rule management
β β
β βββ common/ # Cross-cutting concerns
β β βββ file_operations.py # Workspace file management
β β βββ server_tools.py # Health checks, metrics
β β βββ memory_tools.py # AI memory operations
β β
β βββ report/ # Report generation (v3.1)
β βββ report_tools.py # Core report engine
β βββ report_mcp_tools.py # MCP tool registration
β βββ session.py # Analysis session tracking
β βββ email.py # SMTP integration
β
βββ prompts.py # AI reasoning prompts (5 modes)
βββ resources.py # Dynamic MCP resources (reversecore:// URIs)
βββ server.py # FastMCP server initialization & HTTP setup
The unified Dockerfile automatically detects your system architecture:
| Architecture | Auto-Detected | Support |
|---|---|---|
| x86_64 (Intel/AMD) | β | Full support |
| ARM64 (Apple Silicon M1-M4) | β | Full support |
# Using convenience script (auto-detects architecture)
./scripts/run-docker.sh # Start
./scripts/run-docker.sh stop # Stop
./scripts/run-docker.sh logs # View logs
./scripts/run-docker.sh shell # Shell access
# Manual Docker build (works for all architectures)
docker build -t reversecore-mcp:latest .
# Or using Docker Compose
docker compose up -d| Variable | Default | Description |
|---|---|---|
| `MCP_TRANSPORT` | `http` | Transport mode (`stdio` or `http`) |
| `REVERSECORE_WORKSPACE` | `/app/workspace` | Analysis workspace path |
| `LOG_LEVEL` | `INFO` | Logging level |
| `GHIDRA_INSTALL_DIR` | `/opt/ghidra` | Ghidra installation path |
- No shell injection: All subprocess calls use list arguments
- Path validation: Workspace-restricted file access
- Input sanitization: All parameters validated
- Rate limiting: Configurable request limits (HTTP mode)
# Install dependencies
pip install -r requirements-dev.txt
# Run tests
pytest tests/ -v
# Run with coverage
pytest tests/ --cov=reversecore_mcp --cov-fail-under=72
# Code quality
ruff check reversecore_mcp/
black reversecore_mcp/- β 852 tests passed
- π 76% coverage
- β±οΈ ~14 seconds execution time
All tools return structured `ToolResult`:
{
"status": "success",
"data": "...",
"metadata": { "bytes_read": 1024 }
}{
"status": "error",
"error_code": "VALIDATION_ERROR",
"message": "File not found",
"hint": "Check file path"
}| Code | Description |
|---|---|
| `VALIDATION_ERROR` | Invalid input parameters |
| `TIMEOUT` | Operation exceeded time limit |
| `PARSE_ERROR` | Failed to parse tool output |
| `TOOL_NOT_FOUND` | Required CLI tool missing |
| Component | Minimum | Recommended |
|---|---|---|
| CPU | 4 cores | 8+ cores |
| RAM | 16 GB | 32 GB |
| Storage | 512 GB SSD | 1 TB NVMe |
| OS | Linux/macOS | Docker environment |
- Fork the repository
- Create a feature branch
- Make changes with tests
- Run `pytest` and `ruff check`
- Submit a pull request
MIT License - see LICENSE for details.