Other formats agents might prefer:
markdownjsonllms.txt

Agent? You probably want markdown or json, or Pod over MCP.

Reported issues for Mobile Device MCP

Pod holds 10 of 10 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.

Back to Mobile Device MCP.

Most discussed

list_devices returns [] for connected Android devices when the package is launched via npx

Summary

I hit an Android discovery failure with @srmorete/mobile-device-mcp@0.1.2 while using the documented npx launch path.

adb devices -l showed connected Android devices, but:

  • list_devices returned []
  • a follow-up Android call failed with Device <id> not found in adb, simctl, or devicectl

This made the server behave as if no Android devices were connected, even though adb itself was healthy.

Environment

  • macOS
  • @srmorete/mobile-device-mcp@0.1.2
  • launched v

Read the thread · 2026-04-13 · open · external user · 6 comments

Why there is no app installation?

This project is really nice, but it's not a replacment for the adb mcp. There are many good things that add allows like logcat and app installation and shell execution. This does not provide those things

Read the thread · 2026-06-17 · open · external user · 2 comments

Android port allocation is a TOCTOU race across concurrent first-time bootstraps

Summary

allocateAndroidPort() reads pendingPorts, but addPendingPort(port) only happens later in bootstrapAndroid (after two awaits). bootstrapChains serializes bootstrap per device ID, not globally, so two concurrent first-time bootstraps of different Android devices can both compute the same free port (e.g. 18000) before either marks it pending. The second adb forward tcp:<port> then fails with a confusing adb error.

The iOS path is immune because tryLockPort (atomic

Read the thread · 2026-07-25 · open · 0 comments

iOS: first tool calls after session start fail transiently (timeout, then 500, then OK)

Summary

On iOS, the first tool calls in a session fail transiently. A retry of the same call succeeds. This looks like a cold-start problem in the driver or the UITreeServer app.

Environment

  • iPhone 17 Pro Max simulator, iOS 26.3, already booted
  • Safari in the foreground
  • Tool: mobile_device_mcp_uitree

Observed

Three identical uitree calls in a row:

  1. First call: times out (about 30 s).
  2. Second call: GET /uitree failed: 500 Internal Server Error with an empty body.

Read the thread · 2026-07-25 · closed · 0 comments

iOS uitree search: giant page-root container ranks first and crowds out leaf nodes

Summary

On iOS, uitree with a search term returns the page-root container as the first hit. The container holds the whole web page. Under a small limit, it crowds out the leaf nodes that the caller wants.

Environment

  • iPhone 17 Pro Max simulator, iOS 26.3
  • Safari showing amazon.com search results for "gummy bears"
  • Tool: mobile_device_mcp_uitree with search

Observed

search: "gummy bears" returns as the first hit:

{"id":2,"text":"Amazon.com : gummy bears","bo

[Read the thread](https://github.com/srmorete/mobile-device-mcp/issues/14) · 2026-07-25 · closed · 0 comments

### iOS uitree: off-screen elements (visible:false) included in output and search results

## Summary

On iOS, `uitree` computes a `visible` flag per node but never uses it. The full web page is returned on every call, including all off-screen nodes. Search results also include invisible nodes. Some invisible nodes have negative center coordinates.

## Environment

- iPhone 17 Pro Max simulator, iOS 26.3
- Safari showing amazon.com search results
- Tool: `mobile_device_mcp_uitree`

## Observed

- One `uitree` call returns 257 nodes. 194 of them are `visible: false`.
- The page is abou

[Read the thread](https://github.com/srmorete/mobile-device-mcp/issues/13) · 2026-07-25 · closed · 0 comments

### iOS uitree: element types and clickable flags mislabeled for web content

## Summary

On iOS, the `uitree` tool returns wrong `type` and `clickable` values for web content in Safari. Plain text nodes report `type: "input", clickable: true`. Real interactive elements report `clickable: false`.

## Environment

- iPhone 17 Pro Max simulator, iOS 26.3
- Safari showing amazon.com search results
- Tool: `mobile_device_mcp_uitree`

## Observed

Examples from one `uitree` call:

- The cart badge text `"0"` reports `type: "input", clickable: true`. It is static text.
- Body t

[Read the thread](https://github.com/srmorete/mobile-device-mcp/issues/12) · 2026-07-25 · closed · 0 comments

### type_text returns OK but text does not land in Chrome WebView inputs (Android)

## Summary

On Android, `type_text` returns `OK` but the text does not appear in a web input field inside a Chrome WebView. The same call works in native input fields, for example the Chrome address bar.

## Environment

- Device: Android emulator `emulator-5554` (sdk_gphone64_arm64)
- App: Chrome on amazon.com
- Target: the "Search Amazon" input inside the page WebView

## Steps to reproduce

1. Open amazon.com in Chrome.
2. Tap the "Search Amazon" input. The on-screen keyboard opens. The field

[Read the thread](https://github.com/srmorete/mobile-device-mcp/issues/10) · 2026-07-20 · closed · 0 comments

## Most recent

### healthPoll: fixed 500ms interval adds a ~500ms floor to cold bootstrap

## Location

`src/server/bootstrap.ts:362`, `HEALTH_POLL_INTERVAL = 500`.

## Effect

Minimum time-to-healthy is 500 ms even when the driver server comes up in ~50 ms. Cold-bootstrap measurements (first tool call after test-app install):

| Platform | cold-path total |
|---|---|
| Android | 2365 ms |
| iOS sim | 3504 ms |

A meaningful slice of that is the poll interval, not the driver actually taking 500 ms to be ready.

## Proposal

Adaptive schedule — e.g. 25, 50, 100, 200, 500 ms, then 500 m

[Read the thread](https://github.com/srmorete/mobile-device-mcp/issues/6) · 2026-04-17 · closed · 0 comments

### Node adapter leaks grandchild processes on cleanup (process-group kill)

## Context

Follow-up to #2 / v0.1.3. The Node branch of the `proc.ts` spawn shim works for all current call sites, but it differs from Bun in one cleanup detail that can leak descendant processes.

## Problem

`src/server/devices.ts:178` and the equivalent paths in `bootstrap.ts` try to reap a device's entire process tree via:

```ts
process.kill(-device.serverProcess.pid, "SIGKILL");

The negative pid tells the kernel "send SIGKILL to this process group." That only works if the spawned chi

Read the thread · 2026-04-15 · closed · 0 comments

The remaining reports are on the project's issue tracker.