droidprobe

io.github.orhanbalciPublished by GitHub account orhanbalciv0.1.0Updated Oct 24, 2026

Read-only MCP server to inspect an Android device over ADB: hardware, packages, permissions, logs.

VerifiedSTDIODesktop onlyDeveloper ToolsSecurity & Monitoring

Overview

AI-generated overview

A read-only MCP server that inspects an Android device over ADB, exposing hardware, package, permission and log information to an assistant.

What you can do
Inspect device and hardware details over ADB, such as the overview view of the connected device and its state. Browse installed packages, including package search and permission information. Examine app components such as activities, services, receivers and providers. Read device logs for troubleshooting. All tools are read-only and cover the same device, package and log surface as the companion terminal UI.
When to use it
Use it when you want an assistant to look at a USB-connected Android device during debugging or investigation: checking what is installed, what permissions an app holds, which components it declares, or what the logs say, without leaving the chat.
Requirements
Runs as a local process on the same machine as the ADB server and the USB-attached device, with USB debugging enabled and authorized. Built from Rust 1.82+ or installed as a prebuilt binary; registered with the MCP client as a stdio server pointing at the binary. No environment variables or credentials are declared.
Before you install
It needs access to the ADB server and the attached device, so it cannot reach a device it cannot run adb shell against; remote or detached hosting requires tunneling ADB. Logs and package data from the device are passed to the assistant. Tools are stated to be read-only, but the device itself is a live target.

Installation

In SourceWeft

  1. Open droidprobe in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

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

[droidprobe walkthrough]

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+ (rustup recommended)
  • A running adb server (adb start-server) and a device with USB debugging enabled and authorized.

Build & test

bash
cargo build --workspacecargo test  --workspace        # parser + command tests run without a device

Run the TUI

bash
cargo run -p droidprobe-tui# Tab switches views, q quits. Logs are written to ./droidprobe.log

Run the MCP server

bash
cargo run -p droidprobe-mcp        # speaks MCP over stdio

Register 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

bash
cargo build -p droidprobe-mcp --releaseclaude 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:

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:

bash
cargo login                                    # one-time, needs your crates.io API tokencargo publish -p droidprobe-parsercargo publish -p droidprobe-command            # only after droidprobe-parser is livecargo publish -p droidprobe-core               # only after droidprobe-command is livecargo publish -p droidprobe-mcp                # only after droidprobe-core is livecargo publish -p droidprobe-tui                # optional, same dependency floor as mcp

crates.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:

bash
cargo install droidprobe-mcp

Prebuilt 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:

bash
git tag v0.1.0git push origin v0.1.0

List 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:

bash
brew install mcp-publishermcp-publisher login githubmcp-publisher publish        # validates server.json and submits it

Adding your own command

Implement Command, wrap it in TypedDyn, and register it:

rust
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

Source: README.md at commit 2cda4ec

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.1.0LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts