android-apk-orchestrator
Provides orchestrated reverse engineering of Android APK files, including decompilation, native library analysis, malware inspection, API extraction, protocol reverse engineering, and consolidated report generation.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@android-apk-orchestratoranalyze this APK and generate the unified report"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Android APK Orchestrator
把这七个 Codex 安卓逆向 skill 合成 一个 skill + 一个 MCP 服务器:
android-reverse-engineeringghidra_idareverseengineeringskillghidra-rpc-mainprotocol-reverse-engineeringreverse-api-engineer-mainreverse-engineering-android-malware-with-jadxreverse-engineering-tools
APK 进来后,调度器按 DAG 把工作分给七个 specialist agent 并行跑,再汇总 REPORT.md。Codex 父代理只读本 skill,子代理才去加载各自原来的 SKILL.md。
架构
User / Codex
| $android-apk-orchestrator
v
MCP android-apk-orchestrator
| apk_orchestrate
+-- wave1 parallel: decompile | native | tools
+-- wave2 parallel: malware | api | protocol | ghidra_rpc
v
case/
original/ 原始 APK 副本
fingerprint.json
derived/jadx/ 反编译
derived/native/ .so
derived/api_client.py
agents/<name>/result.json
REPORT.mdRelated MCP server: Frida Agent MCP
安装
cd D:\HaizhuAI\android-apk-orchestrator
powershell -ExecutionPolicy Bypass -File .\scripts\install.ps1安装脚本会:
uv sync装 MCP / androguardjunction
~/plugins/android-apk-orchestratorjunction
~/.codex/skills/android-apk-orchestrator写入 Codex
config.toml的 MCP 条目
然后新开一条 Codex 线程。
命令
uv run python -m android_apk_orchestrator agents
uv run python -m android_apk_orchestrator fingerprint .\app.apk
uv run python -m android_apk_orchestrator orchestrate .\app.apk -o .\app_case
uv run python -m android_apk_orchestrator orchestrate .\app.apk -o .\app_case --extras .\capture.har --agents decompile,malware,api
uv run python -m android_apk_orchestrator serve无参数启动即 MCP stdio。
MCP tools
apk_list_agentsapk_create_caseapk_fingerprintapk_orchestrateapk_dispatchapk_statusapk_report
Codex 用法
把 APK 丢给 Codex 并说「反编译 / 安卓逆向 / 提取 API」。本 skill 会隐式激活,先跑 apk_orchestrate,再按 references/agent-contracts.md 把七个插件分给子智能体。
测试
uv run pytest -qAvailable Tools
7 toolsapk_create_caseC
Hash and preserve an APK/XAPK, then write a case workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| extras | No | ||
| apk_path | Yes | ||
| case_dir | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does reveal the main side effects: hashing the APK, preserving it, and writing a case workspace, which at least implies a non-destructive operation. However, it doesn't disclose what 'preserve' concretely does (copy, move, archive), whether an existing case_dir is overwritten or appended to, whether directories are created, or what failure modes exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of about a dozen words with no filler, and the action sequence is front-loaded ('Hash and preserve... then write...'). It earns its place efficiently, though its brevity is partly responsible for the gaps in usage and parameter guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool that creates a case workspace with side effects, the description is a skeleton. It doesn't explain the purpose of extras, the relationship between apk_path and case_dir, what the resulting workspace contains, or behavior when the case already exists. The presence of an output schema reduces the need to describe return values, but the input-side ambiguities remain unresolved.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it only does so partially. It tells the agent that apk_path refers to an APK/XAPK file and hints that 'case workspace' maps to case_dir, but it says nothing about the extras parameter at all. With three parameters and zero schema descriptions, leaving one parameter completely unexplained is a meaningful gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states specific actions ('Hash and preserve') on a specific resource ('an APK/XAPK') followed by a concrete outcome ('write a case workspace'). This clearly names the tool's function and distinguishes it from siblings like apk_fingerprint, which would only fingerprint, by adding the case-workspace creation step. However, it doesn't explicitly contrast against siblings, and 'preserve' is slightly ambiguous about what preservation entails.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. Given sibling tools like apk_fingerprint (which likely overlaps on hashing) and apk_dispatch/apk_orchestrate (which may handle case workflows), an agent gets no signal about which tool fits which scenario. The 'preserve' wording implies evidence-collection use, but that is never made explicit, and no exclusions or prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apk_dispatchB
Run selected specialist agents in wave order against an existing case.
| Name | Required | Description | Default |
|---|---|---|---|
| agents | No | ||
| case_dir | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions that agents run 'in wave order' and that the case must already exist, but it does not disclose side effects, whether the operation is synchronous or asynchronous, whether the case is modified, or any permission or safety considerations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every word contributes to the meaning, and the verb + object structure makes the purpose immediately scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description is still under-specified for a tool with no annotations, multiple siblings, and no explicit usage conditions. It leaves 'wave order' undefined, does not explain expected agent input values, and gives no guidance on how this relates to apk_orchestrate or apk_list_agents, making it incomplete for confident tool selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does add meaning by tying 'selected specialist agents' to the agents parameter and 'existing case' to case_dir, which goes beyond the bare schema titles. However, it does not explain accepted values, formats, or the meaning of the default null for agents, so it only partially compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Run'), a resource ('specialist agents'), and a condition ('against an existing case'). It communicates the core purpose well, but it does not explicitly differentiate itself from the sibling apk_orchestrate, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'against an existing case' implies the tool should be used only after a case exists, which is useful contextual guidance. However, there is no explicit mention of when not to use it, no reference to alternatives like apk_orchestrate or apk_create_case, and no guidance on prerequisites such as first listing available agents.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apk_fingerprintA
Fast framework/HTTP/SDK/native fingerprint without a full decompile.
| Name | Required | Description | Default |
|---|---|---|---|
| apk_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full disclosure burden. It does add genuine behavioral context — 'fast' and 'without a full decompile' signal a lightweight, presumably non-destructive analysis pass. But it is silent on side effects, whether output is persisted to a case/file, preconditions on the APK, and failure behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single nine-word sentence that front-loads the operation and scope, then ends with the cost qualifier ('without a full decompile'). Every word carries signal with zero filler or repetition of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-required-parameter tool with an output schema present, the core action is adequately covered and return values need not be re-explained. But the description omits how this fits the sibling workflow (e.g., whether a case must exist first), any preconditions on the APK, and what consuming the fingerprint entails. The output schema mitigates the return-format gap, but overall context is thin.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description never mentions apk_path explicitly, so the burden is on the description to compensate. The tool name and fingerprinting context make it inferable that apk_path is the path of the APK to fingerprint, but no format, locality (local vs. remote), or validation semantics are given. Weak compensation for a low-coverage schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific operation — fingerprinting an APK — with an explicit scope: framework/HTTP/SDK/native characteristics. The qualifier 'without a full decompile' plus the unique 'fingerprint' concept cleanly separates it from the sibling suite (create_case, dispatch, status, report, etc.), none of which overlap. It stops short of 5 because the verb is implicit ('fingerprint' used as a noun-as-verb) and it doesn't state what form the fingerprint output takes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Without a full decompile' and 'fast' implicitly position this as the lightweight option when a quick fingerprint suffices, implying that a full decompile path is the alternative. However, no sibling tool is named, and there is no explicit when-to-use/when-not-to-use guidance relative to the case/dispatch/orchestrate workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apk_list_agentsA
List the seven specialist agents, source skills, and availability.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does state the action and output content, but it does not explicitly address side effects, whether the operation is read-only, or edge behavior such as whether unavailable agents are omitted or listed as unavailable. The 'List' verb implies safety, but only implicitly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. Every word conveys needed information: the action, the target entities, and the specific fields returned.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, output-schema-bearing listing tool, the description is largely complete: it names the exact content of the response. The only gap is the absence of explicit guidance about when to use this tool in a workflow, which is a minor omission given the low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the input schema is empty with 100% schema description coverage. There is nothing for the description to add about parameters, so the baseline of 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'List the seven specialist agents' and names the returned content ('source skills, and availability'). This clearly distinguishes it from sibling tools like apk_dispatch or apk_report, which perform different actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied by the verb 'List' and by being the only listing tool among its siblings, but the description does not explicitly state when to use it versus alternatives or how it relates to preceding actions like apk_dispatch. There is no exclusions or conditional guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apk_orchestrateC
Run the full 7-agent Android reverse pipeline and write REPORT.md.
| Name | Required | Description | Default |
|---|---|---|---|
| agents | No | ||
| extras | No | ||
| apk_path | Yes | ||
| case_dir | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool runs a multi-agent pipeline and writes REPORT.md, which is useful, but it omits side effects, whether it is long-running or asynchronous, whether existing files are overwritten, and what the output schema represents.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no filler or redundant words. The action, scope, and deliverable are front-loaded, making it easy to read and remember.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex orchestration tool with four parameters, zero parameter documentation, and no behavioral notes, the description is too thin. Even though an output schema exists, the agent cannot know the meaning of 'agents'/'extras'/'case_dir' or important operational details needed to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description explains none of the four parameters: apk_path, agents, extras, and case_dir. The agent is left without any meaning for the optional parameters or how they affect orchestration.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb and resource: 'Run the full 7-agent Android reverse pipeline and write REPORT.md.' The reference to 'full 7-agent' distinguishes this aggregate orchestration from the more granular sibling tools, though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance about when to use this tool versus apk_dispatch, apk_report, or other siblings. There are no conditions, prerequisites, or exclusions; only the phrase 'full 7-agent pipeline' implies the intended scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apk_reportC
Return the synthesized report path and agent index if present.
| Name | Required | Description | Default |
|---|---|---|---|
| case_dir | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It indicates a read-like 'Return' behavior, but it does not explain whether any report is generated on the fly, whether case_dir must exist, or what 'if present' means operationally.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler or repetition, and it front-loads the main action. It is concise and structurally easy to parse, though it could be more informative without sacrificing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has only one required parameter and an output schema, so the description does not need to explain return structure. However, it omits when this tool should be invoked relative to siblings, what case_dir must contain, and whether the report is already synthesized or synthesized by this call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description never mentions case_dir. The agent must infer the parameter's meaning entirely from its name, with no help from the tool description. This is a significant gap for a required parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Return') and a clear resource (the synthesized report path), with an additional optional element (agent index). It is reasonably clear, but it does not explicitly differentiate from sibling tools like apk_status or apk_list_agents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives. It does not mention prerequisites, such as a completed case or prior orchestration, nor does it reference any sibling tool or condition for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apk_statusC
Read case status.json written by the orchestrator.
| Name | Required | Description | Default |
|---|---|---|---|
| case_dir | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description explicitly labels the operation as a read, disclosing its read-only nature. It adds context about the file's origin ('written by the orchestrator'), but does not describe error behavior or what happens if the file is missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no wasted words. It is front-loaded with the action and resource, though it could contain slightly more useful context without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one parameter and an output schema, so the description need not detail return values. However, it omits any explanation of case_dir semantics or how the path relates to the orchestrator's output, leaving some ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides no description for case_dir (0% coverage), and the tool description does not mention the parameter at all. The agent is left to infer the parameter's meaning solely from its name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Read' and a clear resource 'case status.json written by the orchestrator.' This distinguishes it from sibling tools like apk_orchestrate or apk_report, though it doesn't explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus siblings, nor any exclusions or prerequisites. The only implicit context is that the file is produced by the orchestrator.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct stage or concern in the APK orchestration pipeline: agent discovery, case creation, fingerprinting, dispatch, full orchestration, status, and report retrieval. Even status and report are clearly separated: status reads the machine-readable state, while report returns the synthesized output path.
All tools share the consistent 'apk_' prefix and mostly follow a verb-like action pattern such as list, create, dispatch, orchestrate. Minor deviations are apk_status and apk_report, which read more like noun endpoints than actions, but the overall convention remains predictable and readable.
Seven tools is well-scoped for an APK orchestration server. Each tool maps to a meaningful workflow step without redundancy or unnecessary surface area, and the count supports both targeted operations and a full pipeline run.
The tool set covers the full orchestration lifecycle: discovery, case creation, targeted analysis, dispatch, full pipeline execution, status polling, and report access. Minor gaps exist around managing existing cases or retrieving individual agent artifacts, but agents can complete the core workflow without dead ends.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Code intelligence platform for AI agents. 20 tools for architecture, security & impact analysis.
DORA OS Conductor — 16-tool meta-orchestrator for DORA compliance workflow automation.
Codebase intelligence for agents: 152 structured artifacts across 21 programs, one call.
AI-powered spec-to-task decomposition and execution orchestration for coding agents.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceProvides a one-stop automated solution for Android APK security analysis by integrating tools like JEB, JADX, APKTOOL, FlowDroid, and MobSF into unified MCP standard API interfaces.11
- FlicenseAqualityFmaintenanceAn AI-driven Android dynamic analysis tool that enables AI models to perform automated reverse engineering by controlling Frida. It provides capabilities to inject scripts, manage application processes, and analyze real-time execution data through the Model Context Protocol.1067
- FlicenseNot gradedqualityDmaintenanceIntegrates multiple Android APK security analysis tools into MCP standard APIs for automated static and dynamic analysis and vulnerability detection.
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to perform autonomous Android security analysis, including static analysis, dynamic analysis, and Frida instrumentation, powered by MobSF.1MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/HaizhuAI/android-apk-orchestrator'
If you have feedback or need assistance with the MCP directory API, please join our Discord server