droidprobe-mcp
Inspects a USB-attached Android device over ADB through 10 read-only tools covering device state, installed packages, and logs. Provides package search plus per-package details such as permissions and activity/service/receiver/provider components, along with log retrieval, allowing an agent to explore and diagnose an Android device directly from the ADB-connected machine.
Click on "Deploy 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., "@droidprobe-mcpcheck my connected Android device's battery and recent logcat errors"
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.
droidprobe
Modular Rust toolkit for inspecting an Android device over ADB (USB debugging).
One shared core powers two front-ends: a terminal UI (droidprobe) and an MCP
server (droidprobe-mcp) for agents.
See ARCHITECTURE.md for the full design and phased plan.
Screenshots

Overview | Packages | Logs |
|
|
|
Related MCP server: adb-mcp
Workspace layout
droidprobe/
├── Cargo.toml # workspace + shared dep versions
├── ARCHITECTURE.md
└── crates/
├── droidprobe-parser/ # raw text -> structured data (pure, no I/O)
├── droidprobe-command/ # Command trait, Transport, built-in catalog
├── droidprobe-core/ # Registry + Engine + Poller
├── droidprobe-tui/ # ratatui binary (bin: `droidprobe`)
└── droidprobe-mcp/ # rmcp binary (bin: `droidprobe-mcp`)Prerequisites
Rust 1.82+ (
rustuprecommended)A running
adbserver (adb start-server) and a device with USB debugging enabled and authorized.
Build & test
cargo build --workspace
cargo test --workspace # parser + command tests run without a deviceRun the TUI
cargo run -p droidprobe-tui
# Tab switches views, q quits. Logs are written to ./droidprobe.logRun the MCP server
cargo run -p droidprobe-mcp # speaks MCP over stdioRegister it with an MCP client (e.g. Claude Desktop / Claude Code) by pointing the client at the built binary as a stdio server. Tools are read-only.
Register with Claude Code
cargo build -p droidprobe-mcp --release
claude mcp add droidprobe -- "$(pwd)/target/release/droidprobe-mcp"
claude mcp get droidprobe # should show "Status: ✔ Connected"This must run on the same machine as the adb server and the USB-attached
device — the server has no way to reach a device it can't adb shell into,
so there's no meaningful way to run it detached on remote infrastructure
unless you tunnel adb back to it.
Register with Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"droidprobe": {
"command": "/absolute/path/to/target/release/droidprobe-mcp"
}
}
}Distributing droidprobe-mcp
Publish to crates.io
Path-dependent crates must publish in dependency order — each one needs its
predecessors already live on crates.io before cargo publish will resolve:
cargo login # one-time, needs your crates.io API token
cargo publish -p droidprobe-parser
cargo publish -p droidprobe-command # only after droidprobe-parser is live
cargo publish -p droidprobe-core # only after droidprobe-command is live
cargo publish -p droidprobe-mcp # only after droidprobe-core is live
cargo publish -p droidprobe-tui # optional, same dependency floor as mcpcrates.io indexes new releases within a minute or two; cargo publish for a
downstream crate will fail with "no matching package found" if you run it
too soon after the one before it. Once droidprobe-mcp is published, anyone
with Rust installed can run:
cargo install droidprobe-mcpPrebuilt binaries (no Rust toolchain needed)
.github/workflows/release.yml cross-builds both droidprobe (TUI) and
droidprobe-mcp for macOS (Intel + Apple Silicon), Linux x86_64, and Windows
x86_64 whenever a v*.*.* tag is pushed, and attaches the archives to a
GitHub Release:
git tag v0.1.0
git push origin v0.1.0List in the MCP registry
The official MCP registry
publishes via a dedicated CLI and validates namespace ownership through
GitHub OAuth. A starter server.json is included in this repo
— update its version to match each crates.io release, then:
brew install mcp-publisher
mcp-publisher login github
mcp-publisher publish # validates server.json and submits itAdding your own command
Implement Command, wrap it in TypedDyn, and register it:
let mut registry = droidprobe_core::registry::Registry::with_builtins();
registry.register(Box::new(droidprobe_command::TypedDyn(MyCommand)));Status
10 tested parsers, 10 built-in commands, the registry/engine/poller, a TUI with Overview/Packages/Logs tabs (package search, permissions, and activity/service/receiver/provider component tabs), and a 10-tool MCP server covering the same device/package/log surface. Phases 2–6 (parser breadth, TUI depth, ATK command parity, MCP polish, robustness) are described in ARCHITECTURE.md.
License
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
Give your AI agent a real cloud Android phone: push APKs, drive it, get screenshots and logs.
Cloud Android phones for AI agents: create a phone, read the screen, tap, type, install APKs, park.
Drive real devices from your AI Coding tool. Embed a client SDK (Unity, Godot, Flutter, iOS/macOS, Android, React Native, Web) in your app, then capture screenshots, traverse the UI tree, inject taps and key events, and run automated test tasks on the physical device over a secure relay.
Melaya is a remote MCP server. It gives an assistant hands on your own Android phone and browser: it reads the screen through the accessibility tree, then taps, types and navigates inside the apps and sites you allow-list, with no per-app API. It also builds, schedules and runs agent pipelines across 6k+ connected tools. OAuth 2.1, nothing to install.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables an agent to inspect and interact with Android emulators or physical devices via ADB, capturing UI snapshots, tapping nodes, typing text, and reading app logs.10MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to control Android devices via ADB, providing tools for screen capture, tap/swipe/input, app management, and diagnostics. Works locally over USB or WiFi and integrates with MCP clients like Claude and Cursor.1MIT
- FlicenseNot gradedqualityCmaintenanceEnables AI agents and test runners to control Android devices via local ADB, including listing devices, tapping, swiping, typing, sending system keys, launching apps, and dumping UI hierarchy. Communicates over MCP stdio without exposing network listeners.-
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to control a physical Android device or Docker-hosted emulator over ADB by taking screenshots and performing taps, swipes, key presses, text input, shell commands, app launches, and device info queries. It runs as a local MCP stdio server alongside a web UI and REST API for remote access.1MIT


