
Reversecore MCP
io.github.sjkim1127由 GitHub 账号 sjkim1127 发布v3.0.5更新于 Nov 3, 2026
Security-first MCP server for reverse engineering, malware analysis, forensics, and SAST.
概览
面向安全场景的逆向工程服务器,让助手在本地反汇编、反编译、分析恶意软件、做取证和源码审计。
- 可以做什么
- 反汇编与反编译二进制:Radare2/r2ghidra 会话、函数、导入导出、节区、控制流图、ROP gadget、熵值
- 静态分析:strings、binwalk、LIEF 解析、加壳检测、CAPA 能力识别、YARA 规则生成、二进制差异比对
- 恶意软件与漏洞研究:IOC 提取、YARA 扫描、隐藏后门检测、模糊测试框架、崩溃分类、PoC 与 ROP 链生成
- 数字取证:Volatility3 内存镜像、Sleuth Kit 磁盘镜像、Scapy 分析 PCAP 与 C2 通信、痕迹时间线
- 源码审计与报告:Python/C/C++ 危险模式扫描、IOC 与 ATT&CK 会话记录、分析报告、VEX 与 SIGMA 报告
- 用本地 SQLite 记忆库跨会话保存结论,并按二进制提供 strings、IOC、反编译代码等资源
- 适用场景
- 适合让助手协助分析可疑二进制、脱壳与恶意软件初判、调查内存/磁盘/PCAP 证据,或进行漏洞研究与补丁差异分析,并输出结构化报告。上下文预算紧张时可选用更小的工具配置档。
- 运行要求
- 以 stdio 方式在本机运行,可用 PyPI 包或 OCI 镜像。pip 方式需要 Python 和系统安装的 Radare2;Docker 镜像已内置各分析引擎。可选配置包括 REVERSECORE_WORKSPACE、REVERSECORE_READ_DIRS、沙箱相关变量、REDIS_URL 与 MEMORY_DB_PATH;HTTP 模式可设置 MCP_API_KEY。
安装
在 SourceWeft 中
- 打开 控制台中的 Reversecore MCP,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
Reversecore MCP
AI-Powered Reverse Engineering & Security Analysis via Model Context Protocol
An MCP server that gives AI assistants like Claude and Cursor the ability to perform reverse engineering, malware analysis, vulnerability research, digital forensics, and source code auditing through natural language.
[CI/CD] [Python] [License: MIT] [Tests] [Coverage] [FastMCP] [PyPI] [Docker] [OpenSSF Scorecard] [HVTrust]
Table of Contents
- What is Reversecore MCP?
- Architecture
- Tool Catalog (179 Tools)
- Guided Analysis Prompts (22 Modes)
- MCP Resources (11 URIs)
- Quick Start
- Connect to Your AI Client
- Configuration
- Security Model
- Development
- CI/CD Pipeline
- Docker Build Architecture
- System Requirements
- Project Structure
- Error Handling
- Adding New Tools
- Contributing
- Documentation
- License
What is Reversecore MCP?
Reversecore MCP is a Model Context Protocol server that wraps 179 analysis tools into a single interface that AI assistants can call through natural language.
Instead of learning the command-line syntax for a dozen different tools, you describe what you want:
The AI assistant breaks this into tool calls:
Each tool returns a structured ToolResult (either ToolSuccess or ToolError) with typed data that the AI can reason about, chain into follow-up queries, or render for the user.
What it covers
Architecture
The server supports Python 3.10–3.12. The optional angr symbolic execution
engine is installed on Python 3.12 and newer, where a secure compatible release
is available; Python 3.10 and 3.11 installs omit angr.
Core Infrastructure (37 modules)
The reversecore_mcp/core/ directory contains the shared infrastructure that all tools build on:
Tool Catalog (179 Tools)
📖 Authoritative Tool Catalog & Parameter Reference (151 Tools) 📊 Tool Profile Footprint & Context Benchmark Matrix
Every tool returns a structured ToolResult — either a ToolSuccess with typed data or a ToolError with an RCMCP-E* error code. Tools are organized into 11 domain plugins across 5 modular execution profiles (full, static, malware, forensics, vuln-research):
🔍 Static Analysis Plugin (24 tools)
🔐 Source Code Audit Plugin (1 tool)
🛠️ Common Utilities Plugin (20 tools)
File Operations (5 tools)
Patch Explanation (1 tool)
Assembler (1 tool)
AI Memory Management (11 tools)
These tools let the AI persist and recall findings across analysis sessions using an async SQLite database:
Server Monitoring (2 tools)
⚙️ Radare2 & r2ghidra Plugin (30 tools)
All Radare2 tools use a thread-safe connection pool (r2_pool.py) that automatically manages r2pipe sessions.
🦠 Malware Analysis Plugin (9 tools)
🕵️ Digital Forensics Plugin (22 tools)
Memory Forensics (6 tools)
Disk Forensics (6 tools)
Network Forensics (5 tools)
Artifact Analysis (5 tools)
📝 Report Generation Plugin (14 tools)
Guided Analysis Prompts (22 Modes)
Prompts are pre-built analysis workflows that prime the AI with a structured persona, step-by-step tool usage sequences, and evidence classification rules. You activate them by referencing the prompt name in your AI client.
Malware Analysis (9 prompts)
Security Research (6 prompts)
CVE Research & Exploit Development (5 prompts)
Other (2 prompts)
How prompts work: Each prompt primes the AI with a structured analysis persona. It includes Chain-of-Thought reasoning checkpoints (where the AI must stop and evaluate before proceeding) and evidence classification rules that prevent the AI from stating speculation as fact. Every finding must be labeled as
OBSERVED(directly verified),INFERRED(logically derived from static analysis), orPOSSIBLE(requires further verification).
MCP Resources (11 URIs)
Resources are read-only data endpoints that AI clients can access through URI templates. They complement tools by providing structured data without requiring explicit tool calls.
Static Resources
Dynamic Resources (Per-Binary Virtual Filesystem)
These URIs resolve per-binary and invoke the corresponding analysis tools on demand:
Quick Start
Option 1 — PyPI (Simplest)
Prerequisites: Radare2 must be installed on your system (
r2 --version). YARA is installed automatically viayara-python.
Option 2 — Docker (Recommended for Full Functionality)
All analysis engines (Radare2, r2ghidra, YARA, Binwalk, Sleuth Kit, GDB, etc.) come pre-installed:
Option 3 — Build from Source (Docker Compose)
Or manually:
Option 4 — Python (Local Development)
Prerequisites for local mode: Radare2 must be installed on your system (
r2 --version). Individual tool backends (YARA, LIEF, Capstone, etc.) are installed via pip. For full forensics support, you'll also need Volatility3, Scapy, and Sleuth Kit.
Connect to Your AI Client
Add the server configuration to your IDE client settings (e.g., ~/.cursor/mcp.json or claude_desktop_config.json).
⚡ Option 1: Docker Exec Mode (Recommended)
If you have the container running via Docker Compose, this mode channels stdio directly into the running container. Zero startup latency, persistent memory, and full tool availability.
Replace
reversecore-mcp-arm64withreversecore-mcpif you are on Intel/AMD.
🌐 Option 2: SSE HTTP Mode
For network-based streaming (Server-Sent Events):
📦 Option 3: Stdio Mode (Docker-on-Demand)
Runs a fresh, isolated container for every session:
🍎 macOS
🐧 Linux
🪟 Windows
⚠️ Important — File Paths Inside Docker
Your local folder is mounted to
/app/workspaceinside the container. Always reference files by filename only, not by your local full path.
Configuration
All settings can be provided via environment variables or a .env file (see .env.example). Settings are managed via Pydantic BaseSettings with the REVERSECORE_ prefix.
Core Settings
HTTP Mode Settings
Radare2 Settings
Sandbox Settings
Storage & Queue
Logging
Plugins & SAST
Security Model
Security is implemented as defense-in-depth, with protections at multiple layers:
Input & Path Safety
Network & Authentication
Container & Runtime
CI/CD Security Gates
Structured Error Handling
All 17 exception classes carry RCMCP-E* error codes for programmatic handling. See Error Handling for the full hierarchy.
Development
Setup
Testing
Test status:
- ✅ 1,957 unit tests passing across Python 3.10 / 3.11 / 3.12
- 📊 87% code coverage (80% minimum enforced in CI)
- 🔒 Zero Bandit findings
- ⚡ Fully async test suite via
pytest-asyncio
Test markers:
Code Quality
Pre-commit Hooks
The following hooks run automatically on every commit:
- Ruff — lint with auto-fix + format check
- trailing-whitespace — remove trailing whitespace
- end-of-file-fixer — ensure files end with newline
- check-yaml / check-json — validate YAML/JSON syntax
- check-added-large-files — block files > 1 MB
- check-merge-conflict — detect unresolved merge markers
- detect-private-key — prevent accidental key commits
- Bandit — Python security scanning
CI/CD Pipeline
Every push to main triggers 11 pipeline jobs. All must pass before deployment.
Zero-bypass policy: CI/CD failures are never resolved by modifying pipeline configuration. Root causes are always fixed directly in source code or dependencies.
Docker Build Architecture
The Docker build uses a two-layer approach to keep build times manageable:
Layer 1: Base Image (Dockerfile.base)
A multi-stage build that compiles all slow-to-build, rarely-changing dependencies from source:
This image is rebuilt only when tool versions change. Build time: ~12 minutes.
Layer 2: Application Image (Dockerfile)
Inherits from the base image and copies application code:
Build time: ~60 seconds.
Docker Compose
Three services with architecture-specific profiles:
Resource limits: 2.0 CPU cores, 4 GB memory per container.
System Requirements
Project Structure
Other directories:
Error Handling
All custom exceptions inherit from ReversecoreError and carry structured error codes:
AI clients can use the error_code field to programmatically handle failures and decide whether to retry, try an alternative tool, or report the error to the user.
Adding New Tools
Follow this pattern to add a new MCP tool:
Then register it in the appropriate plugin's __init__.py and add tests in tests/unit/.
Contributing
- Fork the repository
- Create a feature branch:
git checkout -b feat/my-feature - Write tests alongside your code — coverage must not drop below 80%
- Ensure all gates pass:
pytest,ruff check,mypy,bandit - Open a pull request with a clear description
Please read the Contributing Guide for code standards, docstring conventions (Google-style), and the pull request checklist.
Documentation
Usage Examples
Example 1: Basic Malware Triage
Example 2: Vulnerability Research with Taint Analysis
Example 3: Digital Forensics Investigation
Example 4: Patch Diffing for 1-day Research
Multi-Architecture Support
The arch_registry.py module maps architecture names to Radare2 configuration parameters, enabling tools to work across different CPU architectures without manual configuration:
Alias resolution is handled automatically:
amd64→x86_64aarch64→arm64armwithbits=64→arm64armwithbits=16orbits=32→arm32
Tools like Radare2_esil_emulate, assemble_instructions, and r2_simulate_patch use this registry to configure the analysis environment correctly for any target binary.
Result Cache System
Two caching layers minimize redundant computation:
Tool Result Cache (result_cache.py)
The @cache_tool_result decorator caches any tool's output based on a SHA256 hash of the binary file and the tool's keyword arguments:
Storage backend: SQLite database via r2_db.py, accessible through get_cached_result() and set_cached_result() tools.
Metrics: Cache hits and misses are tracked via metrics_collector.record_cache_hit() and record_cache_miss(), visible through the get_tool_metrics tool.
Analysis Cache (analysis_cache.py)
A multi-level cache specifically for decompilation results (which are expensive to compute):
Import/Export: The export_analysis_cache and import_analysis_cache tools allow saving cache state to/from rcpack files for sharing between environments.
AI Memory System
The AI memory system (memory_tools.py + core/memory.py) provides persistent, queryable storage for analysis findings across sessions. This allows the AI to:
- Remember what it previously found about a binary
- Cross-reference findings between different samples
- Tag and search sessions by topic, malware family, or technique
How It Works
Storage: Async SQLite database at the path configured by MEMORY_DB_PATH (default: ~/.reversecore_mcp/memory.db).
Portability: Use export_memory_store and import_memory_store to transfer the entire memory database between environments.
Web Dashboard
When running in HTTP mode (MCP_TRANSPORT=http), a web dashboard is available at http://localhost:8000/dashboard. It provides:
- Binary upload with drag-and-drop
- Real-time analysis status
- Interactive function list and disassembly view
- IOC extraction results
- Server health monitoring
Tech stack: FastAPI + Jinja2 templates + HTMX (loaded locally from dashboard/static/, no CDN dependency for CSP compliance).
Security features:
- CSRF tokens on all state-changing forms
- Jinja2 auto-escaping enabled
- All user input sanitized via
html.escape()before display - Path traversal protection via
validate_file_path()
Deployment
Production Checklist
Before deploying to production:
Health Checks
The server provides HTTP health check endpoints for orchestration:
These endpoints are exempted from API key authentication so load balancers and container orchestrators can probe them.
Container Healthcheck
The Docker image includes a built-in HEALTHCHECK instruction that verifies TCP connectivity to port 8000 every 30 seconds. Docker and Kubernetes will automatically restart unhealthy containers.
Troubleshooting
Common Issues
Tool returns RCMCP-E003: Tool not found
The required CLI tool is not installed in the environment.
Solution: If using Docker, verify the tool is in the base image:
If using local Python installation, install the missing tool:
Timeout error (RCMCP-E002 / RCMCP-E200)
Analysis exceeded the configured timeout.
Solution: Increase the timeout:
For large binaries (>100 MB), consider using quick-scan variants:
run_capa_quickinstead ofrun_capadetect_packerinstead ofdetect_packer_deep
Path traversal error (RCMCP-E302)
You referenced a file outside the workspace directory.
Solution: Copy the file into the workspace first:
Or mount additional directories as read-only:
Docker container won't start on Apple Silicon
Make sure you're using the ARM64 profile:
Or use the auto-detection script:
Redis connection refused
The task queue requires a running Redis instance.
Solution: Start Redis alongside the main service:
Or disable Redis-dependent features by not setting REDIS_URL.
r2ghidra decompilation produces empty output
This usually means the function wasn't analyzed first.
Solution: Run analysis before decompilation:
FAQ
Does this replace Ghidra or IDA Pro?
No. This project is a complement, not a replacement. It uses r2ghidra (the Ghidra decompiler engine embedded in Radare2) for decompilation. It does not provide a GUI, and it does not have the interactive analysis workflow of a full disassembler. Its purpose is to let AI assistants perform analysis tasks programmatically.
Is a separate Ghidra or JDK installation needed?
No. The r2ghidra plugin embeds the Ghidra decompiler engine directly inside Radare2. No JDK, no Ghidra installation, no Ghidra project files. Just r2 with the r2ghidra plugin compiled in.
What MCP clients are supported?
Any client that implements the Model Context Protocol specification. Tested with: Claude Desktop, Cursor, Windsurf, and Google Antigravity. The server supports both stdio and HTTP/SSE transports.
Can I analyze Windows PE files on Linux/macOS?
Yes. Static analysis (disassembly, decompilation, string extraction, IOC extraction, YARA scanning) works on any file format regardless of host OS. Dynamic analysis (emulation, fuzzing) may have limitations depending on the target architecture.
How safe is it to analyze malware with this tool?
The Docker container provides isolation: non-root user, no network by default in CI, resource limits. For live malware analysis, we recommend running in a dedicated VM or using the sandbox feature (REVERSECORE_SANDBOX_ENABLED=true). Static analysis tools (r2, YARA, strings) never execute the target binary.
What's the maximum file size?
Default limits:
- Upload: 100 MB (
MAX_UPLOAD_SIZE) - LIEF parsing: 1 GB (
REVERSECORE_LIEF_MAX_FILE_SIZE) - Tool output: 10 MB (
REVERSECORE_MAX_OUTPUT_SIZE)
All limits are configurable via environment variables.
Acknowledgments
This project is built on the work of many open-source projects:
License
MIT — see LICENSE for details.
来源:README.md,提交 ce5b8ce
工具
0版本历史
3- v3.0.5最新Sep 28, 2026
- v3.0.4Sep 18, 2026
- v3.0.3Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分