H
hridaya423/phonedriver
Open-source MCP server and CLI that lets AI agents like Claude Code see and control Android and iOS phones
在 GitHub 查看 ↗链接已于 2026-11-12 核查 · HTTP 200 · 打开的是厂商自己的官网
安装与配置
取自该仓库的安装命令
claude mcp add phonedriver -- npx -y phonedriver mcp
解析自我们于 2026-11-10 抓取的该仓库 README;我们未执行过。
这条是仓库自己写的安装方式,不是 MCP 客户端配置,所以不生成 JSON。
配置项的键名以你的客户端为准:客户端与 CLI
- ★ 数取值
- 1 ★ · hridaya423/phonedriver · 取自 GitHub 搜索 API · (2026-11-13 20:00:50 核对)
- 来源明细
- 从该仓库的 GitHub 页面直接读取 · 条目类型:开源项目
- 收录与活跃
- 收录于 2026-11-11 · 最近见到 2026-11-14 · 共见到 4 次 · 被 1 个来源列出
- 评分构成
- 综合分 103 · 1 ★ · 1 个来源 · repo
- 安装
claude mcp add phonedriver -- npx -y phonedriver mcp
常见问题(答案都来自我们的记录)
怎么安装?
该仓库给出的安装命令是
claude mcp add phonedriver -- npx -y phonedriver mcp。我们的记录里它是仓库自己提供的;不保证在你的客户端上直接可用。它适合谁 / 用来做什么?
我们把它归在这些标签下: 开源项目。标签来自条目自身,不是我们强加的分类。
谁维护它、还在更新吗?
仓库
hridaya423/phonedriver;我们收录于 2026-11-11;最近见到 2026-11-14。这里没有"官方认证"或"质量评级"——我们只记录来源与时间。Give your AI agent a phone.
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
phonedriver lets Claude Code, Codex, Cursor or any MCP client use an Android phone or an iPhone. It reads the screen as text, which took 6.9x fewer tokens than mobile-mcp on nine phone jobs, and it asks you before it taps Pay.
One real Claude Code (Opus 5.5) session on an Android emulator, ordering on dominos.co.uk. The run took 6.5 minutes and is shown at 15x; the approval prompt plays at real speed. Nothing was ordered. Full video (MP4) .
## Start
sh
claude mcp add phonedriver -- npx -y phonedriver mcp
Start an Android emulator, plug in an Android phone with USB debugging on, or boot the iOS Simulator. Then give Claude a job that only a phone can do:
> Open my app, sign up with a new account, and tell me every bug you find on the way. Give me steps to reproduce each one.
> Find the app that drains my battery and tell me how long it ran in the background today.
> Go through my app's onboarding in dark mode and in light mode, and show me every screen where the text is hard to read.
The first run downloads one binary for your machine (macOS, Linux or Windows) and caches it. phonedriver doctor checks adb, Xcode and each device and tells you what to fix. Codex, Cursor and other clients: see Other clients. Homebrew, the shell installer and real iPhones: docs/reference.md.
Not released yet. Until the first release, build from source with cargo build --release .
## What the model sees
Each screen arrives as a short numbered list. This is the Settings app on an Android emulator:
console
$ phonedriver snapshot
app com.android.settings (Settings) · keyboard hidden · settled in 0ms
@e1 button "Search Settings"
@e2 group scrollable↓
@e3 button "Google" "Services & preferences"
@e4 button "Network & internet" "Mobile, Wi‑Fi, hotspot"
@e5 button "Connected devices" "Bluetooth, pairing"
...
@e10 button "Display & touch" "Dark theme, font size, touch"
The model taps by number. phonedriver waits until the screen stops changing, then replies. After tap @e10 the Display screen opens and the reply lists it, including @e24 switch "Dark theme" off. The next tap returns only what changed:
console
$ phonedriver tap @e24
ok tapped @e24 "Dark theme" at 353,532 · settled in 2034ms
~ @e23 button "Dark theme" "Will turn on when Bedtime starts" → "Will never turn off automatically"
~ @e24 switch "Dark theme" off → on
marks a line that appeared, - one that left, ~ one that changed. The model doesn't need to poll or guess how long a screen takes to load. It takes a screenshot only when it needs to see a picture.
## Fewer tokens
Tokens are what an agent's usage limit is spent on. I ran nine jobs that only a phone can do, twice each, with Claude Sonnet 5.5 and three MCP servers. The jobs included setting Chrome's search engine, cropping a photo, pinning and archiving Messages threads, finding the app that keeps the phone awake, and testing a sign-up flow for planted bugs. A script checked the phone's own data afterwards, not the model's report.
This is my own test set. All three tools ran on the same Android emulator on 10 November 2026. phone-harness used fewer tokens than phonedriver on two of the nine jobs. Every run, the versions, the checks and what was thrown away are published in docs/bench/jobs.md. If you maintain one of these tools and think I set it up wrong, open an issue and I will rerun it.
One real Claude Code (Opus 5.5) session on an Android emulator, ordering on dominos.co.uk. The run took 6.5 minutes and is shown at 15x; the approval prompt plays at real speed. Nothing was ordered. Full video (MP4) .
## Start
sh
claude mcp add phonedriver -- npx -y phonedriver mcp
Start an Android emulator, plug in an Android phone with USB debugging on, or boot the iOS Simulator. Then give Claude a job that only a phone can do:
> Open my app, sign up with a new account, and tell me every bug you find on the way. Give me steps to reproduce each one.
> Find the app that drains my battery and tell me how long it ran in the background today.
> Go through my app's onboarding in dark mode and in light mode, and show me every screen where the text is hard to read.
The first run downloads one binary for your machine (macOS, Linux or Windows) and caches it. phonedriver doctor checks adb, Xcode and each device and tells you what to fix. Codex, Cursor and other clients: see Other clients. Homebrew, the shell installer and real iPhones: docs/reference.md.
Not released yet. Until the first release, build from source with cargo build --release .
## What the model sees
Each screen arrives as a short numbered list. This is the Settings app on an Android emulator:
console
$ phonedriver snapshot
app com.android.settings (Settings) · keyboard hidden · settled in 0ms
@e1 button "Search Settings"
@e2 group scrollable↓
@e3 button "Google" "Services & preferences"
@e4 button "Network & internet" "Mobile, Wi‑Fi, hotspot"
@e5 button "Connected devices" "Bluetooth, pairing"
...
@e10 button "Display & touch" "Dark theme, font size, touch"
The model taps by number. phonedriver waits until the screen stops changing, then replies. After tap @e10 the Display screen opens and the reply lists it, including @e24 switch "Dark theme" off. The next tap returns only what changed:
console
$ phonedriver tap @e24
ok tapped @e24 "Dark theme" at 353,532 · settled in 2034ms
~ @e23 button "Dark theme" "Will turn on when Bedtime starts" → "Will never turn off automatically"
~ @e24 switch "Dark theme" off → on
marks a line that appeared, - one that left, ~ one that changed. The model doesn't need to poll or guess how long a screen takes to load. It takes a screenshot only when it needs to see a picture.
## Fewer tokens
Tokens are what an agent's usage limit is spent on. I ran nine jobs that only a phone can do, twice each, with Claude Sonnet 5.5 and three MCP servers. The jobs included setting Chrome's search engine, cropping a photo, pinning and archiving Messages threads, finding the app that keeps the phone awake, and testing a sign-up flow for planted bugs. A script checked the phone's own data afterwards, not the model's report.
This is my own test set. All three tools ran on the same Android emulator on 10 November 2026. phone-harness used fewer tokens than phonedriver on two of the nine jobs. Every run, the versions, the checks and what was thrown away are published in docs/bench/jobs.md. If you maintain one of these tools and think I set it up wrong, open an issue and I will rerun it.
收录徽章(可选)
想把收录标记放进 README 就复制这行,可选,不影响收录。
[](https://anclum.com/zh/s/hridaya423-phonedriver/)
- 来源
- github · https://github.com/hridaya423/phonedriver
- 按领域浏览
- 开源项目
- Traction
- 1 ★
- 收录于
- 今天
同类推荐
所属领域与标签
每个标签都能点进去看同类的全部条目。数字是当前库里的真实条数。