Appium MCP
appium-mcp
An agent opens sessions on emulators and real devices, finds elements by description and writes Java tests via the Appium server.
- 518 ★ on the repository
- Last commit
- Apache-2.0
Broad access
Why this level
- Controls a device: installs apps, taps, types and captures the screen.
- On a real device the agent can see personal data and accounts inside open apps.
Install
- Works in
In your terminal, with SkillFoxx CLI
npx skillfoxx add mcp/appium-mcpDetects the agents on your machine, shows the access level and pins the version.
Other ways to install
Access and checks
How we reviewBroad accessThe tool can change data, run commands or handle secrets.
- Controls a device: installs apps, taps, types and captures the screen.
- On a real device the agent can see personal data and accounts inside open apps.
This is third-party code. Review the repository files before installing.
What it does
appium-mcp is an MCP server for automating mobile apps on Android (UiAutomator2) and iOS (XCUITest). An agent opens a session on an emulator, simulator or real device, finds elements, taps, types, takes screenshots and records the screen. For tests it generates Java with TestNG from a scenario description and ships Page Object templates. Finding elements by a description such as "login button" is switched on separately and needs a vision model behind an OpenAI-compatible API. The server runs over stdio with `npx appium-mcp@latest`, and `--httpStream` enables HTTP. Embedded drivers work locally, and an existing Appium server is reached through `remoteServerUrl`.
Who it is for. QA engineers and mobile developers who run Android and iOS scenarios through an agent.
Good fit when
- An agent walks a scenario in an emulator app and captures each step with a screenshot.
- A scenario description must become a Java TestNG test.
- Locators are picked after XPath breaks on every release.
- An app is checked on a real iPhone or Android device attached to the machine.
Not a fit when
- Tests are needed in Python or JavaScript: the built-in generator targets Java with TestNG.
- The machine has no Android SDK, JDK or Xcode.
- Screen screenshots must not go to an external vision model.
Example request
Launch the app on an Android emulator, find the login button and walk the checkout scenario, attaching screenshots.MCP
- Transport
- stdio, http
- Authentication
- not required
Environment variables
`ANDROID_HOME`- Path to the Android SDK, needed for Android.
`CAPABILITIES_CONFIG`- Absolute path to a `capabilities.json` with per-platform presets.
`AI_VISION_ENABLED`- `true` registers the `appium_ai` tool for description-based search.
`AI_VISION_API_BASE_URL`- Base URL of the OpenAI-compatible vision model API, required when the feature is on.
`AI_VISION_API_KEY`secret- Vision model provider key, required when the feature is on.
Limitations
Node.js 22 or newer, JDK 8 or higher, Android SDK with `ANDROID_HOME` and Xcode for iOS (macOS only) are required. A real iPhone needs Developer Mode and an Apple ID signed in to Xcode. Description-based search sends screenshots to a vision model with `AI_VISION_API_KEY`. Keep the HTTP transport on loopback: the Origin check is not authentication. `ALLOW_REMOTE_APP_URLS=false` restricts installing apps from URLs.
How to disable. Remove the `appium-mcp` block from the client configuration. Screenshots and screen recordings remain in `SCREENSHOTS_DIR` or the system temp directory.
FAQ
Which platforms does it support?
Android through UiAutomator2 and iOS through XCUITest: emulators, simulators and real devices.
How do I enable finding elements by description?
Set `AI_VISION_ENABLED=true`, `AI_VISION_API_BASE_URL` and `AI_VISION_API_KEY`: the `appium_ai` tool is then registered. The default model is Qwen3-VL-235B-A22B-Instruct.
Can it connect to an existing Appium server?
Yes. Pass `remoteServerUrl` to `appium_session_management` with `action=create` or `attach`. A regular expression in `REMOTE_SERVER_URL_ALLOW_REGEX` limits allowed addresses.
What happens to sessions when the client disconnects?
By default `APPIUM_MCP_ON_CLIENT_DISCONNECT=delete_all` deletes the sessions the server created.
Where are screenshots and recordings saved?
In the directory set by `SCREENSHOTS_DIR`, by default the system temp directory.
Discussion
No questions or reviews yet.
Related
MCP serversAn MCP server to drive iOS and Android: simulators, emulators and real devices via accessibility trees and screenshots
An MCP server that drives an Android device over ADB: app navigation, input and automated tests
Android MCP Server: control Android through ADB
Android MCP Server
A Python MCP server: the agent takes screenshots of an Android device, reads clickable interface elements and runs ADB commands
An MCP server that installs on a jailbroken iPhone and gives an agent 46 tools: taps, screenshots, OCR, apps, files and logs
An MCP server exposes Android screens, element search, taps, input and screenshots to agents testing authorized applications.
MCP server for Android through ADB and scrcpy: an agent sees the screen, taps, types text and launches apps.
README in short
The README lists features, system requirements and Android and iOS setup. It follows with configuration for Cursor, Gemini CLI and Claude Code, an environment variable table, HTTP transport security and the plugin API. Tool sections are grouped by sessions, elements, screen and apps.