apktool-mcp-server is an MCP (Model Context Protocol) server built on top of Apktool, belonging to author Zin's Android reverse engineering MCP suite (the same suite also includes JADX-MCP-Server). Its positioning is to connect Apktool's unpacking capabilities with large language models such as Claude, enabling a real-time workflow of "decompile → context-aware code review → AI suggestions," and it can be used to analyze Android APKs, discover potential vulnerabilities, parse manifest files, and assist with reverse engineering work.
Main capabilities The server exposes a set of MCP tools covering decoding, viewing, modifying, and building:
- Decoding and building: decode_apk() uses APKTool to decode an APK, extracting resources and smali code; build_apk() rebuilds an APK from a decoded APKTool project; clean_project() cleans the project directory for rebuilding.
- Manifest and configuration: get_manifest() retrieves the AndroidManifest.xml content of a decoded project; get_apktool_yml() retrieves apktool.yml information.
- smali operations: list_smali_directories() lists the smali directories in a project; list_smali_files() lists the files in a specified smali directory, filterable by package prefix; get_smali_file() retrieves the content of a specified smali file by class name; modify_smali_file() modifies the content of a specified smali file.
- Resource operations: list_resources() lists project resources, filterable by resource type; get_resource_file() retrieves the content of a specified resource file; modify_resource_file() modifies the content of a specified resource file.
- Search: search_in_file() searches for a pattern in files with a specified extension.
Usage The official getting-started steps include:
- Download from the Releases page:https://github.com/zinja-coder/apktool-mcp-server/releases
- It is recommended to use a local LLM (Ollama) together with the Zin MCP Client; this client is positioned as a lightweight, fast, and simple CLI-based MCP client for STDIO MCP servers, providing a bridge between local Ollama models and MCP servers, at the address https://github.com/zinja-coder/zin-mcp-client
- Claude Desktop configuration: Ensure Claude Desktop is running with MCP enabled, and add the MCP server in the configuration file. The Windows path is %APPDATA%\Claude\claude_desktop_config.json, and the macOS path is ~/Library/Application Support/Claude/claude_desktop_config.json, and write the corresponding content, in which path/to/uv needs to be replaced with the actual uv executable path, and path/to/apktool-mcp-server replaced with the absolute path where the repository was cloned.
- Cherry Studio configuration: If you need to configure this MCP tool in Cherry Studio, you can refer to the corresponding configuration instructions provided officially.
Applicable scenarios and example prompts The official README provides several example prompt scenarios that can be used to guide usage:
- Basic code understanding: List all smali directories of a project (such as dvac); display all smali files under a specified package prefix; retrieve the smali code of a certain class; compare MainActivity.smali with the previous version; search for the use of startActivity in smali files.
- Vulnerability detection: Analyze the permissions declared in AndroidManifest.xml and flag dangerous permissions; search for hardcoded URLs or IPs; find the use of PendingIntent.getActivity; check exported activities or receivers; list the smali files that access the SEND_SMS or READ_CONTACTS permissions.
- Reverse engineering assistance: Decode a specified APK and create a project; create a new APKTool project; clean the project before rebuilding; extract DEX files for external analysis; modify MainActivity.smali to insert logging at the beginning of onCreate().
- Static analysis: Retrieve the complete AndroidManifest.xml; view the contents of apktool.yml; list layout class resource files; search for password in all resources and smali files; check the permissions used against common over-privilege risks.
- AI codeModifications: Modify the onCreate() method to add a toast; replace all http:// in strings.xml with https://;为所有 Add android:exported=false to the activity; patch the validateLogin method in LoginManager.smali so that it always returns true; add log statements to each method in MainActivity.smali.
- Documentation and metadata: List all decoded APKTool projects in the workspace; view the apktool.yml configuration to verify the version, original APK metadata, and compression settings; get all Android devices connected via ADB (this feature is planned to be migrated to the ADB MCP Server); get project metadata from apktool.yml; check the currently installed APKTool version on the server.
Compatibility and dependencies This project has been tested on the Claude Desktop client; official support for other AIs is stated to be tested later. The core APK decoding and resource processing logic comes from the open-source Android reverse engineering tool Apktool (author @iBotPeaches), and apktool-mcp-server extends AI capabilities on top of it. The project acknowledges the author of Claude desktop for Debian based Linux, @aaddrick, and the Model Context Protocol and FastMCP teams. The project uses the Apache 2.0 license.
Limitations and legal notice This project explicitly states: all related tools are intended solely for educational, research, and ethical security assessment purposes, are provided "as is," and come with no express or implied warranties. Users must ensure that their use complies with all applicable laws, regulations, and ethical guidelines, and use them only in authorized environments, such as applications they own or applications for which they have obtained explicit permission for analysis. Use for unauthorized reverse engineering, infringement of intellectual property, or malicious activities is prohibited. The developers are not liable for any damages, data loss, legal consequences, or other consequences caused by the use or misuse of these tools.