AI-powered Android security testing via MCP — 27 tools for APK analysis, component security, and dynamic instrumentation
Server has 27 tools with basic schemas and descriptions, but significant gaps limit production readiness. All tools have descriptions (10-200 chars, mostly 50-150), and input schemas are present with type definitions. However, parameter descriptions are sparse or missing context; output schemas are undocumented; error handling is absent; and no tool annotations (readOnlyHint/destructiveHint) are declared despite clear risk levels. Naming follows verb_noun convention (apk_decode, frida_spawn) but lacks clarity on mutual exclusivity (frida_spawn vs frida_attach both take 'package' and 'target', undocumented which is required). No pagination, no result limits documented, no recovery guidance in errors. Composition is reasonable (27 focused tools), but chaining support is weak, tools don't document what IDs they return or accept.
列出所有已连接的 ADB 设备及其状态。
安装 APK 到 Android 设备。
抓取 Android 设备日志。
截取 Android 设备屏幕截图。
执行 ADB shell 命令。
卸载 Android 设备上的应用。
分析 AndroidManifest.xml,检测导出组件、权限配置等安全问题。
使用 apktool 解包 APK 文件,提取资源、Manifest、smali 代码。
No output schemas documented. Tools return JSON strings but LLMs cannot infer structure (fields, types, pagination). Agents cannot plan downstream calls or extract required IDs for chaining.
Parameter descriptions lack constraints and context. E.g., 'pattern' in search_code has no regex syntax guidance; 'timeout' in frida_spawn has no range (1-3600?); 'max_results' in search_code has no default or limit. LLMs cannot validate inputs or choose sensible defaults.
No error handling or recovery guidance. Tools return raw JSON but do not document failure modes, retryability, or next steps. E.g., if adb_install fails, should the agent retry, check device status, or ask the user?
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2026-07-28+ | v2 |
获取 APK 基本信息:包名、版本、权限、SDK 版本等。
检查所有依赖工具(apktool、jadx、adb、frida、drozer)是否可用。
使用 jadx 反编译 APK 为 Java 源码,便于代码审计。
附加到已运行的进程并注入 Frida 脚本。
在运行时调用指定类的静态方法。
枚举应用加载的所有类。
枚举指定类的所有方法。
Hook 加密函数(Cipher、SecretKeySpec、MessageDigest),打印密钥和运算结果。
Hook HTTP 请求(URL、参数、响应码),支持 HttpURLConnection 和 OkHttp3。
Hook SharedPreferences 读写,发现本地存储的敏感数据。
注入 SSL Pinning 绕过脚本,用于 HTTPS 抓包。
列出设备上运行的进程。
列出设备上安装的应用(仅应用进程)。
执行自定义 Frida JavaScript 脚本。指定 package 用 spawn 模式,指定 target 用 attach 模式。
启动应用并注入 Frida 脚本。
扫描反编译源码中的敏感信息(硬编码密钥、AWS Key、私钥、内网地址等)。
在反编译源码中搜索指定正则模式。
通过 ADB 尝试启动导出的 Activity,验证是否可被外部调用。
通过 ADB 查询导出的 Content Provider,验证是否可被外部读取。
Tool annotations missing. Despite clear risk levels (WRITE vs READ_ONLY), no readOnlyHint, destructiveHint, or idempotentHint are declared. Agents cannot reason about safety or retry logic.
Ambiguous parameter relationships undocumented. frida_spawn and frida_attach both accept 'package' and 'target', which is required for each? frida_run_script accepts both 'package' and 'target' but no guidance on mutual exclusivity or precedence.