REA
Local reverse-engineering toolkit for binaries, apps, websites and Android devices over MCP
Static health check for React Native and Expo projects: upgrades, store rules, crashes, security
By AlicanAkyol (individual) JavaScript Local · stdio Developer toolsSecurity
33 popularity score ★ 6 ↓ 786/wk
Opens the app, which asks before it adds the server.
claude mcp add nativekeel -- npx -y nativekeel@latest mcp{
"mcpServers": {
"nativekeel": {
"command": "npx",
"args": [
"-y",
"nativekeel@latest",
"mcp"
]
}
}
}{
"mcpServers": {
"nativekeel": {
"command": "npx",
"args": [
"-y",
"nativekeel@latest",
"mcp"
]
}
}
}{
"servers": {
"nativekeel": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"nativekeel@latest",
"mcp"
]
}
}
}[mcp_servers.nativekeel]
command = "npx"
args = ["-y", "nativekeel@latest", "mcp"]gemini mcp add --scope user nativekeel npx -- -y nativekeel@latest mcpNATIVEKEEL_MCP_ROOTS |
Optional: Extra project folders the server may scan, separated by the system path delimiter; set it when the client starts servers outside the project folder. |
|---|
NativeKeel is a command-line scanner for React Native and Expo apps that also runs as a local MCP server over stdio (`npx -y nativekeel@latest mcp`). An assistant can point it at a project folder and get back findings with file and line references and a suggested fix: upgrade blockers, settings that Google Play or the App Store would reject, packages off the versions an Expo SDK expects, likely runtime crashes, leaked secrets, insecure network settings, accessibility gaps and performance patterns.
Beyond the scan it builds an ordered upgrade plan and gives a go or no-go verdict on moving to the newest React Native. It also checks whether a given npm library suits a given React Native version, explains a build, launch or store-review error and where the project is affected, and compares the project with an earlier git revision after an upgrade to show what was fixed and what is new. If a release build has already written a source map, it can break the JavaScript bundle down by package and compare it with an older map.
The README lists six MCP tools. The server code (src/mcp.js) registers nine, because `security_audit`, `improve_app` and `upgrade_readiness` are there too but left out of that list. The code caps each findings list it returns at 80 and reports how many were cut. The package has no dependencies beyond Node.js built-ins, and npm releases carry provenance from GitHub Actions. The maker also sells fixed-price upgrade work, while the tool itself is free and MIT-licensed.
| Runtime | Node.js 20+ |
|---|---|
| Runs on | macOS, Windows, Linux |
| Also |
|
npx comes with Node.js. The React Native or Expo project must sit inside the folder the client starts the server in, or in a folder named in NATIVEKEEL_MCP_ROOTS. `verify_upgrade` needs the project to be in a git repository. `measure_bundle` needs a source map from a release build you have already made. No account or API key.
Static only: it never runs the app or project code, does not measure frame rate or startup time, and its security review is not a penetration test or compliance verdict. Each findings list is cut at 80 entries (src/mcp.js). Only folders under the server's start directory or NATIVEKEEL_MCP_ROOTS can be scanned; when started from a plugin folder (Codex) the boundary is the home folder unless NATIVEKEEL_MCP_ROOTS is set. Accessibility checks cover React Native's own touchables and inputs, not custom components or focus order. Unused-package results can miss dynamic imports. Its filter for instruction-like text in results is, by its own docs, not a complete prompt-injection defense.
Suits developers maintaining React Native or Expo apps who want an assistant to check a project before upgrading React Native or Expo, adding a native library or preparing a store release, all locally and without an account. It reads only and changes nothing, so the assistant still makes the fixes. Projects that are not React Native or Expo get nothing from it, and anyone needing runtime profiling, device testing or a formal security assessment needs other tools.
9 only read. A ? marks an optional parameter.
scan_projectpath: stringmin_severity?: enumoffline?: booleansecurity_auditpath: stringoffline?: booleanmin_severity?: enumimprove_apppath: stringoffline?: booleanmeasure_bundlepath: stringmap?: stringbase?: stringupgrade_planpath: stringoffline?: booleanupgrade_readinesspath: stringoffline?: booleancheck_libraryname: stringreact_native?: stringexplain_errorerror: stringpath?: stringoffline?: booleanverify_upgradepath: stringbase?: stringoffline?: boolean