Releases: zinja-coder/jadx-ai-mcp
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
v3.3.4
Bug Fix:
- Fixed the dependency issue in jadx mcp server zinja-coder/jadx-mcp-server#23
Checksum SHA256:
- jadx-ai-mcp-3.3.4.jar:
d328c808e933125ed2d427f6f2e4448051e8a16c119be459ff576631495c1922 - jadx-mcp-server-v3.3.4.zip:
34725fcf948e31f54197ff1e206d750ea33b28c14791b8fa1d75240fa13cd080
v3.3.3 HotFix and Banner
What's Changed
- Bugfix37 by @ljt270864457 in #38
- Test implemented for bug #37 in test.sh
- feat: implemented banner for ASCII title, version by in #39
New Contributors
- @ljt270864457 made their contribution in https://github.com/zinja-coder/jadx-ai-mcp/pull/#38 and helped fixing issue #37 ->
Bug: Inner classes with $ symbol cannot be retrieved via /class-source endpoint
Full Changelog: v3.3.2...v3.3.3
Checksum SHA256:
- jadx-ai-mcp-3.3.3.jar:
f6246c51f365f1ab279e3d7dfef44696f4ba9e439166bf7212cc2b125745efe4 - jadx-mcp-server-v3.3.3.zip:
27accb429681b6f5348d0016dc598e6b1861dbd55a92e387919d76d20267b158
v3.3.2 Bug Fixes
Bug Fixes
- fixed the following error -> ERROR - Error in paginated request to strings: the JSON object must be str, bytes or bytearray, not dict
- fixed the following error -> "HTTP error 400: {"error":"Missing required parameter 'class'"}." in following mcp tools -> get_fields_of_class, get_methods_of_class
- fixed the following error -> Unexpected error: Expecting value: line 1 column 1 (char 0).
- Added dict as a return type in MCP tools to keep up to date with FastMCP -> this solves #33
Optimization
- Performed heavy code optimization on jadx_mcp_server.py see full changelog for details.
- Improved the
test.shscript to test the both plugin and server thoroughly.
Full Changelog: v3.3.1...v3.3.2
Checksum SHA256:
- jadx-ai-mcp-3.3.2.jar -
f72801d9c666c59b0f0fa9412f8e0de5ec8586544adb508e0b54da5d6902d27c - jadx-mcp-server-v3.3.2.zip -
1a99cb568be8bb3fb75c4b3cd584df7a96710a46a3308280168404be261fecce
v3.3.1
What's Changed
- fix(plugin): Fix method renaming logic in JadxAIMCP plugin by @badmonkey7 in #26
New Contributors
- @tbodt made their first contribution in https://github.com/zinja-coder/jadx-mcp-server/pull/#12
Full Changelog: v3.3.0...v3.3.1
Checksum sha256:
- jadx-mcp-server-v3.3.1.zip :
0ef02846889a20281f0828bac3a06b9d3a50661b2041ebc4695e024b9b59feca - jadx-ai-mcp-3.3.1.jar :
db7d44f270dbbcee8bf17a41c82d3061379123f0c19d8ba5c797bcb1a0322b78