{"passport":{"unfragile":{"@version":"1.0","version":"2026-05","artifact":{"id":"github-zinja-coder--jadx-ai-mcp","slug":"zinja-coder--jadx-ai-mcp","name":"jadx-ai-mcp","type":"mcp","url":"https://github.com/zinja-coder/jadx-ai-mcp","page_url":"https://unfragile.ai/zinja-coder--jadx-ai-mcp","categories":["mcp-servers"],"tags":["ai","java","llm","mcp","mcp-server","mcp-servers","mobile","model-context-protocol","model-context-protocol-servers","pentesting","reverse-engineering","sast","vapt"],"pricing":{"model":"open_source","free":true,"starting_price":null},"status":"active","verified":false},"capabilities":[{"id":"github-zinja-coder--jadx-ai-mcp__cap_0","uri":"capability://search.retrieval.mcp.bridged.cross.reference.tracking.for.decompiled.android.code","name":"mcp-bridged cross-reference tracking for decompiled android code","description":"Exposes JADX's internal call graph and xref (cross-reference) APIs through MCP tool calls, enabling LLMs to follow method invocations and field accesses across the entire decompiled codebase. The JADX-MCP-Server translates incoming MCP requests into HTTP calls to the plugin's /xref endpoint, which queries JADX's JavaClass entity relationships and returns structured call chains. This allows AI models to understand data flow and dependency graphs without manual navigation.","intents":["I need to understand where a specific method is called throughout the entire APK to trace a security vulnerability","Show me all references to a suspicious API call to identify potential attack surfaces","I want to map the call chain from an entry point to understand the execution flow"],"best_for":["Security researchers performing SAST (Static Application Security Testing) on Android apps","Reverse engineers analyzing obfuscated code to understand control flow","Penetration testers identifying vulnerability chains across multiple classes"],"limitations":["Xref tracking is limited to decompiled Java code; Smali bytecode xrefs require separate analysis","Performance degrades on very large APKs (>100MB) due to full graph traversal","Cannot track dynamic method invocation via reflection without additional runtime instrumentation"],"requires":["JADX GUI with jadx-ai-mcp plugin installed","JADX-MCP-Server running (Python 3.8+)","APK already decompiled and loaded in JADX","MCP client (Claude Desktop, Cherry Studio, or compatible)"],"input_types":["class name (string)","method signature (string)","field name (string)"],"output_types":["structured JSON with call graph nodes","method signatures with line numbers","class hierarchy relationships"],"categories":["search-retrieval","code-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-zinja-coder--jadx-ai-mcp__cap_1","uri":"capability://data.processing.analysis.android.resource.inspection.and.manifest.analysis.via.mcp","name":"android resource inspection and manifest analysis via mcp","description":"Exposes AndroidManifest.xml, strings.xml, layout files, and other Android resources through MCP tools that parse and return structured data about app permissions, entry points, and UI definitions. The JADX plugin extracts these resources from the APK's resource directory and serves them as JSON via HTTP endpoints, which the MCP server translates into tool responses. This enables LLMs to understand app capabilities, permissions, and potential attack surfaces without manual XML parsing.","intents":["What permissions does this app request and what security implications do they have?","Find all exported activities and services that could be entry points for exploitation","Show me the app's string resources to identify hardcoded secrets or API endpoints"],"best_for":["Security auditors checking for overprivileged permissions or exposed components","Reverse engineers understanding app architecture and entry points","Compliance teams verifying app behavior against security policies"],"limitations":["Obfuscated or encrypted resources may not be parseable; requires manual decryption","Layout files are returned as raw XML; no visual rendering or UI tree analysis","Resource IDs are numeric; string resolution requires cross-referencing with strings.xml"],"requires":["APK loaded in JADX with resource extraction enabled","JADX-MCP-Server running","MCP client connected"],"input_types":["resource type filter (string: 'manifest', 'strings', 'layout')","optional resource name or ID (string)"],"output_types":["structured JSON with permissions array","component definitions (activities, services, receivers, providers)","string resource key-value pairs","raw XML for layout files"],"categories":["data-processing-analysis","search-retrieval"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-zinja-coder--jadx-ai-mcp__cap_10","uri":"capability://code.generation.editing.method.source.code.retrieval.with.line.number.mapping","name":"method source code retrieval with line number mapping","description":"Retrieves the complete source code of a specific method from the decompiled APK, including line numbers, parameter definitions, and return type information. The JADX plugin queries its JavaClass model to extract the method's source code and maps it back to the original line numbers in the decompiled file. This enables LLMs to analyze method implementations in detail and correlate them with other analysis results (e.g., xrefs, stack traces).","intents":["Show me the full source code of this method so I can understand its implementation","What does this method do? I need to see the complete code, not just the signature","Retrieve the source code for this method and correlate it with the xref information"],"best_for":["Reverse engineers analyzing method implementations in detail","Security researchers examining suspicious method logic","Developers understanding third-party library implementations"],"limitations":["Decompiled code may be incomplete or incorrect for obfuscated methods","Line numbers are relative to the decompiled file, not the original source","Very large methods may produce output that exceeds LLM context windows","Smali-only methods have no Java source code; Smali must be used instead"],"requires":["APK loaded in JADX","JADX-MCP-Server running","MCP client"],"input_types":["class name (string, fully qualified)","method signature (string: name and parameter types)"],"output_types":["method source code as text","line numbers","method metadata (return type, modifiers, exceptions)"],"categories":["code-generation-editing","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-zinja-coder--jadx-ai-mcp__cap_11","uri":"capability://data.processing.analysis.apk.metadata.and.configuration.analysis.with.build.information.extraction","name":"apk metadata and configuration analysis with build information extraction","description":"Extracts APK-level metadata including version information, build configuration, certificate details, and other manifest-level data. The JADX plugin accesses the APK's metadata through its resource extraction APIs and returns structured information about the app's build, signing, and configuration. This enables LLMs to understand the app's provenance, versioning, and build-time configuration without manual APK inspection.","intents":["What version of this app am I analyzing? When was it built?","Who signed this APK? Is it signed with a known certificate?","What build configuration was used for this app? Are there debug flags enabled?"],"best_for":["Security researchers verifying app authenticity and build provenance","Compliance teams checking app versioning and build information","Reverse engineers understanding app release history and variants"],"limitations":["Certificate information is limited to what's in the APK; revocation status is not checked","Build configuration may be incomplete if the app was stripped or obfuscated","Version information is from the manifest; actual app version at runtime may differ","No access to build logs or source control information"],"requires":["APK loaded in JADX","JADX-MCP-Server running","MCP client"],"input_types":["APK (implicitly, through JADX)"],"output_types":["structured JSON with APK metadata","version information (versionCode, versionName)","certificate details (issuer, subject, validity)","build configuration flags"],"categories":["data-processing-analysis","search-retrieval"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-zinja-coder--jadx-ai-mcp__cap_2","uri":"capability://code.generation.editing.smali.bytecode.access.and.analysis.for.obfuscated.code","name":"smali bytecode access and analysis for obfuscated code","description":"Provides direct access to Smali (Android bytecode) representations of methods when Java decompilation is incomplete, obfuscated, or fails. The JADX plugin exposes a /smali endpoint that returns the low-level bytecode instructions for a given method, allowing LLMs to analyze register operations, control flow, and API calls at the bytecode level. This is critical for analyzing heavily obfuscated or packed APKs where Java decompilation produces unreadable output.","intents":["The Java decompilation looks corrupted; show me the raw Smali bytecode to understand what this method actually does","I need to analyze obfuscated crypto operations at the bytecode level to understand the algorithm","Show me the Smali for this method to verify if the decompiler missed any important logic"],"best_for":["Reverse engineers analyzing heavily obfuscated or packed Android apps","Security researchers studying malware bytecode patterns","Developers debugging decompilation failures or inconsistencies"],"limitations":["Smali is low-level and verbose; requires expertise to interpret register operations and control flow","No automatic deobfuscation; variable names and control flow remain cryptic","Large methods produce very long Smali output; context window limitations may truncate results"],"requires":["APK loaded in JADX","JADX-MCP-Server running","Method must exist in the APK (cannot synthesize missing methods)"],"input_types":["class name (string)","method signature (string)"],"output_types":["Smali bytecode as text","register allocation and control flow instructions","API method calls at bytecode level"],"categories":["code-generation-editing","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-zinja-coder--jadx-ai-mcp__cap_3","uri":"capability://planning.reasoning.automated.vulnerability.detection.and.sast.recommendations.via.llm.analysis","name":"automated vulnerability detection and sast recommendations via llm analysis","description":"Orchestrates a workflow where the MCP server provides the LLM with code snippets, resource data, and xref information, enabling the AI to perform Static Application Security Testing (SAST) by identifying insecure API usage, hardcoded secrets, and vulnerable patterns. The system does not perform hardcoded pattern matching; instead, it gives the LLM full context (source code, permissions, entry points) and relies on the model's reasoning to identify vulnerabilities. This leverages the LLM's semantic understanding of security rather than regex-based rules.","intents":["Analyze this APK for common security vulnerabilities like hardcoded credentials, insecure crypto, or SQL injection","Find all uses of dangerous APIs (e.g., Runtime.exec, WebView.loadUrl) and assess their security impact","Identify potential data exfiltration paths by analyzing network calls and file access patterns"],"best_for":["Security teams performing automated SAST on Android apps before release","Penetration testers analyzing third-party APKs for vulnerabilities","Compliance auditors checking for insecure patterns in legacy apps"],"limitations":["Requires a capable LLM (Claude 3+) to reason about security; weaker models may miss subtle vulnerabilities","Cannot detect runtime vulnerabilities or logic flaws that require dynamic analysis","False positives are possible if the LLM misinterprets benign code patterns","Performance depends on APK size and LLM context window; very large APKs may require chunking"],"requires":["APK loaded in JADX","JADX-MCP-Server running","LLM client with security reasoning capability (Claude 3 Opus or equivalent)","Sufficient context window for full APK analysis (varies by app size)"],"input_types":["APK (implicitly, through JADX)","optional security focus areas (string: 'crypto', 'network', 'file-access', etc.)"],"output_types":["natural language vulnerability descriptions","code snippets highlighting vulnerable patterns","severity assessments and remediation suggestions","structured JSON with vulnerability metadata"],"categories":["planning-reasoning","safety-moderation"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-zinja-coder--jadx-ai-mcp__cap_4","uri":"capability://code.generation.editing.intelligent.class.and.method.renaming.with.obfuscation.reversal","name":"intelligent class and method renaming with obfuscation reversal","description":"Enables the LLM to suggest and execute renames for obfuscated classes, methods, and variables based on semantic analysis of their usage patterns and functionality. The MCP server provides a rename tool that the LLM can invoke with a class/method name and a suggested meaningful name; the JADX plugin applies the rename through its refactoring API and persists it to the project. This transforms obfuscated identifiers (e.g., class 'a', method 'b') into human-readable names (e.g., 'NetworkManager', 'sendAuthToken') based on AI reasoning about their purpose.","intents":["This class is clearly a network manager based on its methods; rename it from 'a' to 'NetworkManager'","Suggest meaningful names for all obfuscated classes and methods in this package based on their functionality","I've identified that method 'xyz' performs encryption; rename it to 'encryptPayload' for clarity"],"best_for":["Reverse engineers working with heavily obfuscated APKs who need to understand code structure","Security researchers documenting malware behavior with readable variable names","Teams collaborating on reverse engineering projects who need consistent naming conventions"],"limitations":["Renames are heuristic-based; the LLM may suggest incorrect names if it misunderstands functionality","Renaming is persistent in the JADX project; incorrect renames require manual correction","Cannot rename classes/methods that are referenced via reflection or dynamic invocation","Renames do not propagate to external tools or reports; they are local to the JADX project"],"requires":["APK loaded in JADX with write permissions to the project","JADX-MCP-Server running","LLM client capable of semantic code analysis"],"input_types":["current class/method name (string)","suggested new name (string)","optional reasoning for the rename (string)"],"output_types":["confirmation of rename success","updated xref information reflecting the new name","list of all affected references"],"categories":["code-generation-editing","planning-reasoning"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-zinja-coder--jadx-ai-mcp__cap_5","uri":"capability://tool.use.integration.http.to.mcp.protocol.translation.with.stateless.tool.invocation","name":"http-to-mcp protocol translation with stateless tool invocation","description":"The JADX-MCP-Server (Python, built on FastMCP) acts as a protocol adapter that translates incoming MCP tool calls (JSON-RPC format) from LLM clients into HTTP requests to the JADX plugin's internal HTTP server (port 8650). Each tool call is stateless: the server extracts parameters, constructs an HTTP request, waits for the response, and returns the result to the LLM. This decouples the LLM client from the JADX plugin, allowing multiple clients to connect to the same plugin instance and enabling integration with any MCP-compatible LLM client.","intents":["I want to use Claude Desktop to analyze an APK; how do I connect it to JADX?","Can I use multiple LLM clients (Claude, ChatGPT, local Ollama) with the same JADX instance?","I need to integrate JADX analysis into my custom LLM application; what's the protocol?"],"best_for":["Security teams using Claude Desktop or other MCP clients for Android analysis","Developers building custom LLM applications that need JADX integration","Organizations wanting to standardize on MCP for tool integration"],"limitations":["HTTP requests add ~50-200ms latency per tool call; not suitable for real-time interactive analysis","Stateless design means no session persistence; context must be re-provided for each request","JADX plugin must be running and accessible on the network; no built-in failover or load balancing","Tool call parameters are not validated by the MCP server; invalid requests may fail silently"],"requires":["JADX GUI with jadx-ai-mcp plugin installed and running","JADX-MCP-Server running (Python 3.8+, FastMCP framework)","MCP client (Claude Desktop, Cherry Studio, or compatible)","Network connectivity between MCP server and JADX plugin (localhost or LAN)"],"input_types":["MCP tool call (JSON-RPC format)","tool name (string)","tool parameters (JSON object)"],"output_types":["MCP tool result (JSON-RPC response)","structured data from JADX plugin","error messages if tool call fails"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-zinja-coder--jadx-ai-mcp__cap_6","uri":"capability://search.retrieval.codebase.aware.code.search.with.keyword.and.semantic.filtering","name":"codebase-aware code search with keyword and semantic filtering","description":"Provides MCP tools for searching the decompiled APK by class name, method name, or code content using keyword matching. The JADX plugin exposes /search endpoints that query its internal class index and source code, returning matching classes, methods, and code snippets. The search supports filtering by package, access modifiers, and other metadata. This enables LLMs to locate relevant code without manual navigation through the class hierarchy.","intents":["Find all classes related to networking or HTTP communication in this APK","Search for methods that use encryption APIs (e.g., Cipher, MessageDigest)","Locate all hardcoded strings that look like API endpoints or credentials"],"best_for":["Reverse engineers exploring large APKs to find specific functionality","Security researchers identifying all uses of sensitive APIs","Developers understanding third-party library integration in an APK"],"limitations":["Keyword search is literal; does not understand semantic similarity or synonyms","Search results are limited to decompiled Java code; Smali-only methods are not indexed","Large APKs may return thousands of results; filtering and pagination are required","Search performance degrades on APKs with many classes (>10,000 classes)"],"requires":["APK loaded in JADX","JADX-MCP-Server running","MCP client"],"input_types":["search query (string: class name, method name, or code snippet)","optional filters (JSON: package, access modifier, return type)"],"output_types":["list of matching classes with metadata","list of matching methods with signatures and line numbers","code snippets with search term highlighted","structured JSON with result metadata"],"categories":["search-retrieval","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-zinja-coder--jadx-ai-mcp__cap_7","uri":"capability://planning.reasoning.runtime.debugging.context.integration.with.stack.trace.analysis","name":"runtime debugging context integration with stack trace analysis","description":"During active JADX debugging sessions, the MCP server can access runtime context including variable values, stack traces, and breakpoint information through JADX's debugging APIs. The system exposes tools that allow LLMs to inspect the current execution state, analyze stack frames, and correlate runtime behavior with static code analysis. This bridges the gap between static analysis and runtime behavior, enabling the AI to understand how code executes in practice.","intents":["I hit a breakpoint in JADX; show me the current variable values and stack trace so I can understand the execution flow","Analyze this crash stack trace and correlate it with the source code to identify the root cause","What are the values of these variables at this point in execution? Are they what I expect?"],"best_for":["Reverse engineers debugging APKs in JADX to understand runtime behavior","Security researchers analyzing malware execution paths","Developers troubleshooting crashes or unexpected behavior in third-party apps"],"limitations":["Requires active debugging session in JADX; not available for static analysis only","Variable inspection is limited to the current execution context; historical values are not available","Obfuscated variable names make it difficult to correlate runtime values with source code","Stack trace analysis depends on symbol information; stripped binaries provide limited context"],"requires":["JADX GUI with debugging enabled","APK running in an Android emulator or device connected to JADX debugger","JADX-MCP-Server running","MCP client"],"input_types":["stack frame index (integer)","variable name (string)","optional filter for stack trace (string: package, class, method)"],"output_types":["variable values as JSON","stack trace with source file and line number","local variables and their types","method parameters and return values"],"categories":["planning-reasoning","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-zinja-coder--jadx-ai-mcp__cap_8","uri":"capability://data.processing.analysis.multi.language.class.structure.extraction.with.metadata.preservation","name":"multi-language class structure extraction with metadata preservation","description":"Extracts complete class definitions including fields, methods, constructors, annotations, and inheritance relationships from decompiled Java code. The JADX plugin uses its JavaClass entity model to serialize class metadata as structured JSON, including method signatures, return types, parameter types, access modifiers, and annotations. This enables LLMs to understand class architecture without reading raw source code and to reason about type safety and API contracts.","intents":["Show me the structure of this class: all fields, methods, and their signatures","What interfaces does this class implement? What are the method contracts?","List all public methods in this class so I can understand its API"],"best_for":["Reverse engineers understanding class hierarchies and API contracts","Security researchers analyzing class relationships to identify attack surfaces","Developers integrating third-party libraries and needing to understand their APIs"],"limitations":["Metadata extraction is limited to decompiled Java; Smali-only classes have incomplete metadata","Annotations may be stripped or obfuscated; full annotation values are not always available","Generic type information may be lost during decompilation; raw types are returned","Inner classes and anonymous classes are represented differently; hierarchy may be unclear"],"requires":["APK loaded in JADX","JADX-MCP-Server running","MCP client"],"input_types":["class name (string, fully qualified)"],"output_types":["structured JSON with class metadata","field definitions with types and modifiers","method signatures with parameters and return types","inheritance and interface information","annotations and their values"],"categories":["data-processing-analysis","code-generation-editing"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-zinja-coder--jadx-ai-mcp__cap_9","uri":"capability://automation.workflow.distributed.architecture.with.plugin.server.separation.for.scalability","name":"distributed architecture with plugin-server separation for scalability","description":"The system is architected as two independent components: the JADX-AI-MCP Plugin (Java, runs within JADX GUI) and the JADX-MCP-Server (Python, standalone process). The plugin exposes an HTTP API on port 8650; the server translates MCP calls to HTTP requests. This separation enables multiple MCP clients to connect to a single JADX instance, allows the server to run on a different machine, and decouples plugin updates from server updates. The architecture supports horizontal scaling by running multiple servers against the same plugin.","intents":["I want multiple team members to analyze the same APK in JADX simultaneously using different LLM clients","Can I run the MCP server on a remote machine and connect to JADX on my local network?","How do I scale this to support many concurrent analysis requests?"],"best_for":["Teams collaborating on reverse engineering with shared JADX instances","Organizations deploying JADX analysis at scale with multiple clients","Developers building custom LLM applications that need to share JADX resources"],"limitations":["Plugin and server must be kept in sync; version mismatches may cause tool call failures","HTTP communication between server and plugin is not encrypted by default; requires TLS for production","No built-in authentication or authorization; all clients have equal access to the APK","Concurrent requests to the same APK may cause contention; no request queuing or prioritization"],"requires":["JADX GUI with jadx-ai-mcp plugin installed","JADX-MCP-Server running (Python 3.8+)","Network connectivity between server and plugin","MCP client(s)"],"input_types":["plugin URL (string: http://localhost:8650 or remote address)","MCP server configuration (JSON: port, authentication, logging)"],"output_types":["MCP server status and health metrics","plugin connectivity status","request/response logs"],"categories":["automation-workflow","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0}],"trust":{"score":46,"verified":false,"data_access_risk":"high","permissions":["JADX GUI with jadx-ai-mcp plugin installed","JADX-MCP-Server running (Python 3.8+)","APK already decompiled and loaded in JADX","MCP client (Claude Desktop, Cherry Studio, or compatible)","APK loaded in JADX with resource extraction enabled","JADX-MCP-Server running","MCP client connected","APK loaded in JADX","MCP client","Method must exist in the APK (cannot synthesize missing methods)"],"failure_modes":["Xref tracking is limited to decompiled Java code; Smali bytecode xrefs require separate analysis","Performance degrades on very large APKs (>100MB) due to full graph traversal","Cannot track dynamic method invocation via reflection without additional runtime instrumentation","Obfuscated or encrypted resources may not be parseable; requires manual decryption","Layout files are returned as raw XML; no visual rendering or UI tree analysis","Resource IDs are numeric; string resolution requires cross-referencing with strings.xml","Decompiled code may be incomplete or incorrect for obfuscated methods","Line numbers are relative to the decompiled file, not the original source","Very large methods may produce output that exceeds LLM context windows","Smali-only methods have no Java source code; Smali must be used instead","builder identity is not verified yet","no observed match outcomes yet"],"rank_breakdown":{"adoption":0.49099410334714344,"quality":0.34,"ecosystem":0.6000000000000001,"match_graph":0.25,"freshness":0.9,"weights":{"adoption":0.25,"quality":0.25,"ecosystem":0.15,"match_graph":0.23,"freshness":0.12}},"observed_outcomes":{"matches":0,"success_rate":0,"avg_confidence":0,"top_intents":[],"last_matched_at":null},"maintenance":{"status":"active","updated_at":"2026-05-24T12:16:22.064Z","last_scraped_at":"2026-05-03T13:56:59.049Z","last_commit":"2026-04-20T08:13:17Z"},"community":{"stars":1926,"forks":194,"weekly_downloads":null,"model_downloads":null,"model_likes":null}},"distribution":{"claim_url":"https://unfragile.ai/submit?claim=zinja-coder--jadx-ai-mcp","compare_url":"https://unfragile.ai/compare?artifact=zinja-coder--jadx-ai-mcp"}},"signature":"JPm9xjU8A7obJytttdBkhC3/da6ToaEuzpxlXZzY3+01O8JQpHM5K7SS0JHKZ+3RIn9joZibSIu/nQjLg8vqDw==","signedAt":"2026-06-17T03:26:46.091Z","signedBy":"unfragile.ai","version":1},"_links":{"self":"https://unfragile.ai/api/v1/passport/zinja-coder--jadx-ai-mcp","artifact":"https://unfragile.ai/zinja-coder--jadx-ai-mcp","verify":"https://unfragile.ai/api/v1/verify?slug=zinja-coder--jadx-ai-mcp","publicKey":"https://unfragile.ai/api/v1/trust-passport-public-key","spec":"https://unfragile.ai/trust","schema":"https://unfragile.ai/schema.json","docs":"https://unfragile.ai/docs"}}