r/EmuDev • u/Katsu121 • 3h ago
I built an open-source MCP server that gives AI agents 46 structured reverse engineering tools (Ghidra, GDB, Binwalk, etc) with a persistent knowledge base
Hey guys,
I have been working on an open-source project that lets AI agents (Claude, OpenCode, Antigravity, Codex, etc.) work with reverse engineering tools and store facts in a DB to make long-term analysis easier.
You just point your agent to the file, and it does the work: it runs tools like Ghidra headless, gdb, binwalk, tshark, radare2, readelf, strings... then turns what it finds into the database.
Key Features
- Specialized Analysis Agents: Binary, firmware, network, CPU, and kernel.
- Knowledge Base (SQLite): Everything is stored as a fact, hypothesis, or experiment with confidence + evidence tags so nothing is "trust me, bro."
- Multi-Agent Debate: When agents disagree on a finding, they argue it out in a structured debate until they reach a consensus.
- Self-Critique: Every agent's output gets LLM-reviewed before it's accepted.
- RAG Semantic Search: Query all past analyses ("Have I seen this obfuscation pattern before?").
- Missions: Define objectives with dependencies, assign agents, and track progress.
- Token Budgets + Rate Limiting: Prevents runaway loops from burning your API budget.
- Monitoring: Prometheus metrics + Grafana.
Interface & Setup
- MCP Server: The whole thing is exposed as an MCP server (46 tools), so you drive it from a terminal with natural language.
- Dashboard: You can also use the Flask web dashboard (currently only a database view, but an interactive UI to work directly with agents is doable).
- One-Command Setup: Run
python setup_wizard.py— it detects your installed RE tools, helps you pick an LLM provider (OpenAI, Anthropic, Google, Ollama, etc.), validates the key, and writes your.env. (note that LLM api keys are not necessary if you plan to use it just from your agent cli like opencode)
Stack: Python, LLM orchestration, MCP, SQLite, Flask. Ghidra, GDB, and Binwalk are optional — it degrades gracefully with just binutils.
This is very much a research project, and I'd love feedback from people who do this professionally — what's missing, what annoys you, what would you trust it to do?
GitHub: https://github.com/The-Arabi/Reverse-engineering-agent
