Skip to main content
Glama

npm PyPI CI MIT

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. Demo recording

Related MCP server: mobile-security-mcp

Install

npm install -g mobile-re-mcp

You 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-mcp

opencode, 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

apk_manifest_analyzer

Package info, debuggable and allowBackup flags, exported components, intent filters

aapt, or apktool

apk_permissions_checker

Permissions split into dangerous and normal, with a short reason for each

aapt or aapt2, or apktool

android_api_extractor

Retrofit endpoints and OkHttp fields from decompiled smali, as text or a Postman collection

apktool, or a smali folder you already have

android_google_services

Firebase and Google Cloud settings from google-services.json and resources.arsc

strings

android_secrets_scanner

Hardcoded keys and credentials in DEX files, resources and assets

strings

ios_manifest_analyzer

Bundle info, ATS settings, URL schemes, background modes, warnings

plutil for binary plists

ios_permissions_checker

Privacy permission strings ranked HIGH, MEDIUM or LOW

plutil for binary plists

ios_entitlements_checker

Entitlements, with flags like get-task-allow and sandbox exceptions

codesign (macOS)

ios_binary_strings

URLs, emails, IPs and key-like strings from the Mach-O binary

strings

ios_frameworks_detector

Bundled frameworks and dylibs, matched against about 60 known SDKs

nothing

ios_google_services

The contents of GoogleService-Info.plist

plutil for binary plists

ios_secrets_scanner

Secrets in resource files and in the binary, with severity

strings

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 (.apk or .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, aapt and strings. 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 tools
android_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

    A3.7/5.0

    Scored across 12 tools

    Disambiguation4/5

    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.

    Naming Consistency4/5

    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.

    Tool Count5/5

    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.

    Completeness4/5

    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

    ActivityMaintained
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      C
      maintenance
      This 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.
      24
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      An 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.
      12
      18 npm
      8
      MIT
    • F
      license
      Not graded
      quality
      B
      maintenance
      Enables 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.
      -