Skip to main content
Glama

emulator-tools

MCP server that lets coding agents use iOS Simulators and Android Emulators. One file, one dependency (agent-device).

The server exposes four tools. Driving the device (tap, type, read the screen, install) goes through the agent-device CLI, which device_open hands back already pinned to the device.

Tool

What it does

device_list

Lists simulators and emulators, booted or not

device_open

Boots the device if needed; returns the agent-device command for it

device_screenshot

Returns a PNG of the screen

device_close

Ends the agent session; shutdown: true powers the device off

The agent works from accessibility snapshots instead of guessing coordinates:

agent-device open com.android.settings --platform android --serial emulator-5554 --session emulator-tools-emulator-5554
agent-device snapshot -i ...   # @e1 [button] "Search settings" ...
agent-device press @e3 --settle ...
agent-device fill @e5 "text" --settle ...

Requirements

  • Node 20+

  • iOS: macOS with Xcode and at least one simulator

  • Android: SDK Platform-Tools and Emulator, plus an AVD. ANDROID_HOME is used when set, then ~/Library/Android/sdk, then adb on PATH.

Related MCP server: vibeview

Install

git clone https://github.com/mandaputtra/emulator-tools.git
cd emulator-tools
npm install

Add it to Claude Code:

claude mcp add emulator-tools -- node "$PWD/server.mjs"

Or to any MCP client config:

{
  "mcpServers": {
    "emulator-tools": { "command": "node", "args": ["/absolute/path/to/emulator-tools/server.mjs"] }
  }
}

Try it without an MCP client

node scripts/call.mjs device_list
node scripts/call.mjs device_open '{"deviceId":"Pixel_3a_API_34_Play"}'
node scripts/call.mjs device_screenshot '{"deviceId":"emulator-5554"}' shot.png
node scripts/call.mjs device_close '{"deviceId":"emulator-5554","shutdown":true}'

Notes

  • A stopped Android emulator is listed by its AVD name. After device_open boots it, its id becomes the adb serial (emulator-5554); the command device_open returns already uses the new id.

  • The first iOS snapshot builds an XCTest runner, which takes a few minutes once.

  • iOS screenshots are scaled to 1568px on the long edge to keep them small.

Test

npm test

Protocol tests only; they need no device.

The tool design follows the device toolkit in T3 Code.

License

MIT

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      B
      maintenance
      Enables driving an iOS Simulator from a model: taking screenshots, reading the UI tree, tapping, swiping, typing, managing app lifecycle and device state such as appearance, permissions, location, and notifications, without code signing or a physical device.
      25
      383 npm
      1
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables coding agents to verify work on live cloud devices by uploading builds, starting sessions, driving UI through UI-tree refs, reading logs, and taking screenshots on iOS, Android, Apple TV, and Android TV.
      4
      MIT
    • A
      license
      B
      quality
      B
      maintenance
      Enables AI agents to automate Android and iOS devices, including emulators and physical devices, by capturing screenshots, reading UI accessibility trees, performing touch and text input, and managing app lifecycle and logs.
      18
      4
      MIT
    • A
      license
      B
      quality
      C
      maintenance
      Enables coding assistants to drive iOS Simulators and Android emulators or USB devices for React Native and Expo work, including taking screenshots, reading app and device logs, opening deep links, installing builds, and launching or relaunching apps. It also supports Android-specific actions such as adb reverse for Metro, opening the dev menu, and tapping or typing on screen.
      20
      MIT