Data as of

JADX-AI-MCP for Windsurf: Setup & Config

Windsurf: Connect an MCP assistant to JADX's live Android decompilation context.

What you can do with JADX-AI-MCP in Windsurf

Choose it for assistant-assisted Android reverse engineering inside an active JADX session.

  • Follow references to understand an APK's behavior.
  • Inspect manifest entries, resources, and debugger state together.

Before you start: JADX-AI-MCP in Windsurf

  • Java 11 or newer
  • Python 3.10 or newer
  • JADX with the JADX-AI-MCP plugin installed
  • Companion JADX MCP Server
  • uv

This follows the README's Cherry Studio configuration. Replace the directory with the companion server checkout. The plugin and server are separate components; uv venv alone does not start the MCP server.

JADX-AI-MCP Windsurf configuration

  1. Choose Windsurf configuration scope

    For JADX-AI-MCP, open macOS/Linux: ~/.codeium/windsurf/mcp_config.json Windows: %USERPROFILE%\.codeium\windsurf\mcp_config.json. Merge into mcpServers; remote endpoints use serverUrl.

  2. Add JADX-AI-MCP to Windsurf

    Use the jadx-ai-mcp entry below in mcpServers. Keep JADX-AI-MCP's documented stdio connection fields and your other Windsurf entries.

  3. Check JADX-AI-MCP in Windsurf

    JADX-AI-MCP: Refresh MCP in Windsurf settings and inspect Cascade’s tools.

Config file · macOS/Linux: ~/.codeium/windsurf/mcp_config.json

Windows: %USERPROFILE%\.codeium\windsurf\mcp_config.json

JSON
{
  "mcpServers": {
    "jadx-ai-mcp": {
      "command": "uv",
      "args": [
        "--directory",
        "path/to/jadx-mcp-server",
        "run",
        "jadx_mcp_server.py"
      ],
      "env": {}
    }
  }
}

JADX-AI-MCP tools available to Windsurf

JADX-AI-MCP's stored tool list documents 29 tools; compare it with Windsurf's connected tool list, because the stored list is not a live check.

fetch_current_class

After refreshing JADX-AI-MCP in Windsurf settings, check Cascade's tool list for fetch_current_class.

Read the selected class name and source from JADX.

get_selected_text

After refreshing JADX-AI-MCP in Windsurf settings, check Cascade's tool list for get_selected_text.

Retrieve text highlighted in the decompiler.

get_all_classes

After refreshing JADX-AI-MCP in Windsurf settings, check Cascade's tool list for get_all_classes.

get_class_source

After refreshing JADX-AI-MCP in Windsurf settings, check Cascade's tool list for get_class_source.

get_method_by_name

After refreshing JADX-AI-MCP in Windsurf settings, check Cascade's tool list for get_method_by_name.

search_method_by_name

After refreshing JADX-AI-MCP in Windsurf settings, check Cascade's tool list for search_method_by_name.

search_classes_by_keyword

After refreshing JADX-AI-MCP in Windsurf settings, check Cascade's tool list for search_classes_by_keyword.

get_methods_of_class

After refreshing JADX-AI-MCP in Windsurf settings, check Cascade's tool list for get_methods_of_class.

get_fields_of_class

After refreshing JADX-AI-MCP in Windsurf settings, check Cascade's tool list for get_fields_of_class.

get_smali_of_class

After refreshing JADX-AI-MCP in Windsurf settings, check Cascade's tool list for get_smali_of_class.

Retrieve a class's smali representation.

get_main_activity_class

After refreshing JADX-AI-MCP in Windsurf settings, check Cascade's tool list for get_main_activity_class.

Resolve the main activity declared in the Android manifest.

get_main_application_classes_code

After refreshing JADX-AI-MCP in Windsurf settings, check Cascade's tool list for get_main_application_classes_code.

Read source for application classes selected through the manifest package.

get_main_application_classes_names

