github.com/zinja-coder/jadx-ai-mcp with a non-localhost server
jadx-ai-mcp docs api-reference.md
4.5 kB
Markdown
at main

Enhanced API Reference #

Comprehensive guide to all JADX-AI-MCP tools with detailed usage examples.

Table of Contents #


Class Analysis #

Tools for inspecting decompiled Java code.

fetch_current_class() #

Fetches the currently selected class in JADX-GUI.

Parameters: None

Returns:

{
  "className": "com.example.MainActivity",
  "package": "com.example",
  "source": "public class MainActivity...",
  "type": "class"
}

Use Case: Quick context for "Explain this class" prompts.


get_all_classes(offset: int = 0, count: int = 0) #

Lists all classes in the APK.

Parameters:

  • offset (int): Starting index
  • count (int): Number to return (0 = all)

Example:

# Get first 100 classes
classes = await get_all_classes(offset=0, count=100)
print(f"Total classes: {classes['pagination']['total']}")

Best Practice: Always use pagination for production APKs to avoid timeouts.


get_class_source(class_name: str) #

Gets full source code for a specific class.

Parameters:

  • class_name (str): Fully qualified name

Example:

source = await get_class_source("com.example.crypto.AES")

Note: Returns cached source if already decompiled.


Search Capabilities #

search_classes_by_keyword(search_term: str, search_in: str = "all", package: str = "", offset: int = 0, count: int = 20) #

Full-text search across code with advanced scoping.

Parameters:

  • search_term (str): Text to find
  • search_in (str): Scope ("all", "code", "comments", "strings")
  • package (str): Restrict to specific package (e.g., "com.example")
  • offset (int): Start index
  • count (int): Max results

Example:

# Find hardcoded passwords in comments only
results = await search_classes_by_keyword("password", search_in="comments", count=50)

for res in results['items']:
    print(f"Found in {res['className']}: {res['preview']}")

search_method_by_name(method_name: str) #

Finds methods matching a name pattern.

Parameters:

  • method_name (str): Name or partial signature

Example:

# Find encryption methods
methods = await search_method_by_name("encrypt")

Resource Analysis #

get_android_manifest() #

Parses AndroidManifest.xml.

Returns:

  • Package name
  • Version info
  • Permissions
  • Activities/Services/Receivers/Providers
  • Raw XML

Use Case: Security auditing permissions and exported components.


get_manifest_component(type: str) #

Get specific components from AndroidManifest.xml.

Parameters:

  • type (str): "Activity", "Service", "Receiver", or "Provider"

get_strings(offset: int = 0, count: int = 0) #

Extracts strings from res/values/strings.xml.

Parameters:

  • offset (int): Start index
  • count (int): Max strings

Use Case: Finding API keys, URLs, or hidden messages.


Cross-Reference Analysis #

get_xrefs_to_method(class_name: str, method_name: str, ...) #

Finds all callers of a method.

Example:

# Who calls login()?
callers = await get_xrefs_to_method(
    "com.example.Auth", 
    "login",
    count=100
)

Features:

  • Includes direct calls
  • Includes interface implementations
  • Includes super calls

Refactoring #

rename_class(class_name: str, new_name: str) #

Renames class and updates references.

Example:

# Deobfuscate
await rename_class("a.b.c", "CryptoHelper")

Warning: Affects multiple files. Use carefully.


rename_method(class_name: str, method_name: str, new_name: str) #

Renames method and updates references.


rename_package(old_pkg: str, new_pkg: str) #

Renames an entire package and updates declarations/imports.


rename_variable(class_name: str, method_name: str, old_var: str, new_var: str) #

Renames a local variable inside a specific method.


Debugging #

debug_get_stack_frames() #

Gets current call stack.

Requirements:

  • Debugger active
  • Process suspended

Returns:

  • List of stack frames (class, method, line)

debug_get_variables() #

Gets local variables and fields.

Returns:

  • Locals (name, type, value)
  • Fields (name, type, value)

Security Note: Values may contain sensitive data (passwords, keys).