Devicely

io.github.sureshkumarm8由 GitHub 账号 sureshkumarm8 发布v2.4.7更新于 Nov 7, 2026

Control real iOS & Android devices from AI agents; mirror one tap across a whole fleet.

已验证STDIO仅桌面浏览器自动化开发者工具

概览

AI 生成的概览

Devicely 的 MCP 服务器让 AI 助手观察并操控真实的 iOS 与 Android 设备,包括点击、输入、启动应用和回放录制的流程。

可以做什么
  • 查看设备:截取屏幕快照、查找元素、等待元素出现、读取设备日志与操作日志
  • 操作屏幕:点击、长按、滑动、输入文本、按键以及打开网址
  • 管理应用:启动、关闭、列出、安装和卸载应用
  • 管理设备:列出、连接、断开、重启设备,设置密码并运行环境检查
  • 执行批量与流程任务:指定主控设备、批量执行命令、保存、列出和回放录制、导出测试代码
  • 启动和停止 Android 模拟器与 iOS 模拟器
适用场景
适合让助手操作真实手机或平板进行冒烟测试、跨设备复现缺陷,或查找用于测试代码的定位器。适用于已把设备连接到 Mac 或 Linux 机器的 QA 与移动团队。
运行要求
以本地进程方式运行,可通过 npx 或全局 npm 安装;需要 macOS 或 Linux 上的 Node.js 20.9 及以上(暂不支持 Windows)。Android 需要 PATH 中有 adb;iOS 需要装有 Xcode 的 Mac,并在 Xcode 中签名一次 WebDriverAgent。DEVICELY_URL 变量指向本地服务器,未运行时会自动启动。HTTP 传输与 REST API 需要 Bearer 令牌。
安装前请注意
助手会操作真实设备:安装和卸载应用、重启设备、停止虚拟设备以及设置密码,不过破坏性工具默认关闭且可要求确认。建议限制助手只能操作指定设备并查看审计日志。托管仪表板会连接你的本地服务器;若配置云端 AI 提供商,命令会发送给该提供商。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Devicely,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

Devicely

Tap once. Every iPhone, iPad and Android follows.

Control a fleet of real iOS and Android devices from one screen — by hand, in plain English, or through AI agents over MCP. Save what you do as a Flow and replay it on every device, no code required. Runs locally on your machine, against your own devices.

[npm version] [npm downloads] [Platforms] [MCP] [License]

[Five iPhones, iPads and Androids switch to dark mode together from one Devicely screen]

▶ All demos · Quick start · First device · For QA teams · Flows · For AI agents · CLI · Supported platforms · Privacy


Quick start

macOS or Linux, Node.js 20.9+. Windows isn't supported yet.

bash
npm install -g devicelydevicely doctor      # checks Node, adb, Xcode and iOS tools; prints the install command for anything missingdevicely start       # starts Devicely and opens the Command Center

Can't install globally? On a locked-down work machine (no admin rights, global installs blocked, or install scripts turned off), run Devicely with npx instead. Nothing is installed globally, and every command works the same way:

bash
npx devicely@latest doctornpx devicely@latest start

The first run downloads about 185 MB; later runs start from the npm cache. Teams can pin a version (npx [email protected] start) so everyone runs the same one. If your company routes npm through a private registry (Artifactory, Nexus, Verdaccio), ask IT to allow the devicely package; npx and npm install both use that registry.

The Command Center opens at devicely-ai.vercel.app and talks to the server on your machine. With no devices connected, it opens on Add your first device, which walks you through USB or Wi-Fi setup for Android, iPhone, or a simulator/emulator.

No phone handy? Boot an Android emulator or iOS simulator with the server:

bash
devicely emulators list            # shows installed AVDs and simulatorsdevicely start --launch <name>     # starts Devicely and boots that virtual device

Requirements: Node.js 20.9+ on macOS or Linux. Android needs adb (platform-tools) on your PATH. iOS and iPadOS devices need a Mac with Xcode — see iOS setup.

