
Appium MCP Server: Setup for Claude, Cursor and Other Apps
Lets your assistant control Android and iOS phones and emulators with Appium so it can test apps and write test code.
This is the Appium project's own server. It lets your assistant start a session on an Android or iOS device, tap and type, read the screen, take screenshots and write test code from what it did.
It runs on your computer and needs no account. For local devices you also need the platform tools, such as the Android SDK or Xcode. The list below shows the 32 tools that are on by default, and two more groups can be switched on.
Good for
- Mobile developers who want an assistant to try their app on a device
- QA engineers who generate Appium test code from a real run
- Teams who test on remote Appium servers or device clouds
Works in
12 should work
Tap an app to see how to set it up and any known problems.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Client does not support this transport.
Client does not support this transport.
Install MCP Appium - Mobile Development and Automation Server
Claude Code
- 1
Copy this prompt.
Add the MCP Appium - Mobile Development and Automation Server server to Claude Code. Run this command: claude mcp add appium -- npx -y appium-mcp Then check that it loaded and tell me if I need to sign in or restart.
- 2
Paste it into Claude Code. It shows the change and asks before running it.
Requires Node.js, Android SDK (Android) or Xcode (iOS).
Install the platform tools first: Android Studio with the SDK and ANDROID_HOME set for Android, or Xcode with its command line tools for iOS. A remote Appium server needs neither.
Built from the package data we hold. Not yet tested by us.
Tools
Finds the phone or emulator to test on
Lists local Android and iOS devices and picks one. If several are connected it asks you to choose. Skip it for remote Appium servers.
Try: “Which Android devices are connected?”
Read ·
select_deviceBoots an iOS simulator ready for testing
Boots an iOS or tvOS simulator, downloads and caches WebDriverAgent and starts it on a free port. It can also only boot the simulator.
Try: “Boot the iPhone 16 simulator and get it ready.”
Runs code ·
prepare_ios_simulatorSigns the test runner for a real iPhone
Lists your provisioning profiles, then downloads, packages and signs WebDriverAgent for a real device. It needs macOS, Xcode 16 or newer and a device in developer mode.
Try: “Prepare my iPhone for testing.”
Runs code ·
appium_prepare_ios_real_deviceStarts, joins and ends test sessions
Creates, attaches to, lists, selects, detaches from and deletes Appium sessions, locally or on a remote Appium server.
Try: “Start an Android session on the emulator.”
Runs code ·
appium_session_managementFinds one element on the screen
Looks up a single button, field or label by a selector so later steps can use it.
Try: “Find the Login button.”
Read ·
appium_find_elementFinds all matching elements
Returns every element on screen that matches a selector.
Try: “List all the buttons on this screen.”
Read ·
appium_find_elementsGets the focused element
Returns the element that currently has focus.
Try: “What field is focused right now?”
Read ·
appium_get_active_elementReads an element's text
Returns the visible text of an element.
Try: “What does the title say?”
Read ·
appium_get_textReads an element's attribute
Returns one attribute of an element, such as whether it is enabled or checked.
Try: “Is the Submit button enabled?”
Read ·
appium_get_element_attributeTypes text into a field
Sets or enters text in an input element.
Try: “Type my email in the email field.”
Write ·
appium_set_valueTaps, swipes, scrolls and pinches
Performs touch gestures chosen by an action name. The tool handles the differences between Android and iOS.
Try: “Scroll down to the Settings entry and tap it.”
Write ·
appium_gestureDrags one item onto another
Drags an element or point to a target.
Try: “Drag the card into the Done column.”
Write ·
appium_drag_and_dropRuns custom multi-touch moves
Runs raw W3C action sequences for gestures the standard tool cannot do, such as a three-finger swipe.
Try: “Do a two-finger rotate on the map.”
Write ·
appium_perform_actionsPresses back, home and device buttons
Presses navigation keys on Android, or physical buttons such as home and volume on iOS and tvOS.
Try: “Press the Back button.”
Write ·
appium_mobile_press_keyHides the keyboard or checks it
Hides the software keyboard or reports whether it is showing.
Try: “Hide the keyboard.”
Write ·
appium_mobile_keyboardReads or sets the clipboard
Gets or sets the device clipboard as plain text.
Try: “Put this code in the phone's clipboard.”
Write ·
appium_mobile_clipboardDumps the screen as XML
Returns the current screen's element tree, or saves it to a file.
Try: “Show the screen structure.”
Files ·
appium_get_page_sourceTakes a screenshot
Captures the screen and saves it to the screenshots folder, which defaults to the system temp folder.
Try: “Take a screenshot of the current screen.”
Write ·
appium_screenshotRecords the screen
Starts and stops a screen recording and saves it as an MP4. On iOS it needs ffmpeg.
Try: “Record the checkout flow.”
Write ·
appium_screen_recordingGets the screen size
Returns the width and height of the device window.
Try: “How big is the screen?”
Read ·
appium_get_window_sizeReads or rotates the screen
Gets or sets portrait or landscape orientation.
Try: “Rotate to landscape.”
Write ·
appium_orientationHandles pop-up alerts
Accepts, dismisses or reads a system alert on the device.
Try: “Accept the permission dialog.”
Write ·
appium_alertSwitches between native and web views
Lists the app's contexts and switches between native and webview contexts.
Try: “Switch to the webview.”
Write ·
appium_contextStarts, stops, installs and removes apps
Activates, terminates, installs, uninstalls, backgrounds and checks apps, clears an app's data without uninstalling it, lists apps and opens deep links.
Try: “Uninstall the test app and install the new build.”
Delete ·
appium_app_lifecycleReads or changes app permissions
Reads and updates Android app permissions or iOS Simulator privacy settings, and resets iOS privacy prompts.
Try: “Grant the camera permission to the app.”
Write ·
appium_mobile_permissionsLocks, shakes and opens notifications
Locks or unlocks the screen, shakes the device or opens the notification panel.
Try: “Lock the phone.”
Write ·
appium_mobile_device_controlReads device, battery and time
Returns device information, battery state or the device time.
Try: “What is the battery level?”
Read ·
appium_mobile_device_infoReads or fakes the GPS location
Gets, sets or resets the device's GPS coordinates, on simulators and emulators and on real devices with mock location.
Try: “Set the location to Berlin.”
Write ·
appium_geolocationPushes or pulls a file
Pushes a file to the device or pulls one from it, using base64 content.
Try: “Pull the app log from the device.”
Write ·
appium_mobile_fileReads or changes driver settings
Reads the current Appium driver settings or updates them, for example idle timeouts.
Try: “Increase the wait timeout to 10 seconds.”
Write ·
appium_driver_settingsLists every locator on the screen
Generates locators for all elements on the current screen. It is heavy, so the docs advise using it only for inspection.
Try: “Generate locators for this screen.”
Read ·
generate_locatorsWrites test code from what you did
Returns a workflow for the scenario you describe, then generates test code from the interactions the assistant observed.
Try: “Generate a login test from this flow.”
Read ·
appium_generate_tests
Read from the source code
Permissions
high risk · 5 things to watch · 3 advisories
High risk
The assistant can operate a connected device like a person would, including uninstalling apps, clearing app data and changing permissions and location. Use a test device or emulator, and approve app removal and data clearing.
What it can do
- Read your data
- Create and change things
- Delete things
- Read-only mode
Watch out for
It can uninstall apps and clear app data
The app tool can remove an app and wipe its data on the connected device. Use a test device and approve those actions. github.com
It acts on a real device like a user
It can type text, tap, change permissions, fake GPS and read the clipboard. Do not point it at a personal phone with real accounts. github.com
Installing from a URL downloads files
App installs accept web links by default. Set ALLOW_REMOTE_APP_URLS to false to allow local paths only. github.com
Screenshots and recordings go to disk
They are saved in the system temp folder unless you set SCREENSHOTS_DIR, so they can show private screens. github.com
Two optional groups are off by default
A vision tool turns on with AI_VISION_ENABLED and sends screenshots to the model API you set. A documentation tool group turns on with APPIUM_MCP_DOCS_ENABLED. github.com
Security advisories
3 known advisories, all fixed in a newer version.
- Unrestricted screen-recording filtergraphs allow host file overwrite, SSRF, and conditional code executionhigh · Fixed in 1.94.2 · GHSA-3cp6-m69f-v2cj
- Shell Injection via unsanitized udid parameter in prepare_ios_simulator MCP toolhigh · Fixed in 1.86.5 · GHSA-pchr-rp2x-w3vw
- appium-mcp: Unescaped Locator Data XSS in MCP-UI Resource (createLocatorGeneratorUI)high · Fixed in 1.85.10 · GHSA-x975-rgx4-5fh4
Technical details
| Talks to | Remote Appium or WebDriver servers you name. App download URLs when you install from a link. GitHub, when it downloads WebDriverAgent for iOS |
|---|---|
| Sign-in and keys | No sign-in is used. Device and tool access come from your local setup. |
| Scopes |
|
Questions
Is the Appium MCP server official?
Yes. It lives in the Appium organisation's own repository.
Do I need Appium installed first?
Not for local Android and iOS sessions. The server bundles the Android and iOS drivers. You still need the Android SDK or Xcode, and a remote server can be used instead.
Does it need an API key?
No. The optional vision tool needs a model API key only if you turn it on.
Can it run read-only?
No. Most tools act on the device, and the app tool can uninstall apps and clear data.
Does it work on iPhones?
Yes, on simulators and on real devices. A real device needs macOS, Xcode 16 or newer and developer mode.
Is the tool list complete?
Yes for a default install: 32 tools, the same set in the 1.99.1 source and the published 1.99.2 npm package. Two opt-in groups are not counted: a vision tool (AI_VISION_ENABLED) and documentation tools (APPIUM_MCP_DOCS_ENABLED).
What happens to my sessions if the client closes?
By default it deletes the sessions it started when the client disconnects. A setting can keep them.
How do I add it to Claude Code or Cursor?
Use your client's tab in the install box above. Set ANDROID_HOME if you test Android devices.
Information
updated Nov 2, 2026
- Publisher
- Official
- Package
appium-mcp- Registry
- npm
- Transport
- stdio
- Auth
- None
- Version
- 1.99.1
- License
- Apache-2.0
- Last commit
- Oct 27, 2026
- Open issues
- 13
- Listed in
- Official MCP registry
Sources
Docs, issue trackers and discussions this page is built from. Issues, quotes and findings above link to their own source.
Show all 3Hide
- github.com · github.com
- github.com · github.com
- github.com · github.com