apktool-mcp-server turns the tedious process of Android APK reverse engineering into an interactive, AI-assisted workflow. By wrapping the popular apktool within a Model Context Protocol (MCP) server, it enables large language models like Claude to decode, analyze, modify, and rebuild APK files through natural language prompts. This transforms a traditionally manual, multi-step task into a conversational loop where AI can help inspect and patch smali code live.
What apktool-mcp-server does and how it works
At its core, apktool-mcp-server is a Python-based MCP server that exposes the entire APK reverse engineering lifecycle through 13 distinct MCP tools. These cover decoding APKs, reading key metadata files like AndroidManifest.xml and apktool.yml, listing and modifying smali files and resource files, searching for code patterns, cleaning projects, and rebuilding APK packages.
The server acts as a wrapper around apktool itself, so a working apktool installation on the host system is a prerequisite. It does not reimplement APK decoding logic but exposes apktool’s capabilities through an MCP interface. This interface communicates over standard input/output (stdio), making it compatible with several MCP clients.
The project uses the Python uv package for dependency and project management—not as an async runtime, which is handled by Python’s asyncio under the hood. This is an important distinction for understanding the toolchain.
apktool-mcp-server integrates with frontends like Claude Desktop, the Ollama environment via the companion zin-mcp-client CLI bridge, and Cherry Studio. This allows reverse engineers to interactively explore, patch, and rebuild APKs in real time using AI-assisted commands.
The technical strengths and tradeoffs
One of the standout aspects of apktool-mcp-server is how comprehensively it covers the APK reverse engineering workflow within an MCP protocol interface. By breaking down the workflow into 13 discrete MCP tools, it offers fine-grained control over every stage: decoding, manifest inspection, smali code manipulation, resource handling, searching, cleaning, and rebuilding.
The MCP protocol standardizes communication, enabling seamless integration with various AI clients. The use of stdio for communication keeps the server lightweight and widely compatible but might limit performance or flexibility compared to network-based transports in some setups.
Wrapping apktool rather than reimplementing APK decoding keeps the codebase focused and leverages an established, battle-tested tool. However, this also means the server depends on the host environment’s apktool installation and inherits its limitations.
The codebase is Python-based and leverages uv for managing dependencies and running the server. This choice simplifies project management but adds a layer that might confuse those unfamiliar with uv. The async behavior comes from Python’s native asyncio, not from uv itself.
Integration with multiple MCP clients like Claude Desktop and Ollama via zin-mcp-client widens the tool’s usability. The CLI bridge (zin-mcp-client) fills a niche for connecting local LLMs with MCP servers over stdio, enhancing developer experience.
Quick start
The README provides clear instructions to get started, including downloading releases and configuring MCP clients.
- Download the latest release from:
https://github.com/zinja-coder/apktool-mcp-server/releases
To run locally with Ollama and the zin MCP client (recommended), install and use the zin-mcp-client as a bridge. Details and demo are provided in the zin-mcp-client repo: https://github.com/zinja-coder/zin-mcp-client
For Claude Desktop integration, ensure Claude Desktop is running with MCP enabled. Then add the MCP server configuration by editing the config file depending on your OS:
- Windows:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Linux (example):
~/.config/Claude/claude_desktop_config.json
Add the following JSON block (adjust paths accordingly):
{
"mcpServers": {
"apktool-mcp-server": {
"command": "/<path>/<to>/uv",
"args": [
"--directory",
"</PATH/TO/>apktool-mcp-server/",
"run",
"apktool_mcp_server.py"
]
}
}
}
- Cherry Studio users can configure the MCP tool with type
stdioand commanduv, passing appropriate arguments as in the example above.
verdict
apktool-mcp-server is a practical tool for anyone involved in Android reverse engineering who wants to add AI assistance to the workflow. Its MCP-based architecture brings a modular and interactive approach to decoding, analyzing, and patching APKs, reducing the manual grind.
The reliance on apktool means it inherits apktool’s strengths and weaknesses; it is not a replacement but a wrapper that enhances usability with AI. The stdio communication model favors simplicity and broad compatibility but might not suit all integration scenarios.
If you are working with Claude or local LLMs like Ollama and want a conversational, real-time APK reverse engineering experience, this project is worth exploring. It’s less suited for those seeking a fully standalone or network-based solution.
Overall, apktool-mcp-server delivers a focused, well-structured bridge between AI tools and APK reverse engineering, with a clean protocol interface and solid integration options. It’s a good example of combining existing tools under the MCP umbrella to enable new workflows.
→ GitHub Repo: zinja-coder/apktool-mcp-server ⭐ 448 · Python