Using an AI agent? devicely mcp install <client> sets up Claude Code, Cursor, VS Code and others — see For AI agents.


First device in minutes

  1. devicely doctor shows ✓ / ! / ✗ per check, grouped by platform, with the command that fixes each ✗. It exits with code 1 when nothing usable is installed (--json for scripts).
  2. devicely start prints the local server URL and opens the Command Center.
  3. Follow "Add your first device" in the browser. Its checklist updates live as you plug in, tap Allow or Trust, and the device comes online.
You haveExpectWhat you need
Android phone or tabletabout 2 minutesadb, Developer options and USB debugging on. Wi-Fi pairing needs Android 11+. Android guide
iPhone or iPadabout 15 minutes the first timeA Mac with Xcode, an Apple ID (a free one works), WebDriverAgent signed once in Xcode. iOS guide
No devicea few minutes once Xcode or Android Studio is installedAn iOS simulator (Xcode + WebDriverAgent, no signing) or an Android emulator (an AVD from Android Studio)

Troubleshooting

ProblemFix
Android shows waiting for permission (unauthorized)Unlock the phone and tap Allow on the Allow USB debugging? prompt (tick Always allow). No prompt? Revoke USB debugging authorizations in Developer options and replug. More
No devices foundUse a data cable, not a charge-only one, and check adb devices / idevice_id -l. Run devicely doctor for missing tools. On Linux, no permissions means a udev rule is missing: fix
Browser can't reach the local serverMake sure devicely start is still running and open the exact link it prints. If the page says Devicely is running, but this page can't talk to it, your browser is blocking an HTTPS site from calling http://127.0.0.1: in Chrome or Edge allow Local network access for devicely-ai.vercel.app in site settings, in Brave lower Shields for the site, and on Safari use Chrome, Edge or Firefox. devicely start also prints a hint after 30 seconds when no browser has connected.
npm install -g fails with EACCES or permission denied, or is blocked at workUse npx devicely@latest start (and npx devicely@latest doctor); it needs no global install or admin rights. Behind a private registry, ask IT to allow the devicely package. Don't use sudo npm install -g.
Port already in usedevicely start -p 3002. On a non-default port, devicely start prints the full link to open, for example https://devicely-ai.vercel.app/?api=http://127.0.0.1:3002.
iPhone: WebDriverAgent signing failedDevicely names the reason (no signing team, provisioning, Developer Mode off, untrusted developer, device locked, timeout) and links the fix in the iOS guide.
Wi-Fi pairing failsGuest, hotel and corporate Wi-Fi usually block device-to-device traffic and mDNS, and VPNs reroute it. Use a home network or hotspot, or pair over USB first. More

Still stuck? devicely doctor --bundle writes a redacted support bundle to your disk (nothing is uploaded) that you can attach to an issue. See also Troubleshooting.


Why Devicely

Testing one flow on ten devices usually means doing it ten times by hand, renting cloud devices by the minute, or maintaining per-device scripts. Devicely takes a different approach: you drive one device, and the rest of your fleet does the same thing at the same moment.

DevicelyCloud device labsScript frameworks (Appium, Maestro, Detox)Screen mirroring (scrcpy, Vysor)
Live 1-to-many gestures (one tap → every device)✅❌❌❌
iOS and Android mixed in one live session✅❌❌❌
Uses your own devices, on your own machine✅❌✅✅
No code needed (UI, voice, plain English)✅Partial❌✅ (one device)
Record once as a Flow, replay on every device✅Partial❌ (you write code)❌
Built-in MCP server for AI agents✅VariesVaries❌
Exports Flows and locators to test code✅—✅❌

Devicely doesn't replace your test framework. It shortens the slow parts around it: exploring, reproducing bugs across devices, smoke-testing builds, and finding the locators you'll put in your tests.


For QA teams

