Skip to content

Releases: zinja-coder/jadx-ai-mcp

v6.0.0 The Modular Architecture Update

29 Dec 19:34

Choose a tag to compare

Release v6.0.0: The Modular Architecture Update 🏗️

ChatGPT Image Dec 29, 2025, 11_56_12 PM

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.java now 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.
  • Modular Python Server: The jadx_mcp_server.py script 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.
  • 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.java into modular components.
  • Implemented McpServer for centralized Javalin management.
  • Created PluginMenu for UI interactions.
  • Modularized Python MCP server into src/server package.

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

05 Dec 00:26
4a36539

Choose a tag to compare

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

27 Nov 18:20
f6701db

Choose a tag to compare

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

21 Nov 11:46
3914674

Choose a tag to compare

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

New Contributors

Checksum SHA256:

  • jadx-ai-mcp-4.1.0.jar: 76ac405e2cdddb4d7af48b4bee3fa046be65a63addddcdf506430130a0c0448e
  • jadx-mcp-server-4.1.0.zip: 11d3e4096cb1a3d7e2ec503293fea1d2210816499ee3d23d5d1f2947188c58a6

v4.0.0 DEBUGGER MCP TOOLS

04 Nov 23:31
3c64aaa

Choose a tag to compare

New MCP Tools

  1. debug_get_stack_frames() : returns stack frame from Jadx Debugger, can be used to analyze the execution flow of the APK..
  2. debug_get_threads() : returns threads insights from Jadx Debugger
  3. debug_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

31 Oct 16:47
4c40c10

Choose a tag to compare

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

27 Oct 19:24
d3599ef

Choose a tag to compare

Bug Fix:

Checksum SHA256:

  • jadx-ai-mcp-3.3.4.jar: d328c808e933125ed2d427f6f2e4448051e8a16c119be459ff576631495c1922
  • jadx-mcp-server-v3.3.4.zip: 34725fcf948e31f54197ff1e206d750ea33b28c14791b8fa1d75240fa13cd080

v3.3.3 HotFix and Banner

22 Oct 08:51
0a42934

Choose a tag to compare

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

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

16 Oct 23:47

Choose a tag to compare

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.sh script 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

11 Sep 07:47

Choose a tag to compare

What's Changed

  • fix(plugin): Fix method renaming logic in JadxAIMCP plugin by @badmonkey7 in #26

New Contributors

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