mobile-re-mcp
This MCP server statically analyzes Android APKs and iOS IPAs to reveal security-relevant app configuration, permissions, secrets, and bundled services without running the app.
Analyze Android manifests for package info, debuggable/allowBackup flags, exported components, and intent filters.
Check Android permissions and flag dangerous ones.
Extract Retrofit/OkHttp API endpoints from APK smali as text or a Postman collection.
Discover Firebase/Google Cloud settings from Android APKs and iOS IPAs.
Scan Android and iOS apps for hardcoded secrets and API keys.
Analyze iOS Info.plist for bundle details, ATS settings, URL schemes, and background modes.
Check iOS privacy permission strings with risk levels and entitlements such as get-task-allow.
Extract iOS binary strings filtered for URLs, keys, emails, or IPs.
Detect bundled iOS frameworks/SDKs and highlight privacy-relevant ones.
Use optional smali folders, min_length, and iOS binary filters to tune analysis.
Provides tools to analyze Android APK files for security issues, including manifest flags, dangerous permissions, Retrofit/OkHttp API endpoints, Firebase/GCP configuration, and hardcoded secrets.
Provides tools to analyze iOS IPA files for security issues, including Info.plist/ATS settings, privacy permissions, entitlements, binary strings, bundled frameworks, Firebase configuration, and hardcoded secrets.
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., "@mobile-re-mcp analyze /Users/me/Downloads/app.apk for hardcoded secrets"
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.
An MCP server that reads Android APKs and iOS IPAs and tells your AI assistant what is inside: permissions, exported components, hardcoded secrets, Firebase config, App Transport Security settings, entitlements and bundled SDKs. You ask in plain language, the assistant calls the right tool, and the findings come back. It only reads files and never runs the app. This repo also holds a second server for the live side of the work (adb, Frida, mitmproxy and patching on a real device). It is written in Python and described further down.
An example
The sample below is an APK made for this README: a small notes app with a few deliberate mistakes in it. You ask:
Check /home/me/apks/NotesDemo.apk for anything risky.
The assistant runs the manifest analyzer, the permissions checker and the secrets scanner. The output is trimmed here, and key values are masked:
=== Android Manifest Analysis ===
Package Name : com.example.notes
Version Name : 2.3.1
--- Security Flags ---
debuggable : TRUE ⚠ DANGER
allowBackup : TRUE ⚠ WARNING
usesCleartextTraffic: TRUE ⚠ DANGER
--- Exported Components (android:exported="true") ---
⚠ 5 exported component(s):
- com.example.notes.MainActivity (activity)
- com.example.notes.ShareActivity (activity)
- com.example.notes.SyncService (service)
- com.example.notes.BootReceiver (receiver)
- com.example.notes.NotesProvider (provider)=== APK Permissions Analysis ===
--- Dangerous Permissions (4) ---
⚠ android.permission.CAMERA
⚠ android.permission.ACCESS_FINE_LOCATION
⚠ android.permission.READ_CONTACTS
⚠ android.permission.WRITE_EXTERNAL_STORAGE=== Android Secrets Scanner ===
[CRITICAL] AWS Access Key ID
→ AKIA…DEMO
⚠ 1 CRITICAL finding(s) — immediate review required.From there you can keep talking: "Which of those exported components can I drop?" The assistant already has the findings and can answer. iOS works the same way with an IPA and the ios_* tools.

