JADX-MCP-SERVER
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | Where the MCP server listens (bind address for LLM clients) | 127.0.0.1 |
| http | No | Use HTTP transport instead of stdio (--http flag) | false |
| port | No | Which port the MCP server listens on | 8651 |
| jadx_host | No | Where to find the JADX plugin (the target JADX-GUI machine) | 127.0.0.1 |
| jadx_port | No | Which port the JADX plugin is on | 8650 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": true
} |
| resources | {
"subscribe": false,
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| fetch_current_classA | Fetch the currently selected class and its code from the JADX-GUI plugin. |
| get_selected_textB | Returns the currently selected text in the decompiled code view. |
| get_method_by_nameC | Fetch the source code of a method from a specific class. |
| get_all_classesC | Returns a list of all classes in the project with pagination support. |
| get_class_sourceC | Fetch the Java source of a specific class. |
| search_method_by_nameC | Search for a method name across all classes. |
| get_methods_of_classC | List all method names in a class. |
| search_classes_by_keywordB | Search for classes containing a specific keyword with flexible filtering options. This tool performs a comprehensive search across decompiled Android code, allowing you to:
|
| get_fields_of_classC | List all field names in a class. |
| get_smali_of_classC | Fetch the smali representation of a class. |
| get_manifest_componentA | Retrieve specified component data from AndroidManifest.xml, support filter exported components. Support standard Android components: activity, provider, service, receiver. |
| get_android_manifestB | Retrieve and return the AndroidManifest.xml content. |
| get_stringsC | Retrieve contents of strings.xml files. |
| get_all_resource_file_namesC | Retrieve all resource files names. |
| get_resource_fileC | Retrieve resource file content. |
| get_main_application_classes_namesB | Fetch main application classes' names from Manifest package. |
| get_main_application_classes_codeC | Fetch main application classes' code with pagination. |
| get_main_activity_classA | Fetch the main activity class from AndroidManifest.xml. |
| get_package_treeA | Get all packages in the APK sorted by class count. Shows total_classes, total_packages, and per-package name, class_count, is_likely_library. Use this first to understand the APK structure before searching. |
| get_cache_statsA | Get decompilation cache statistics: hits, misses, hit_rate, cached_classes, compressed_mb, compression_ratio. |
| clear_cacheA | Clear the decompilation source cache and reset counters. Use when switching APKs or to free memory. |
| rename_classC | Renames a specific class. |
| rename_methodD | Renames a specific method. |
| rename_fieldC | Renames a specific field. |
| rename_packageC | Renames a package and all its classes. |
| rename_variableC | Renames a specific variable in a method. |
| debug_get_stack_framesB | Get current stack frames (call stack). |
| debug_get_threadsA | Get all threads in the debugged process. |
| debug_get_variablesA | Get current variables when process is suspended. |
| get_xrefs_to_classC | Find all references to a class. |
| get_xrefs_to_methodC | Find all references to a method. |
| get_xrefs_to_fieldC | Find all references to a field. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 32 tools
Most tools target a distinct resource plus action (class source vs. smali vs. methods vs. fields vs. xrefs), and the rename_* family is cleanly scoped per symbol. A few pairs are close: fetch_current_class vs. get_class_source, and get_method_by_name vs. search_method_by_name, but the descriptions (fetch one method by class/name vs. search names across all classes) resolve them adequately. get_main_application_classes_names vs. get_all_classes is also slightly fuzzy but the manifest-package scope distinguishes it.
Predominantly consistent snake_case verb_noun (get_class_source, get_fields_of_class, search_classes_by_keyword, rename_method). Minor deviations: a fetch_ vs. get_ mix, and the debug tools use a debug_ prefix group rather than the verb_noun form used elsewhere. Still highly predictable overall.
32 tools is on the heavy side and the surface spans four sub-domains (code retrieval, search, resources/manifest, rename refactoring, plus a debugger). There is some redundancy, e.g. get_android_manifest, get_manifest_component, get_main_activity_class, and get_main_application_classes_names/code all read from the same manifest and could be consolidated. Each area is individually justified, but the set feels broader than a single coherent scope.
Coverage is strong for reverse-engineering workflows: class/method/field retrieval, smali, three kinds of xrefs, keyword search, resources, manifest, rename refactoring, and cache management. Gaps exist in the debugger subset, which only exposes read-only inspection (stack frames, threads, variables) with no continue/step/breakpoint control, and there is no smali-for-method or export/dump operation. These are workable gaps rather than dead ends.