Reversecore_mcp
About
A security-first MCP server that empowers AI agents to perform automated reverse engineering, malware analysis, forensics, vulnerability research, and SAST — powered by Radare2, YARA, LIEF, Capstone, and more.
Details
- License
- MIT
Explore
- 50+ tools for static, dynamic, malware, and forensic analysis
- Natural language interface – describe tasks, server invokes tools
- Guided analysis prompts with expert personas and Chain-of-Thought
- MITRE ATT&CK technique mapping with evidence classification
- Persistent AI memory store via async SQLite
- Built-in security model with input sanitization and path validation
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
Reversecore_mcpCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
All settings can be provided via environment variables or a .env file (see .env.example):
| Variable | Default | Description |
|---|---|---|
| MCP_TRANSPORT | http | Transport mode: stdio or http |
| REVERSECORE_WORKSPACE | /app/workspace | Analysis workspace directory |
| REVERSECORE_READ_DIRS | "" | Additional colon-separated read-only directories |
| LOG_LEVEL | INFO | Logging verbosity: DEBUG, INFO, WARNING, ERROR |
| MCP_API_KEY | (unset) | API key for HTTP mode authentication (optional) |
| RATE_LIMIT | 60 | Max requests per minute (HTTP mode only) |
| TOOL_TIMEOUT | 300 | Default tool execution timeout in seconds |
| R2_POOL_SIZE | 4 | Radare2 connection pool size |
| REDIS_URL | redis://localhost:6379 | Redis URL for background task queue |
| SMTP_HOST | (unset) | SMTP host for report email delivery |
| SMTP_PORT | 587 | SMTP port |
| SMTP_USER | (unset) | SMTP username |
| SMTP_PASSWORD | (unset) | SMTP password |
---
> Reversecore MCP exposes 50+ tools across 7 categories. Every tool returns a structured ToolResult with status, content, and optional error fields.
Follow this pattern to add a new MCP tool:
from reversecore_mcp.core.decorators import log_execution
from reversecore_mcp.core.result import ToolResult, success, failure
from reversecore_mcp.core.security import validate_file_path
@log_execution()
async def my_analysis_tool(file_path: str, option: str | None = None) -> ToolResult:
"""Analyze a binary for X.
Args:
file_path: Path to the binary file (relative to workspace).
option: Optional analysis option.
Returns:
ToolResult with status='success' and structured content.
"""
try:
safe_path = validate_file_path(file_path)
result = await perform_analysis(safe_path)
return success({"result": result})
except Exception as e:
return failure(str(e))
Then register it in server.py and add tests in tests/unit/.
---
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"reversecore_mcp": {
"reversecore": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-v",
"C:/Reversecore_Workspace:/app/workspace",
"-e",
"REVERSECORE_WORKSPACE=/app/workspace",
"-e",
"MCP_TRANSPORT=stdio",
"reversecore-mcp"
]
}
}
}
}
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"
]
}
}
@log_execution()
async def my_analysis_tool(file_path: str, option: str | None = None) -> ToolResult:
"""Analyze a binary for X.
Args:
file_path: Path to the binary file (relative to workspace).
option: Optional analysis option.
Returns:
ToolResult with status='success' and structured content.
"""
try:
safe_path = validate_file_path(file_path)
result = await perform_analysis(safe_path)
return success({"result": result})
except Exception as e:
return failure(str(e))
``
Then register it in server.py and add tests in tests/unit/.
---
Contributing
1. Fork the repository
2. Create a feature branch: git checkout -b feat/my-featurepytest
3. Write tests alongside your code — coverage must not drop below 80%
4. Ensure all gates pass: , ruff check, mypy, bandit`
5. Open a pull request with a clear description
Please read the Contributing Guide for code standards, docstring conventions, and the pull request checklist.
---
Documentation
| Document | Description |
|---|---|
| Installation Guide | Detailed setup for all environments |
| Architecture Guide | System design & component deep-dive |
| Contributing Guide | Code standards, docstrings, PR workflow |
| Testing Guide | Test patterns, fixtures, and coverage |
| API Reference | Tool and module reference |
| User Guide | End-user analysis workflows |
---
License
MIT — see LICENSE for details.
---
<div align="center">
GitHub · FastMCP Docs · MCP Spec · Radare2 · YARA
</div>
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.



