Every App Is Open Source
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Every App Is Open Sourcefind the string 'license' and show the decompiled code that uses it"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Every App Is Open Source
Same answers as REA. 36% cheaper. 27% faster.
I built this to give an AI agent the tools to take a compiled program apart and work out what it does, without the source code. Ghidra does the actual decompiling. My part is everything around it: a small set of tools, short replies by default, honest labels on every answer, and evidence you can trace back to the binary.
Then I tested it against REA, the 300,000-star tool everyone's using, and against the community GhidraMCP. On a secretly modified Doom, all three got every answer right. Mine was the cheapest and the fastest.
The name is a provocation, not a license. This shows you how an app works. It doesn't give you the right to copy it.
Results
Same model for everyone (gpt-6.1-sol, high effort), fresh sessions, six questions, three runs per tool:
Tool | Correct | Median time per run | Tokens, 3 runs | API-equivalent cost, 3 runs |
Every App Is Open Source | 18/18 | 121.8s | 1,728,000 | $0.70 |
Community GhidraMCP | 18/18 | 146.2s | 2,337,886 | $0.84 |
REA 6.7.0 + its bundled skill | 18/18 | 166.7s | 3,603,877 | $1.09 |
How I kept it honest:
Doom's answers are all over the internet, so I changed them. I built Chocolate Doom with eight gameplay rules secretly altered and stripped its function names. An agent answering from memory gets the original values, and those are now wrong.
I froze the questions and the answer key before the first run. The answer key comes from running the modified game code, not from me reading it.
Everyone got the same head start. All three began with the program already analyzed, outside the timer.
REA ran the way people actually install it, with its bundled skill and its full tool catalog.
What this doesn't prove: all three scored 100%, so mine isn't smarter, just cheaper and faster. It's one game, three runs per tool, compiled programs only.
My first version actually lost to GhidraMCP on cost. I read the logs, cut the repeated metadata and the detail nobody had asked for yet, then retested on new questions and a new build. Everything is kept, including the round I lost.
Full results · Every run · Answer-by-answer check · Frozen protocol · The round I lost
Related MCP server: Ghidra Headless MCP
Install
You need an Apple Silicon Mac, uv and Apple's Command Line Tools (xcode-select --install).
uvx --python 3.13 --from every-app-is-open-source eaos setupThat downloads checksum-pinned Ghidra 12.1.4 and Java 21, and builds Ghidra's Apple Silicon decompiler, because the official download doesn't include one. Everything lands in ~/Library/Application Support/Every App Is Open Source/. Nothing global, no shell profile edits, no touching your agent's settings. It takes under a minute, and running it again reuses what's there.
Use it
Point your agent at one program:
uvx --python 3.13 --from every-app-is-open-source eaos mcp /absolute/path/to/programFor an MCP client config, the command is uvx and the arguments are:
["--python", "3.13", "--from", "every-app-is-open-source", "eaos", "mcp", "/absolute/path/to/program"]Or try a single tool from the terminal:
uvx --python 3.13 --from every-app-is-open-source eaos call /absolute/path/to/program open_programThe server only sees the one program you give it. It can't read other files on your machine.
The seven tools
I counted every tool call the agents made across my earlier 24 test runs and built only what they actually used.
Tool | What it does |
| What the program is: architecture, memory layout, analysis status |
| Find text inside the program and where it's used, or find functions |
| Decompiled code, raw instructions, callers and callees |
| Read the actual bytes at an address |
| Safe arithmetic and byte decoding, so the agent doesn't do math in its head |
| Recover text hidden inside Swift code on Apple platforms |
| Pull up the full saved evidence behind any reply, hash-checked |
Never "exact" for a guess
That was REA's worst habit: a name-based guess labelled "observed, exact." Here, every answer says what it is:
fact: read straight from the binary
computed: worked out deterministically, like decompiled code or a decoded string
guess: an interpretation with nothing solid behind it
Decompiled code is computed, not the original source. When a tool fails, it says it failed.
Analyze once, reuse forever
Ghidra's analysis is slow, so each program gets its own eaos-analysis/<sha256>/ folder right next to it, holding the analyzed project and every piece of evidence. Opening the same program again reuses all of it.
One Ghidra quirk: it won't create projects inside a folder whose name starts with a dot, like .cache. Keep the program you're analyzing out of those.
From a checkout
If you'd rather run it from the repo:
./install.sh
./eaos mcp /absolute/path/to/programSame requirements. Java, Ghidra and Python all install inside the checkout.
What's next
I only claim "better" where I've measured it:
Area | Status |
Compiled programs | ✅ Beat REA and GhidraMCP on cost and speed, on modified Doom |
JavaScript / Electron apps | Next: VS Code, with its own hidden answer key |
Android apps | Planned |
.NET apps | Planned |
Websites, watching apps run | Planned |
Each one gets the same treatment: a secretly modified target, a frozen answer key and a fair fight against REA, before I claim anything.
Rerun my test
uv run python -m unittest discover -s tests -v
python3 benchmark/build_doom.pybuild_doom.py makes a fresh build with new random changes, so you get your own answer key. The binary and answer key from my run stay private, since publishing them would spoil the test. In the saved reports, file paths from my machine are shortened to <repo>.
Credits
Ghidra and PyGhidra do the heavy lifting; they're the work of their own contributors. The comparison baseline is LaurieWired's GhidraMCP. The test target is Chocolate Doom, based on id Software's Doom and released under GPLv2.
License
Apache 2.0. If you build on this, keep the NOTICE file. Before you point it at anything, read the disclaimer.
This server cannot be deployed
Maintenance
Related MCP Connectors
Codebase intelligence for agents: 152 structured artifacts across 21 programs, one call.
Agent memory that refuses to guess: evidence-gated recall, exact-source reads, verifiable deletion.
Code intelligence platform for AI agents. 20 tools for architecture, security & impact analysis.
Deterministic reasoning stack for AI agents: simulate, decide & compute, plus cross-domain tools.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables LLMs to autonomously reverse engineer binaries using Ghidra's capabilities including decompilation, function analysis, automatic renaming, and BSim integration for function similarity matching.1AGPL 3.0
- AlicenseNot gradedqualityCmaintenanceA headless Ghidra server that enables AI agents to perform deep reverse-engineering tasks such as disassembly, decompilation, and patching via the Model Context Protocol. It supports extensive automation of analysis workflows in sandboxed environments through a catalog of over 200 specialized tools.191GPL 2.0
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to drive Ghidra for static malware analysis, including decompilation, renaming, cross-referencing, and annotated screenshot evidence capture.Apache 2.0
- AlicenseNot gradedqualityNot gradedmaintenanceConnects AI agents to reverse-engineering tools that inspect native binaries, JavaScript/Electron apps, .NET assemblies, websites, and runtime behavior without source code. Returns pseudocode, references, and evidence so agents can explain how a feature works or reimplement it.307,234 npmMIT