Releases: zinja-coder/jadx-ai-mcp
v6.4.0 Search Infrastructure Overhauled
What's Changed
- fix: resolve search timeout on large APKs and add progress tracking by @mostafaNazari702 in #94
Release Notes: JADX AI MCP v6.4.0
This major release focuses on drastically improving stability, performance, and reliability when analyzing massive Android applications. We've overhauled the search infrastructure to eliminate timeouts, fixed severe native memory leaks, and added precise refactoring capabilities for overloaded methods.
A huge shoutout to @mostafaNazari702 for their massive contributions to the search timeout and progress tracking features in this release! 🎉
What's New & Improved
Performance & Stability (Handling Massive APKs)
- Metadata-Based Search & Progress Polling: Resolved a critical issue where the MCP server would timeout while searching through extremely large APKs. The server now leverages metadata-based scanning instead of full decompilation and utilizes a dynamic polling mechanism (
/search-progress) to keep the connection alive while reporting real-time progress back to the AI model. (Thanks to @mostafaNazari702! PRs #94, #54) - Native Memory Leak Fix: Fixed a severe native memory exhaustion bug by ensuring
DeflaterandInflaterstreams within theDecompilationCacheare explicitly closed (.end()). - Thread Contention Eliminated: Replaced
Math.random()withUUID.randomUUID()for search ID generation, eliminating lock contention and collisions in parallel stream workers during heavy concurrent searches. - Cache Optimizations: Fixed a double-lookup bug in
ClassRoutesthat caused redundant CPU decompression overhead and artificially inflated cache hit statistics.
Refactoring & Search Precision
- Overloaded Method Disambiguation (Issue #89): The
get_method_by_nameandrename_methodMCP tools now support an optionalmethod_signatureparameter. This allows AI models and users to precisely identify, read, and refactor specific methods when multiple overloads exist (e.g., distinguishing betweenonCreate(Bundle)andonCreate(Bundle, PersistableBundle)).
Bug Fixes
- Startup Proxy Crash (Issue #99): Fixed a bug where the MCP server would immediately crash on startup if the host system had a dirty
no_proxy(or other proxy-related) environment variable containing non-printable characters or trailing newlines. The server now thoroughly sanitizes the environment before dependencies are loaded.
Core Upgrades
- Upgraded underlying dependency to JADX Core v1.5.5.
New Contributors
- @mostafaNazari702 made their first contribution in #94
Full Changelog: v6.3.0...v6.4.0
Checksum SHA256:
- jadx-mcp-server-6.4.0.zip:
4dcfa6137f090ae46f88ff5a190a7efc6f578172a68c4ba1dd85974ed9d3da9f - jadx-ai-mcp-6.4.0.jar:
46f1c76b3ebdfdf1d0e4792a0e1bc1bc404b29d79c00606e89e28a25726b67c7
v6.3.0 - Remote Host Support
JADX-AI-MCP v6.3.0 Release Notes
Announcing the release of JADX-AI-MCP v6.3.0, fundamentally improving the way the MCP Server connects with the JADX Plugin, enhancing security across the transport layer, and resolving critical bugs that affected remote/Docker workflows and JSON-RPC stability.
Key Features & Architectural Changes
-
Advanced Network Topologies (
--host&--jadx-host) The architecture has been redesigned to support flexible deployments, such as running the server in Docker, WSL, or on a remote VM, separate from the JADX GUI.--host [IP]: The Python MCP server can now bind to any interface (e.g.,0.0.0.0), allowing LLM clients from external networks to connect over HTTP.
--jadx-host [IP]: Replaces the hardcoded127.0.0.1plugin target. The MCP Server can now connect to a JADX plugin running on an entirely different machine. -
Deep Stdio Integrity (Fixing Claude Desktop & LM Studio) When running the server in
stdiomode (used by Claude Desktop and Codex), any human-readable logging previously pollutedstdoutand fatally corrupted the JSON-RPC stream.- All application banners, startup checks, and internal logs are now strictly routed to
stderr. stdoutis now 100% reserved for pure MCP communication.
- All application banners, startup checks, and internal logs are now strictly routed to
-
Advanced Tool Parameters
Manifest Extraction: Added the get_manifest_component tool for targeted extraction of precise AndroidManifest XML components (Activities, Receivers, Services).
🛡️ Security & Stability
- Proxy Isolation (
trust_env=False): The internal HTTP client routing traffic to the JADX plugin now ignores system proxy variables (http_proxy/https_proxy). This prevents OS-level VPNs and enterprise proxies from accidentally intercepting or breaking the internal127.0.0.1API loop. - Runtime Security Warnings: When binding
--hostto remote interfaces like0.0.0.0, the server now issues immediate, unavoidable initialization warnings covering the risks of unencrypted/unauthenticated HTTP transport over open networks.
Checksum SHA256:
- jadx-mcp-server-6.3.0.zip:
36b7139e16f754b13c04d995b868eb1d33785e36944b9af65f311fc3f95c94bf - jadx-ai-mcp-6.3.0.jar:
5ccd9593eab85f69115647b3bfba84eb290b620fcd4015c5b8343a90701813d2
New Contributors:
Full Changelog: v6.2.0...v6.3.0
v6.2.0
Fixed the Issues:
- Fixed the following issue -> #81 The plugin server now reliably releases the port when JADX re-initializes plugins. The ServerSocketChannel extraction uses a robust multi-fallback reflection strategy compatible with Jetty 12's internal API changes, ensuring cross-classloader cleanup works correctly.
What's Changed
- Dependency Upgrades
- Javalin 6.4.0 → 6.7.0 (JADX Plugin) — Updated to the latest Javalin 6.x release (Still supporting JVM 11)
- FastMCP → 3.0.2 (Python MCP Server) — Updated to the latest FastMCP release
- Replaced mcp[cli] dependency with fastmcp>=3.0.2 in pyproject.toml
- Cleaned up requirements.txt (removed stdlib entries, added version pins)
Full Changelog: v6.1.0...v6.2.0
Checksum SHA256:
- jadx-ai-mcp-6.2.0.jar:
fbd327a274c7afc3b736c20d43c9196e668bd94cd634fe3402661a9cf98e288a - jadx-mcp-server-v6.2.0.zip:
d5af3480c42ce87e322ec0c08784e4f82ea7bf646af56b4a3a7540032159a6ce
v6.1.0 Enhanced Searching and Rename Variables
What's Changed
Two of the most impactful contributions have been made.
-
- Enhance handleSearchClassesByKeyword by @ljt270864457 in #80
- Package filtering - Limit search scope to specific packages with special handling for jadx obfuscated packages
- Multi-location search - Search across multiple locations (class names, method names, field names, code, comments) with URL-friendly lowercase parameters
- Improved method search - Match jadx's search behavior by including method names, constructor names, and parameter types
- Enhance handleSearchClassesByKeyword by @ljt270864457 in #80
Contributors
- @ljt270864457 made their contribution in #80
- @p0px made their first contribution in #83
Full Changelog: v6.0.0...v6.1.0
Checksum SHA256:
- jadx-ai-mcp-6.1.0.jar:
ba3a0f66e1aa253ab85faa5c22625d20936aac90543238c09e633f1970852c41 - jadx-mcp-server-v6.1.0.zip:
572b814636eebfe5840c9cc5987e1e8c9f38269a118e9b73cccdd178a574e5ca
v6.0.0 The Modular Architecture Update
Release v6.0.0: The Modular Architecture Update 🏗️
Major Architectural Overhaul
This release marks a significant milestone in the project's history. We have transitioned from a monolithic design to a fully modular architecture for both the Java Plugin and the Python MCP Server. This change lays the foundation for faster feature development, easier contributions, and improved stability.
📚 New Documentation
We have launched a complete documentation site! No more guessing how to configure ports or write custom tools.
Key Highlights
- Modular Java Backend: The monolithic
JadxAIMCP.java(previously ~3,800 lines) has been refactored into domain-specific route handlers.- Core Logic:
McpServer.javanow manages the server lifecycle. - Route Handlers: Separate classes for distinct functionalities:
ClassRoutes(Class navigation & source code)SearchRoutes(Method & class search)ResourceRoutes(Manifest & resources)RefactoringRoutes(Rename operations)XrefsRoutes(XRefs & usage)DebugRoutes(Stack frames & variables)
- UI Separation: All Swing components moved to
PluginMenu.java.
- Core Logic:
- Modular Python Server: The
jadx_mcp_server.pyscript has been broken down into a structured package:- Tools are now organized in
src/server/tools/(e.g.,class_tools.py,search_tools.py). - Centralized configuration in
src/server/config.py.
- Tools are now organized in
- Improved Maintainability:
- 95% reduction in main file size.
- Clear separation of concerns makes it easier to add new endpoints.
- Enhanced testability for individual components.
What's New
- Optimized Performance: Reduced memory usage and faster startup times due to cleaner class loading.
- Standardized Error Handling: More consistent error responses across all API endpoints.
For Contributors
- New Directory Structure: Please refer to the updated project structure in the README. Adding a new feature is now as simple as creating a new Route class and registering it in
McpServer. - Better Onboarding: The codebase is now self-documenting and much easier to navigate.
Full Changelog
- Refactored
JadxAIMCP.javainto modular components. - Implemented
McpServerfor centralized Javalin management. - Created
PluginMenufor UI interactions. - Modularized Python MCP server into
src/serverpackage.
Full Changelog: v5.0.0...v6.0.0
A huge thank you to everyone who supported this refactoring effort! Your patience and feedback made this possible.
Checksum SHA256:
- jadx-ai-mcp-6.0.0.jar:
3f053274f49cf5dcc647548dc716c9b0bdae64ca1d50b8767ed9b5e46bbf636f - jadx-mcp-server-v6.0.0.zip: `37f1db9f94cffdf1b2f1e4372e2bef06ca8913149502536e94cf055fa8eaf93c
v5.0.0 The Xrefs Update
New MCP Tools:
-
xrefs-to-class- Find all references to a class
Returns method-level references: { class, method }
Returns class-level references: { class, method: "" }
Supports pagination via offset and limit parameters -
/xrefs-to-method- Find all references to a method
Includes override-related methods for polymorphic support
Matches JADX GUI's "Find Usage" behavior
Supports pagination -
/xrefs-to-field- Find all references to a field
Returns methods that access the field
Method field is always non-empty (field access always occurs within a method)
Supports pagination
Bug Fix:
- There was a bug in get_main_application_classes_code(), implmentation was missing on plugin side and on the jadx_mcp_server.py side, the json key name was mismatch, the plugin is sending the data in 'classes' but jadx_mcp_server.py was looking for some other key.
What's Changed
- add xref feature implements by @ljt270864457 in #59
- feat: added pagination support in get_all_resource_file_names() mcp tool by @zinja-coder in #61
- optimize: separated pagination utils class from main jadx ai mcp file… by @zinja-coder in #62
- Code Improvements
- Separated PaginationUtils class to progress towards modular design.
- **BELOW CONTRIBUTIONS ARE MADE BY @ljt270864457 **
- Refactoring: Extracted common helper methods to reduce code duplication:
- validateRequiredParam() - Parameter validation
- findClassByName() - Class lookup
- findMethodsByName() - Method lookup (supports constructors)
- findFieldByName() - Field lookup
- collectMethodNodeReferences() - Reference collection with deduplication
- sendXrefsResponse() - Paginated response handling
Checksum SHA256:
- jadx-ai-mcp-5.0.0.jar:
a071a47587dc0810ecfe013f505eb893f1807e2a54573637dfbaabd1fb957f23 - jadx-mcp-server-v5.0.0.zip:
5e7d4a4773c125d754f6d9e5a4c457116b29ac54c0ea97fc8187a187cacf4e85
Full Changelog: v4.2.0...v5.0.0
v4.2.0 Rename Package
New MCP tool
rename_package(): Renames a package and all its classes.
- Args:
1.old_package_name: The current package path to be renamed (e.g., "com.abc.def")
2.new_package_name: The target package path (e.g., "com.example.newpkg")
- Returns: The response from the JADX server with rename results.
Full Changelog: v4.1.0...v4.2.0
Checksum SHA256:
- jadx-ai-mcp-4.2.0.jar:
1d78aef061cd90b7de164603d8c7e023b9e62e2c8307a425a936dd2d86c01d48 - jadx-mcp-server-v4.2.0.zip:
5bf6a92e862f08ef92c6e37c8c1c8767f2af9e4bb4a5493348c1132462908bee
v4.1.0 Search Classes By Keyword
New MCP Tool
search_classes_by_keyword(): Search for classes whose source code contains a specific keyword (supports pagination)- During Android APK reverse engineering and security analysis, analysts often need to quickly locate classes that contain specific keywords (e.g., "encrypt", "password", "API_KEY", etc.). The existing get_all_classes() tool only lists class names, and manually searching through decompiled code is time-consuming. This feature provides a powerful search capability that scans the actual source code of all classes.
Changes
- Feature commit by @ljt270864457 in #50
- feat: merged the PR 50, new mcp tool to search classes code for speci… by @zinja-coder in #51
- Full Changelog: v4.0.0...v4.1.0
New Contributors
- @ljt270864457 made their first contribution in #50
Checksum SHA256:
- jadx-ai-mcp-4.1.0.jar:
76ac405e2cdddb4d7af48b4bee3fa046be65a63addddcdf506430130a0c0448e - jadx-mcp-server-4.1.0.zip:
11d3e4096cb1a3d7e2ec503293fea1d2210816499ee3d23d5d1f2947188c58a6
v4.0.0 DEBUGGER MCP TOOLS
New MCP Tools
debug_get_stack_frames(): returns stack frame from Jadx Debugger, can be used to analyze the execution flow of the APK..debug_get_threads(): returns threads insights from Jadx Debuggerdebug_get_variables(): returns variables insights from jJadx Debugger
Demo:
adx-ai-mcp-debug-demo-1.2.mp4
What's Changed
- feat: improved message for class not found error, now this error will plrint class name as well to tell which calss is not found
- refactor: removed .idea folder
- fix: fixed following build error -> JadxAIMCP.java:[56,24] package jadx.gui.plugins does not exist
- refactor: migrated to com.zin.jadxaimcp package name
Full Changelog: v3.3.5...v4.0.0
Checksum SHA256:
- jadx-mcp-server-v4.0.0.zip :
596d8f74694ff7b14230d5825f1b33f0a35be2d4a76380808708be3a48b60585 - jadx-ai-mcp-4.0.0.jar:
bb225f0eb3db9a0929df88c98a05286e351afc7ca8bd25c2f2bad6f8f70a3634
v3.3.5 fix for encoding error
Bug Fix:
- Fixed the the issue #42 - banner unicode character encoding error by catching UnicodeEncodeError and printing normal message, 2 updated banner to v3.3.5
Checksum SHA256:
- jadx-ai-mcp-3.3.5.jar:
7c76cb89ab5b6da0b291dccc54c45c03cf2cd44f05d3b61f2f8fc2738e36a0cc - jadx-mcp-server-v3.3.5.zip:
db3c6b1e096b2c04fe01cfa93e5f91bece9c4edbac303d3f9ad1e93b4a31d91b