Related MCP server: mobile-security-mcp
Install
npm install -g mobile-re-mcpYou need Node 22 or newer. The server speaks MCP over stdio, so register it with your client as a command. Claude Code:
claude mcp add mobile-re -- npx -y mobile-re-mcpopencode, in ~/.config/opencode/opencode.json:
{
"mcp": {
"mobile-re": { "type": "local", "command": ["npx", "-y", "mobile-re-mcp"], "enabled": true }
}
}Claude Desktop, in claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\):
{
"mcpServers": {
"mobile-re": { "command": "npx", "args": ["-y", "mobile-re-mcp"] }
}
}Other clients work the same way: command npx, arguments -y mobile-re-mcp. If your client cannot see your shell's PATH (common with nvm), give it the full path to node and to dist/index.js in the global install instead.
To run from a checkout, use git clone https://github.com/FlyPhantomFly/mobile-re-mcp.git, then npm ci && npm run build, and point the client at node /path/to/mobile-re-mcp/dist/index.js.
What to ask
"Which permissions in /path/to/app.apk are dangerous, and why?"
"Are any components in this APK exported where an attacker could reach them?"
"What API endpoints does this APK call?"
"Which Firebase project does this app use, and are its keys in the app?"
"Scan this IPA for hardcoded keys and tell me where each one was found."
"Which third-party SDKs does this iOS app bundle, and which of them track users?"
Tools
Every tool takes the file as an absolute path, apk_path for Android or ipa_path for iOS.
Tool | What it reports | Needs |
| Package info, |
|
| Permissions split into dangerous and normal, with a short reason for each |
|
| Retrofit endpoints and OkHttp fields from decompiled smali, as text or a Postman collection |
|
| Firebase and Google Cloud settings from |
|
| Hardcoded keys and credentials in DEX files, resources and assets |
|
| Bundle info, ATS settings, URL schemes, background modes, warnings |
|
| Privacy permission strings ranked HIGH, MEDIUM or LOW |
|
| Entitlements, with flags like |
|
| URLs, emails, IPs and key-like strings from the Mach-O binary |
|
| Bundled frameworks and dylibs, matched against about 60 known SDKs | nothing |
| The contents of |
|
| Secrets in resource files and in the binary, with severity |
|
Some tools take extra options. smali_folder lets the Android tools reuse an existing decompile. android_api_extractor also takes output_format (txt or postman). The scanners take min_length, and ios_binary_strings takes filter (all, url, key, email or ip).
aapt, apktool, strings and plutil need to be on your PATH. plutil and codesign only exist on macOS. Most real IPAs use binary plists, so on Linux the plist-based iOS tools only work on IPAs with XML plists, and the full iOS set is best run on a Mac. On Windows the tools start without a shell, so apktool has to resolve to a real .exe, not apktool.bat.
Staying safe
External programs are started with an argument array, never through a shell, so a crafted path cannot inject a command.
The file has to exist, be an absolute path and look like a ZIP (
.apkor.ipa).To limit where the server may read, set
MOBILE_RE_MCP_ALLOWED_DIRS(separate folders with:, or;on Windows). For example, in the Claude Desktop entry add"env": { "MOBILE_RE_MCP_ALLOWED_DIRS": "/home/me/apks" }.An untrusted app is hostile input for
apktool,aaptandstrings. Keep them updated, and for samples you do not trust, run the server in a VM or container.Findings, including any secrets that were found, go to your AI client and so to its model provider.
The Python server
The Python server in python/ is for the work that needs a running app. It drives adb, Frida, mitmproxy, apktool and jadx against a test phone, so the assistant can decompile an app, hook it, read its traffic, patch it, sign it and install it again. It is Android only, has about 55 tools, and several of them can change your device, which is why they ask for approval first.
pip install "mobile-re-mcp[all]"The command is mobile-re-mcp-py. The setup, tool list and safety notes are in python/README.md. The usual order is the npm server first, to see what an app asks for and leaks, then the Python server when you need the app running. You can install either one without the other, and both share a version number.
Working on it
Build with npm ci && npm run build. CONTRIBUTING.md explains how to add a tool or a detection pattern, SECURITY.md is for reporting vulnerabilities, and CHANGELOG.md lists what changed.
License
MIT. © 2026 FlyPhantomFly.
Available Tools
12 toolsandroid_api_extractorA
Decompiles an APK and extracts Retrofit HTTP annotations and OkHttp3 endpoints from smali bytecode. Outputs a list of API endpoints or a Postman collection.
Inputs: apk_path, smali_folder, output_format.
android_google_servicesA
Extracts Google and Firebase configuration from an APK. Parses google-services.json if present, then scans resources.arsc for string values using the strings command. If a smali_folder (apktool output) is provided, parses res/values/strings.xml directly for structured key=value output.
Inputs: apk_path (required), smali_folder.
android_secrets_scannerA
Scans an APK for hardcoded secrets and API keys. Without smali_folder: runs strings on classes*.dex and resources.arsc, plus scans text assets inside the APK. With smali_folder (apktool output): scans res/values/strings.xml and assets as plain text files.
Inputs: apk_path (required), min_length, smali_folder.
apk_manifest_analyzerA
Parses AndroidManifest.xml from an APK. Extracts package info, activities, services, receivers, intent filters, and highlights security-relevant flags like exported components, debuggable, and allowBackup.
Inputs: apk_path (required).
apk_permissions_checkerB
Extracts and categorizes permissions requested by an APK. Dangerous permissions (those that grant access to sensitive user data or device features) are highlighted separately.
Inputs: apk_path (required).
ios_binary_stringsB
Extracts printable strings from an iOS app binary and filters for security-relevant patterns: HTTP/S URLs, API keys, AWS/Firebase/Google credentials, email addresses, and private IP addresses.
Inputs: ipa_path (required), filter, min_length.
ios_entitlements_checkerA
Extracts and analyzes entitlements embedded in the iOS app binary using codesign. Detects dangerous entitlements like get-task-allow (debug builds), iCloud containers, and keychain groups.
Inputs: ipa_path (required).
ios_frameworks_detectorA
Lists all third-party frameworks bundled inside an IPA (from the Frameworks/ directory). Maps known frameworks to categories: networking, analytics, ads, attribution, crash reporting, etc. Highlights privacy-relevant SDKs.
Inputs: ipa_path (required).
ios_google_servicesA
Extracts Google and Firebase configuration from an IPA. Parses GoogleService-Info.plist for API key, project ID, database URL, storage bucket, GCM sender ID, and OAuth client IDs. Also applies Google pattern scanning across all text plist and JSON files in the IPA.
Inputs: ipa_path (required).
ios_manifest_analyzerA
Parses Info.plist from an IPA file. Extracts bundle ID, version, URL schemes, App Transport Security settings, background modes, and highlights insecure configurations.
Inputs: ipa_path (required).
ios_permissions_checkerB
Extracts privacy permission usage descriptions from an IPA's Info.plist. Each permission is categorized by risk level (HIGH / MEDIUM / LOW) with an explanation.
Inputs: ipa_path (required).
ios_secrets_scannerB
Scans an IPA for hardcoded secrets and API keys. Layer 1: scans text resource files (JSON, XML, .strings, XML plists) inside the IPA. Layer 2: extracts the app binary and runs the strings command to find constants in compiled code.
Inputs: ipa_path (required), min_length.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 12 tools
Most tools are clearly separated by platform and artifact type, such as manifest, permissions, entitlements, and frameworks. However, several scanning tools overlap: ios_binary_strings and ios_secrets_scanner both hunt for credentials in binaries/resources, and Google/Firebase extraction overlaps with secret scanning on both platforms.
Names are consistently snake_case and descriptive, generally following a platform/artifact/action pattern. There is a minor prefix inconsistency between android_ and apk_ for Android tools, but the convention remains predictable.
The 12 tools are well-scoped for a mobile reverse-engineering server and are evenly split between Android and iOS analysis needs. Each tool appears to earn its place without excessive fragmentation.
The surface covers core static-analysis tasks: manifests, permissions, secrets, Google/Firebase config, API extraction, binary strings, frameworks, and entitlements. There are still notable gaps such as signing/certificate validation, Android third-party SDK/framework mapping, iOS endpoint extraction, and certificate pinning or network security configuration analysis.
Maintenance
Related MCP Connectors
Scan Android and iOS apps for security issues: findings, MASVS mapping and pentest reports.
Zero-config MCP security scanner for AI-generated apps. 25K+ vulnerability patterns.
MCP server for static security analysis of Android source code
Scan AI agent skills, MCP server packages and MCP configs before you install them. Static analysis.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceThis is an MCP (Model Context Protocol) compatible tool that allows MobSF (Mobile Security Framework) to scan APK and IPA files directly via Claude, 5ire, or any MCP-capable client.24MIT
- AlicenseAqualityDmaintenanceAn MCP server that enables AI assistants to analyze Android APK and iOS IPA files for security issues through natural language conversation, including permission auditing, secret detection, and SDK enumeration.1218 npm8MIT
- FlicenseBqualityDmaintenanceEnables local-first static and optional controlled dynamic analysis of Android APK artifacts, with provenance-aware downloads, Markdown reports, and structured security findings via MCP stdio tools.9-
- FlicenseNot gradedqualityBmaintenanceEnables Android APK security auditing through natural language by decompiling APKs with Apktool and running static analysis heuristics for attack surface, permissions, secrets, crypto, native libraries, and more, with every analysis logged to disk as markdown reports.-