REA
Local reverse-engineering toolkit for binaries, apps, websites and Android devices over MCP
Read-only static analysis of Android APK, DEX, JAR and AAR files for MCP clients
By Aimar Sechan Adhitya (individual) Python Local · stdio SecurityDeveloper tools
16 popularity score ★ 20
Opens the app, which asks before it adds the server.
git clone https://github.com/aimardcr/asc-mcp
cd asc-mcp
python -m pip install .claude mcp add asc -- asc-mcp{
"mcpServers": {
"asc": {
"command": "asc-mcp",
"args": []
}
}
}{
"mcpServers": {
"asc": {
"command": "asc-mcp",
"args": []
}
}
}{
"servers": {
"asc": {
"type": "stdio",
"command": "asc-mcp",
"args": []
}
}
}[mcp_servers.asc]
command = "asc-mcp"
args = []gemini mcp add --scope user asc asc-mcpASC_MCP_ALLOWED_ROOTS |
Optional: Directories artifacts may be opened from, separated by : (; on Windows); defaults to the working directory. |
|---|---|
ASC_MCP_WORKERS |
Optional: Number of analysis worker processes; defaults to up to 4 CPUs. |
ASC_MCP_TRANSPORT |
Optional: stdio (default) or streamable-http. |
ASC_MCP_HOST |
Optional: HTTP bind address, 127.0.0.1 by default. |
ASC_MCP_PORT |
Optional: HTTP port, 8000 by default. |
ASC_MCP_HTTP_PATH |
Optional: Streamable HTTP endpoint path, /mcp by default. |
asc-mcp is a local Python server that opens Android build artifacts and answers structured questions about them without changing anything. After an artifact is loaded with load_artifact, the client works against the returned analysis_id: reading the manifest and declared components (including effective provider permissions), listing classes and their outlines, decompiling a single class to Java on demand, disassembling methods to Dalvik bytecode, and searching for where methods, fields, types or string constants are used. Each reference hit comes with the opcode, byte offset inside the calling method and whether it is a read, write, invoke or load.
It also inventories archive entries and native libraries, decodes binary XML resources, reports APK signing schemes and certificate fingerprints, scans for embedded secrets, and compares the class inventories of two loaded versions. Besides tools it offers two resource templates (the decoded manifest and a decompiled class) and three prompts: artifact_triage, trace_behavior and compare_artifacts.
It is a continuation of Droid ASC by MG1937, whose direct DEX querying and on-demand decompilation engine it builds on, with Androguard underneath. The code at version 0.2.0 registers 25 tools. List and search tools return 200 results per page by default and accept a limit of up to 1000; apk_get_call_graph walks 1 level by default and at most 3; apk_get_resource_content returns 128 KiB by default and at most 1 MiB with max_bytes (server.py).
| Runtime | Python 3.10+ |
|---|
Python 3.10 or newer and a clone of the GitHub repository installed with pip (it pulls in androguard, mcp 2.x and mutf8). The Android artifacts to analyse must sit under a directory listed in ASC_MCP_ALLOWED_ROOTS, or under the server's working directory when that setting is not given. No account or API key is needed.
Not published on PyPI: the package named asc-mcp there is an unrelated App Store Connect server, so install from the repository rather than with pip install asc-mcp. JVM bytecode is not decompiled; plain JAR and AAR files give class and archive inventories only, and .aab, .apks, .xapk and .zip get archive inventory plus analysis of DEX files placed directly inside. Operations a format cannot support (such as signing data for a DEX file) return an error. apk_diff compares class inventories and hashes, not code behaviour. The quoted speed figures come from the original Droid ASC benchmark, not this server.
Suits security researchers and Android developers who want an assistant to triage or trace behaviour in an APK on their own machine, with no network service or account involved and no way for the tools to modify, rebuild or sign the artifact. It is a static reader only: anyone needing dynamic analysis, device interaction or JVM class decompilation of ordinary JARs needs other tooling. The streamable-http mode carries no sign-in of its own, so stdio is the better fit unless it is placed behind an authenticated boundary.
load_artifactclose_artifactserver_statusapk_get_summaryapk_get_manifestapk_get_signing_infoapk_list_classesapk_get_class_outlineapk_get_class_sourceapk_get_class_hierarchyapk_disassemble_methodapk_get_call_graphapk_get_string_constantsapk_search_method_bodiesapk_find_method_referencesapk_find_field_referencesapk_find_type_instructionsapk_find_string_referencesapk_search_membersapk_search_stringsapk_scan_secretsapk_list_entriesapk_get_resource_contentapk_list_native_librariesapk_diff