APKTool MCP — hosted adapter
Provides optional persistent storage through a private Backblaze B2 bucket, including saving imported APKs and rebuilt outputs, storing and restoring project snapshots, listing or deleting saved objects, and generating short-lived pre-signed download URLs.
Supports ChatGPT attachment workflows by accepting APK uploads via OpenAI file parameters and returning temporary download links for rebuilt APKs.
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., "@APKTool MCP — hosted adapterdecode /tmp/app.apk and show me the AndroidManifest.xml"
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.
APKTool MCP — Render-hosted
Hosted FastMCP adapter for zinja-coder/apktool-mcp-server.
Active deployment
Render free web service: apktool-mcp-giraffe. The live service URL is https://apktool-mcp-giraffe.onrender.com.
The remote MCP endpoint is https://apktool-mcp-giraffe.onrender.com/private/<MCP_PATH_TOKEN>/mcp. The private token is stored in the Render environment and must not be committed to this public repository. ChatGPT plugin authentication is set to No authentication because access is controlled by the private URL path.
Direct ChatGPT attachment support
Attach an APK file in a ChatGPT conversation that has this custom MCP plugin enabled.
Ask ChatGPT to call
import_apk_attachmentwith the attachment. The tool uses OpenAI_meta["openai/fileParams"]and a temporary signed file URL.Pass the returned
apk_pathtodecode_apk; inspect and modify as needed, then callbuild_apk.Pass the rebuilt output path to
get_apk_download_link. The server returns a short-lived HTTPS download URL.
ChatGPT attachment imports and temporary artifact downloads are limited to 512 MB (matching ChatGPT's documented per-file limit). The server streams files to disk to avoid holding the entire APK in RAM; large decodes can still run out of memory on the free Render instance (512 MB RAM). Uploaded files are validated as APK archives. All workspaces and URLs for built APK downloads are ephemeral. Render free services sleep after approximately 15 minutes of inactivity, destroying temporary files. To wake, visit https://apktool-mcp-giraffe.onrender.com/health and re-import the APK if needed.
Connection note: Existing ChatGPT custom plugin installations might need a tool refresh or reconnect to discover the newly added attachment and download tools. A successful MCP tool-list response verifies the backend, not ChatGPT's client-side attachment forwarding.
Backblaze B2 persistent storage (optional)
The Render MCP still works without B2. With B2 configured, attachment imports automatically save originals to a private B2 bucket, and get_apk_download_link saves output files and provides a one-hour private pre-signed download URL. B2 tools also allow saved files and edited project snapshots to be listed and restored after Render sleeps. A snapshot is explicit: after modifying smali/resources, call b2_save_project_snapshot(project_dir) before Render sleeps. Restore with b2_restore_project_snapshot(object_key). Use b2_delete_saved_object(object_key) to permanently remove an artifact and its stored versions when you no longer need it.
Create a read/write application key restricted to the intended bucket at Backblaze B2 → Application Keys. Store these environment variables only in Render → Environment, never in chat or GitHub:
Variable | Value |
| Exact private bucket name |
| S3 endpoint shown by Backblaze, e.g. |
| Restricted application Key ID |
| Restricted application Application Key (secret) |
The account's master key is not S3-compatible. Set all four fields together and choose Save, rebuild and deploy in Render; no MCP URL change is required. Verify with b2_storage_status (must report configured: true).
The adapter has an application-side 9 GB soft ceiling for current objects stored under apktool/ and uses unique keys to avoid normal overwrite-version growth. This is not an account-wide Backblaze spending cap, does not count previous object versions or other bucket contents, and cannot guarantee no charges. Configure independent Backblaze Caps & Alerts, keep the bucket private, and set lifecycle rules if needed. A free Render instance has limited RAM/disk and can be suspended for heavy service-originated traffic; persistent B2 storage does not increase processing capacity.
Run on Render
The deployed Python start command is uvicorn server:app --host 0.0.0.0 --port ${PORT:-10000}.
Runtime dependencies are in requirements.txt. Render environment variables include MCP_PATH_TOKEN (a random secret) and PUBLIC_BASE_URL (the HTTPS origin). Do not upload private APKs to a public GitHub repository.
Credits
Fork-derived adaptation of zinja-coder/apktool-mcp-server, Apache 2.0. The original license is retained in LICENSE. Use only for APKs you own or are authorized to analyze.
Related MCP server: jadx-rpc
Historical notes (MCPHosting.io)
APKTool MCP — hosted adapter
A hosting-ready adaptation of zinja-coder/apktool-mcp-server for deployment on MCPHosting.io and connection to ChatGPT.
Status: GitHub source prepared; cloud deployment and end-to-end operation not yet verified.
MCPHosting project setup
Sign in at https://app.mcphosting.io/ and select Projects → New project.
Field | Enter |
Project name |
|
Source | GitHub |
Public GitHub URL |
|
Branch/tag |
|
Click Deploy. The hosted entrypoint now exposes only the FastMCP mcp object and lets the provider manage the HTTP listener; it must not start a second process on port 3000. If EADDRINUSE persists after this commit, check provider logs or contact their support. If successful, use the dashboard's actual HTTPS /mcp endpoint to connect ChatGPT.
Use the single auto-discovery entrypoint server.py, which exports mcp (FastMCP). MCPHosting must start the HTTP listener itself. For local standalone development use fastmcp run server.py --transport http --port 8000. Running python server.py intentionally does not start a listener.
Runtime
The original
apktool_mcp_server.pycode is retained with an argument-parser adjustment to support imports.requirements.txtinstalls FastMCP and a portable Java 21 runtime viajdk4py.On startup, a local
apktoolcommand shim is installed into temporary storage. On its first invocation, it downloads official Apktool 3.0.3 and verifies the publisher's SHA-256.Decoded APK projects are kept in temporary storage, which might disappear across requests or restarts.
Limitations and security
The host's dependency installation, outbound download access, runtime limits, and MCP tool behavior still need testing. The original MCP tools accept paths on the host, not automatically APKs on your phone or attached in ChatGPT. Convenient remote APK import/export needs a separate mechanism.
Before enabling the connection, ensure your hosted MCP endpoint is protected by authentication. It exposes file inspection and modification capabilities; do not make it openly callable.
Credits
zinja-coder/apktool-mcp-server — Apache 2.0 license retained in LICENSE. Apktool is separately maintained. Use only on APKs you are authorized to analyze or modify.
This server cannot be deployed
Maintenance
Related MCP Connectors
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
A full backend your AI coding agent can set up over MCP
MCP server that lets your AI assistant build and deploy apps, hosting each one at a live URL.
Remote MCP server to run your Atako AI agents: chat, projects, files, integrations and channels.
Related MCP Servers
- AlicenseAqualityAmaintenanceA minimal, secure MCP server for AI-assisted mobile development, enabling build, install, interact, and inspect Android/iOS apps.5215 npm14Apache 2.0
- AlicenseNot gradedqualityDmaintenanceMCP server for analyzing Android APK, DEX, or JAR files via a headless jadx engine, enabling LLM agents to query decompiled code, symbols, call graphs, and more.2GPL 3.0
- AlicenseBqualityCmaintenanceFully automated MCP server built to communicate with JADX-AI-MCP Plugin to analyze Android APKs using LLMs like Claude — uncover vulnerabilities, parse manifests, and reverse engineer effortlessly.321Apache 2.0
- AlicenseNot gradedqualityBmaintenanceProvides AI agents with a unified MCP interface for Android APK reverse engineering, metadata analysis, Smali/resource editing, rebuilding, signing, verification, and ADB device testing.MIT