After refreshing JADX-AI-MCP in Windsurf settings, check Cascade's tool list for get_main_application_classes_names.

List application class names associated with the manifest package.

get_android_manifest

After refreshing JADX-AI-MCP in Windsurf settings, check Cascade's tool list for get_android_manifest.

Retrieve the application's AndroidManifest.xml.

get_manifest_component

After refreshing JADX-AI-MCP in Windsurf settings, check Cascade's tool list for get_manifest_component.

Read one manifest component rather than the full document.

get_strings

After refreshing JADX-AI-MCP in Windsurf settings, check Cascade's tool list for get_strings.

get_all_resource_file_names

After refreshing JADX-AI-MCP in Windsurf settings, check Cascade's tool list for get_all_resource_file_names.

get_resource_file

After refreshing JADX-AI-MCP in Windsurf settings, check Cascade's tool list for get_resource_file.

rename_class

After refreshing JADX-AI-MCP in Windsurf settings, check Cascade's tool list for rename_class.

rename_method

After refreshing JADX-AI-MCP in Windsurf settings, check Cascade's tool list for rename_method.

rename_field

After refreshing JADX-AI-MCP in Windsurf settings, check Cascade's tool list for rename_field.

rename_package

After refreshing JADX-AI-MCP in Windsurf settings, check Cascade's tool list for rename_package.

rename_variable

After refreshing JADX-AI-MCP in Windsurf settings, check Cascade's tool list for rename_variable.

Rename a local variable within a method.

debug_get_stack_frames

After refreshing JADX-AI-MCP in Windsurf settings, check Cascade's tool list for debug_get_stack_frames.

Inspect stack frames from the JADX debugger.

debug_get_threads

After refreshing JADX-AI-MCP in Windsurf settings, check Cascade's tool list for debug_get_threads.

Retrieve thread information from the debugger.

debug_get_variables

After refreshing JADX-AI-MCP in Windsurf settings, check Cascade's tool list for debug_get_variables.

Read debugger variable values.

xrefs_to_class

After refreshing JADX-AI-MCP in Windsurf settings, check Cascade's tool list for xrefs_to_class.

Find class and method references targeting a class.

xrefs_to_method

After refreshing JADX-AI-MCP in Windsurf settings, check Cascade's tool list for xrefs_to_method.

Find method references, including override-related methods.

xrefs_to_field

After refreshing JADX-AI-MCP in Windsurf settings, check Cascade's tool list for xrefs_to_field.

Locate methods that access a field.

JADX-AI-MCP: full stored tool descriptions

Troubleshooting JADX-AI-MCP in Windsurf

  • Check uv on the machine running Windsurf's MCP integration for JADX-AI-MCP; refresh MCP and inspect Cascade's tools.
  • JADX-AI-MCP uses stdio here: Windsurf must keep the configured process running; protocol output belongs on stdout and diagnostics on stderr.
  • Known limitation: Requires a plugin plus a separate Python server.
  • Known limitation: Remote setups must distinguish the MCP listener from the JADX plugin connection.
  • General Windsurf troubleshooting lives in the /clients/windsurf guide.

JADX-AI-MCP — details. Windsurf guide

Frequently asked questions

Windsurf reads JADX-AI-MCP under mcpServers in ~/.codeium/windsurf/mcp_config.json on macOS/Linux; Windows uses %USERPROFILE%\.codeium\windsurf\mcp_config.json.

Windsurf's jadx-ai-mcp example uses stdio.

JADX-AI-MCP's Windsurf configuration invokes uv.

JADX-AI-MCP's stored list contains 29 tools, including fetch_current_class, get_selected_text, get_all_classes. Compare those names with Windsurf's connected tool list; the stored list is not a live check.

Yes. Tools expose strings.xml, resource filenames, individual resources, and manifest content.

No. The MCP listener has its own host and port, while separate JADX host and port flags identify the plugin.