Server profile

apktool-mcp-server

apktool-mcp-server exposes APK decoding, inspection, editing, and rebuilding through MCP. It supports authorized Android security research with manifest access, smali operations, resource editing, and file searches.

Server facts

apktool-mcp-server

Tech

Runtime / language
pythonPython
Transports
stdio
Remote available
No
Authentication
Not specified

Activity

GitHub stars
672
Last commit
Data as of

Tags

  • Android
  • Apktool
  • Reverse Engineering
  • Smali
  • Static Analysis

Overview

apktool-mcp-server integrates Apktool with MCP clients for Android application reverse engineering. It is part of Zin's Reverse Engineering MCP Suite and is intended for educational work, research, and authorized security assessment. The server can decode an APK into an Apktool project, inspect its Android manifest and apktool.yml metadata, and enumerate smali directories and files. Smali retrieval uses a class name, and file listing can be narrowed by package prefix. These operations give an assistant concrete project material to review, rather than relying on a description of an application. The README illustrates workflows for examining permissions, exported components, hardcoded addresses, and method usage.

The toolset also permits changes. Clients can modify smali code or resource files, search selected file extensions for patterns, clean a project, and build an APK from the decoded project. Resource enumeration can be filtered by type, supporting targeted inspection of layouts or other assets. Setup requires Apktool to be installed and available in the environment, with Python 3.10 or newer identified in the README. Dependency management uses uv, and client examples launch apktool_mcp_server.py from the project directory. Claude Desktop is the tested client; broader client testing is described as pending. The legal warning restricts use to applications the user owns or has permission to analyze, and the project uses Apache 2.0 licensing.

Install & configure

Requirements

  • Python 3.10 or later
  • uv
  • Apktool installed and available in the environment
  • A local project checkout or release download
Documented launch / install command
uv --directory path/to/apktool-mcp-server run apktool_mcp_server.py

Uses the Cherry Studio stdio example. Replace the project-directory placeholder. The README offers uv pip install httpx fastmcp if dependencies need manual installation.

Config file · macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

Windows: %APPDATA%\Claude\claude_desktop_config.json

Use Settings → Developer → Edit Config when available. Do not assume a Linux configuration path; check the client documentation for your platform. Remote servers use the app’s connector flow when supported, not the local stdio file shown here. Merge this example with existing settings; do not overwrite unrelated servers.

Claude Desktop configuration
{
  "mcpServers": {
    "apktool-mcp-server": {
      "command": "uv",
      "args": [
        "--directory",
        "path/to/apktool-mcp-server",
        "run",
        "apktool_mcp_server.py"
      ],
      "env": {}
    }
  }
}

Read the Claude Desktop setup guide

Config file · Project: .cursor/mcp.json

User: ~/.cursor/mcp.json

The project path is relative to the workspace root. The tilde denotes your user home directory. Use Cursor’s MCP settings to confirm which configuration and scope your installed version is reading. Merge this example with existing settings; do not overwrite unrelated servers.

Cursor configuration
{
  "mcpServers": {
    "apktool-mcp-server": {
      "command": "uv",
      "args": [
        "--directory",
        "path/to/apktool-mcp-server",
        "run",
        "apktool_mcp_server.py"
      ],
      "env": {}
    }
  }
}

Read the Cursor setup guide

Config file · Workspace: .vscode/mcp.json

For user scope, use the “MCP: Open User Configuration” command if available. Do not guess a user configuration path across operating systems, profiles, containers, or remote workspaces; check the client documentation. Merge this example with existing settings; do not overwrite unrelated servers.

VS Code configuration
{
  "servers": {
    "apktool-mcp-server": {
      "type": "stdio",
      "command": "uv",
      "args": [
        "--directory",
        "path/to/apktool-mcp-server",
        "run",
        "apktool_mcp_server.py"
      ],
      "env": {}
    }
  }
}

Read the VS Code setup guide

Config file · macOS/Linux: ~/.codeium/windsurf/mcp_config.json

Windows: %USERPROFILE%\.codeium\windsurf\mcp_config.json

Open the MCP configuration through Windsurf’s settings when possible to confirm the active file. Paths can differ in managed or future releases; check the client documentation if this location is not present. Merge this example with existing settings; do not overwrite unrelated servers.

Windsurf configuration
{
  "mcpServers": {
    "apktool-mcp-server": {
      "command": "uv",
      "args": [
        "--directory",
        "path/to/apktool-mcp-server",
        "run",
        "apktool_mcp_server.py"
      ],
      "env": {}
    }
  }
}

Read the Windsurf setup guide

Config file · Project scope: .mcp.json at the repository root

The project file uses mcpServers. For user scope, use claude mcp add --scope user rather than assuming .mcp.json in your home directory is the user configuration. Check the client documentation for managed settings and storage details. Merge this example with existing settings; do not overwrite unrelated servers.

Claude Code configuration
{
  "mcpServers": {
    "apktool-mcp-server": {
      "type": "stdio",
      "command": "uv",
      "args": [
        "--directory",
        "path/to/apktool-mcp-server",
        "run",
        "apktool_mcp_server.py"
      ],
      "env": {}
    }
  }
}

Read the Claude Code setup guide

Examples are translated from the published configuration. Supply your own credentials and verify requirements in the upstream README. Remote connectors are shown only where a supported configuration format is known.

Tools

Source: repository README. Tool descriptions are a documented snapshot, not a live capability check.

ToolWhat it does
build_apkBuild an APK from a decoded Apktool project.
get_manifestRead the decoded Android manifest.
get_apktool_ymlInspect Apktool project metadata.
list_smali_directoriesEnumerate smali directories in a decoded project.
list_smali_filesList smali files with an optional package-prefix filter.
get_smali_fileRead smali code for a named class.
modify_smali_fileReplace the contents of a selected smali file.
list_resourcesEnumerate decoded resources, optionally by type.
get_resource_fileRead a selected decoded resource.
modify_resource_fileChange a selected resource file.
search_in_fileFind a pattern in files matching specified extensions.
clean_projectClean a project before rebuilding.
decode_apkDecode an APK into resources and smali code with Apktool.

Names, permissions, and defaults can change. Check the current upstream documentation before granting access.

Use cases

  • Review Android manifests and declared permissions
  • Inspect and search smali code during authorized assessments
  • Read or update decoded resource files
  • Rebuild an APK after permitted project modifications

Strengths

  • Covers decoding, inspection, editing, and rebuilding
  • Supports package-prefix and resource-type filtering
  • Exposes manifest and Apktool project metadata

Limitations

  • Requires a separately installed Apktool environment
  • Client testing is reported for Claude Desktop, with others pending
  • Usage is restricted to authorized analysis

Frequently asked questions

Yes. build_apk builds from a decoded Apktool project, and clean_project prepares the project for rebuilding.

Yes. It lists directories and files, retrieves class code, and permits smali file changes.

The README requires downloading and configuring Apktool separately.

The legal warning limits use to educational, research, and ethical assessment work on applications you own or are authorized to test.

Independent listing, not an affiliation or security review. Grant the least access needed and verify the upstream instructions before running code.

Related MCP servers