Commander Mode — one-to-many control

  • Live mirror of the commander device, with every follower shown alongside it.
  • Every gesture is broadcast: tap, long-press, swipe (speed preserved) and typed text go to all followers at once.
  • Element-aware, not pixel-blind. Followers find the element the commander touched — by accessibility ID, label, type and position in the UI tree — so a tap on an iPhone hits the same button on an iPad or a Pixel, even when the layouts differ.
  • Swap the commander from a dropdown on the mirror, without restarting the session.
  • Include or exclude individual followers with one click.
  • Fast iOS mirroring over WebDriverAgent MJPEG: about 170 KB per frame, compared with about 5.8 MB for a screenshot poll. Each iOS device gets its own WDA port, so several iPhones don't collide.
  • Real-device feel: a fingertip cursor and a ripple where you touch, on the commander only.
  • Swipe controls in the action bar go to every targeted device at once.
  • Immersive full screen, with the command bar overlaid at the bottom so you never leave the mirror.

Flows — no-code automation

Do it once by hand; Devicely saves it as a Flow you can replay on one device or the whole fleet, and export as test code when you're ready.

  • Steps are recorded as locators (accessibilityId, resourceId, text, type, bounds), not raw coordinates.
  • Auto-wait: on replay, each step waits up to 10 s for its element to appear, so animations and slow networks don't break the run.
  • Coordinate fallback: if an element can't be found, Devicely taps its scaled position instead and marks the step fallback, so you can see what drifted.
  • Replay on one device or the whole fleet in parallel.
  • Export a Flow to Maestro, Appium (Python or Java) or WebdriverIO, ready for CI with no AI involved.
  • Manage Flows in a list or grid view with search and tag filters. A details drawer shows each step's locator, timing and result; the editor lets you add, edit, reorder and delete steps.

Plain English and voice

Type or say "launch settings, scroll down, open camera". Devicely turns it into the right action for each platform — for example com.apple.Preferences on iOS and com.android.settings on Android — and runs it on every selected device at once. Voice input waits for a 2-second pause before it runs, so you can speak naturally.

  • Grounded in the real screen. Before planning, the AI reads what's on the device, so it taps buttons that are actually there instead of guessing.
  • Review before it runs. The plan appears as a card you can check, edit or cancel. Turn review off from the command palette (⌘K) once you trust it.
  • Safe by default. An AI plan stops at the first failed step, and waits for each element to appear rather than relying on fixed delays.

Choose your AI provider in Settings → AI Config, and use Test connection to check the key and model with a real request:

ProviderNotes
OllamaRuns locally. No API key, and no prompt leaves your machine.
Google Gemini, GroqOffer free tiers — the easiest way to start.
OpenAI, Anthropic ClaudeBring your own API key.
GitHub CopilotUses your Copilot subscription.

Each provider lists its current models in the settings screen. Devicely uses only the provider you choose; it never falls back to another one behind your back.

Quick actions, inspector and code export

  • Command palette (⌘K): run any action, pick target devices, switch the commander or jump anywhere, by typing a few letters.
  • Quick Actions panel: send text, tap an element by name or x,y, and launch apps with autocomplete. Arrow keys cycle through what you typed before.
  • UI Inspector: hover over any element to see its accessibility ID, resource ID, XPath and bounds.
  • One-click export of a selector as a Devicely command, WebdriverIO, Appium Python or Appium Java code.

Devices that stay connected

  • Wireless pairing (Android 11+): scan a QR code from the Command Center or enter the 6-digit pairing code — no IP addresses to type. If pairing fails, Devicely checks whether your network blocks discovery (mDNS) and tells you. From a terminal: devicely wifi pair <ip:port> <code>, then devicely wifi connect <ip:port>.
  • Clear device states: an Android device waiting for you to tap Allow shows as waiting for permission instead of disappearing.
  • Health monitoring spots an unplugged cable, a reboot or a driver failure within seconds and cleans up the session.
  • Auto-reconnect brings a device back as soon as it reappears on USB or Wi-Fi. It's on by default; set DEVICELY_AUTO_RECONNECT=0 to turn it off.
  • Virtual devices: start and stop Android emulators and iOS simulators from the UI or the CLI, next to your physical devices.

For AI agents (MCP server)

Devicely includes a Model Context Protocol server, so coding agents can see and control real devices.

Your agent is the brain; Devicely is the hands. Over MCP, Devicely doesn't call any AI of its own: your agent reads the screen, decides, acts and checks the result. No second model, no extra API key, and nothing to configure in Devicely's AI settings.

bash
devicely mcp install claude-code      # prints the `claude mcp add` command to rundevicely mcp install cursor           # also: vscode, windsurf, gemini, claude-desktopdevicely mcp doctor                   # checks the backend, token and transports

Or install the Claude Code plugin, from inside Claude Code:

/plugin marketplace add sureshkumarm8/Devicely/plugin install devicely@devicely

Or add it to Claude Code by hand:

bash
claude mcp add devicely -- npx -y devicely mcp

Two transports are available: stdio (devicely mcp, which starts the backend if it isn't running) and Streamable HTTP, protected by a Bearer token. Run devicely mcp doctor to see the HTTP endpoint.

30 tools

GroupTools
Observedevicely_snapshot, devicely_find_elements, devicely_wait_for, devicely_get_device_logs, devicely_get_action_log
Actdevicely_tap, devicely_long_press, devicely_swipe, devicely_type_text, devicely_press_key, devicely_open_url
Appsdevicely_launch_app, devicely_close_app, devicely_list_apps, devicely_install_app, devicely_uninstall_app
Devicesdevicely_list_devices, devicely_connect_device, devicely_disconnect_device, devicely_restart_device, devicely_set_passcode, devicely_doctor
Fleet and flowsdevicely_commander, devicely_run_commands, devicely_export_test
Virtual devicesdevicely_launch_virtual_device, devicely_stop_virtual_device
Flowsdevicely_save_recording, devicely_list_recordings, devicely_replay_recording

Prompts for common jobs: smoke_test, reproduce_bug and write_test. Resources with live context: devicely://devices, devicely://apps, devicely://docs/command-language and devicely://docs/agent-guide.

Safety controls

Set these in Settings → AI Agents (stored in ~/.devicely/mcp.json):

  • Destructive tools are off by default: install_app, uninstall_app, restart_device and stop_virtual_device. When enabled, they can also require confirmation. set_passcode is allowed by default; add it to disabledTools in ~/.devicely/mcp.json to block it.
  • Limit agents to specific devices (allowedDevices), turn off individual tools, and redact sensitive values from output.
  • Every agent action is logged to an audit trail.

REST API

The same capabilities are available over HTTP at /api/v1, using the same Bearer token — useful for CI pipelines and custom harnesses. View or rotate the token with devicely mcp token [--rotate]; it's saved in ~/.devicely/mcp-token.

Example

"Take a snapshot of the Pixel, check that the Login button is visible, tap it, and confirm the welcome screen appears."

The agent calls devicely_snapshot and devicely_find_elements, taps with devicely_tap, and checks the result with devicely_wait_for.


CLI reference

CommandWhat it does
devicely startStart the server (binds to loopback 127.0.0.1) and open Command Center
devicely start --host <addr>Bind to a specific interface (e.g. --host 0.0.0.0 for LAN access)
devicely start -p <port>Use another port (for example when 3001 is taken). Prints the full Command Center link with ?api= for that port
devicely start --no-browserDon't open a browser (CI, headless machines); open the printed link yourself
devicely start --usb-only / --wifi-onlyOnly detect devices on USB, or only on Wi-Fi
devicely start --launch <name>Boot a virtual device when the server starts
devicely start --debugTurn on debug logging
devicely start --https --ssl-key <key.pem> --ssl-cert <cert.pem>Serve over HTTPS/WSS (or set DEVICELY_HTTPS=true, DEVICELY_SSL_KEY, DEVICELY_SSL_CERT). Refuses to start if the certificate can't be loaded. Use a locally trusted cert (e.g. mkcert localhost 127.0.0.1); browsers silently block self-signed ones
devicely list [--verbose]List connected iOS and Android devices
devicely exec "<command>" [-d <name>]Run a command on all devices, or on one with -d
devicely doctorCheck Node, adb, Xcode and iOS tools, with a fix command for each failure. Exits 1 when nothing usable is installed
devicely doctor --jsonThe same checks as JSON, for scripts and CI
devicely doctor --bundleWrite a redacted support bundle to disk (nothing is uploaded)
devicely wifi pair <ip:port> <code>Pair an Android 11+ device using the code from Wireless debugging › Pair device with pairing code
devicely wifi connect <ip:port>Connect to a paired Android device over Wi-Fi (the address shown under Wireless debugging)
devicely telemetry status|enable|disableShow or change the opt-in setup diagnostics setting (details)
devicely emulators listList Android emulators and iOS simulators (alias: devicely virtual)
devicely emulators start <name> [--headless]Boot a virtual device
devicely emulators stop <name>Shut down a virtual device
devicely mcp [--url <url>] [--no-autostart]Run the MCP stdio server
devicely mcp doctorCheck MCP readiness
devicely mcp token [--rotate]Show or rotate the agent token
devicely mcp install <client>Configure claude-code, claude-desktop, cursor, vscode, windsurf or gemini

Canonical Command Set (DSL)

Devicely executes a deterministic, multi-line or semicolon-separated Command DSL across iOS and Android:

VerbSyntaxPlatformsDescription
launchlaunch <app|package>iOS, AndroidLaunch an application by preset name or bundle/package ID
killkill <app|package>iOS, AndroidForce-stop/terminate an application
clickclick <text|x,y>iOS, AndroidTap an element by text, accessibility ID, or coordinate pair
longpresslongpress <text|x,y>iOS, AndroidLong-press an element or coordinate
swipeswipe <up|down|left|right>iOS, AndroidPhysical finger gesture (Note: scroll down maps to swipe up)
typetype <text>iOS, AndroidType text into the currently focused input field
enterenterAndroidPress Enter / Submit key (on iOS, type presses Return for you)
homehomeiOS, AndroidNavigate to home screen
backbackiOS, AndroidNavigate back
screenshotscreenshotiOS, AndroidCapture device screen
lock / unlocklock, unlockiOS, AndroidLock or wake/unlock device screen
urlurl <https://...>iOS, AndroidOpen a URL in default browser
WAITWAIT <ms>iOS, AndroidPause execution for specified milliseconds
notificationsnotificationsiOS, AndroidOpen Notification Center / the notification shade
quicksettingsquicksettingsiOS, AndroidOpen Control Center / quick settings
recentrecentiOS, AndroidOpen the app switcher
rotaterotateiOSRotate the screen
volumevolume <up|down>AndroidChange the volume
getLocatorsgetLocatorsAndroidDump current screen UI accessibility tree
install / clearinstall <apk>, clear <package>AndroidInstall an APK, or clear an app's data
uninstalluninstall <app|package>iOS, AndroidRemove an application
restart / shutdownrestart, shutdowniOS, AndroidReboot or power off the device

Example commands for exec:

bash
devicely exec "launch settings"devicely exec "launch settings; swipe up; launch camera"devicely exec "url https://github.com" -d "Pixel 8"

Supported platforms

Supported
Host machinemacOS and Linux, Node.js 20.9+. Windows isn't supported yet.
AndroidPhones, tablets and emulators via ADB and UIAutomator2. Wireless debugging needs Android 11+.
iOS / iPadOSiPhones, iPads and simulators on iOS/iPadOS 17 or later, via WebDriverAgent. Needs a Mac with Xcode. Physical devices need Developer Mode turned on.

iOS setup

iPhones, iPads and simulators are controlled through WebDriverAgent (WDA), Appium's open-source test runner. Get it with one click in Add your first device, or clone it yourself into the Devicely data folder:

bash
git clone https://github.com/appium/WebDriverAgent ~/.devicely/WebDriverAgent

($DEVICELY_DATA_DIR/WebDriverAgent if you set DEVICELY_DATA_DIR; WDA_PATH points Devicely at a checkout anywhere else.) Simulators need nothing more.

A physical device also needs WDA signed once in Xcode with your Apple ID. A free Apple ID works, but its signature expires after 7 days. The in-app guide walks you through trusting the computer, turning on Developer Mode and signing, and if a connect fails it names the reason (no signing team, provisioning, Developer Mode off, untrusted developer, device locked, timeout) with a link to the fix. Full walkthrough: iOS device guide. Android devices don't need signing.


Privacy and security

  • Runs locally. The Devicely server runs on your machine and talks to your devices directly. Your apps, screenshots and test data aren't uploaded anywhere.
  • Loopback binding by default. The server binds to 127.0.0.1 by default, protecting your host machine from unintended local network exposure.
  • Origin & Host guard. Requests to the REST API and WebSocket endpoints are guarded against untrusted Host and Origin headers, protecting against DNS rebinding and cross-origin attacks.
  • Local AI is an option. Use Ollama to keep prompts and screen data on your machine. With a cloud AI provider, your commands go to that provider under your own API key.
  • API keys stay on your machine. AI keys you add in Settings are stored in ~/.devicely/.env (or $DEVICELY_DATA_DIR/.env), readable only by you (0600). They are sent only to the AI provider you chose.
  • Agents need a token. MCP over HTTP and the REST API require a 32-byte Bearer token.
  • Analytics: the local server sends no telemetry. The hosted dashboard at devicely-ai.vercel.app uses anonymous Vercel page-view analytics and connects to your local server; device data isn't sent to Vercel.
  • Setup diagnostics are opt-in. The Command Center asks once whether to share anonymous setup events (for example "doctor check failed: adb missing" or "first device action succeeded"). They are fixed codes only: no serials, IP addresses, device or app names, or file paths. Nothing is sent unless you say yes, and DO_NOT_TRACK=1 or DEVICELY_TELEMETRY_DISABLED=1 turns it off. Check or change it with devicely telemetry status|enable|disable. Every event and field is listed in TELEMETRY.md.

Full details: what Devicely can and cannot see. Found a vulnerability? Email [email protected] instead of opening a public issue.


What's new in 2.4.0

  • Flows: Recordings are now Flows — record once, replay on every device, export to Maestro, Appium or WebdriverIO.
  • Grounded AI commands: the AI reads the screen before planning, shows the plan for review, stops at the first failed step and waits for elements instead of fixed delays.
  • A redesigned Command Center: compact command bar, ⌘K command palette, fleet-wide swipe controls, immersive full screen and real-device touch feedback.
  • MCP, simplified: your agent plans every step itself; Devicely no longer calls its own AI over MCP.
  • AI providers: latest Gemini and Groq models, a real Test connection, no silent fallback. Cohere and Mistral were removed.
  • iOS 26 fixes: lock and unlock work again, plus iOS tunnel support for newer versions.
  • Security: all known dependency vulnerabilities fixed. Node.js 20.9 or later is now required.

License

Free to use. Closed source. Devicely is free to install and use, for yourself or inside your company. The software is proprietary: you may not copy, modify, reverse engineer or redistribute it, offer it as a hosted service, or use it to train AI models. See the Devicely Free Use License.

If Devicely saves you time, star it on GitHub.

来源:README.md,提交 c149539

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v2.4.7最新Nov 7, 2026

评分

已满足适用检查项的 40%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

    请在仓库或注册中心条目中声明许可证。