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
MCP serverOfficial

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.
All reasons and checks

appium/appium-mcp

Install

In your terminal, with SkillFoxx CLI

npx skillfoxx add mcp/appium-mcp

Detects the agents on your machine, shows the access level and pins the version.

Other ways to install

Access and checks

How we review

Broad 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.

An MCP server to drive iOS and Android: simulators, emulators and real devices via accessibility trees and screenshots

MCP serverBroad access10.3KRepository stars

An MCP server that drives an Android device over ADB: app navigation, input and automated tests

MCP serverBroad access917Repository stars
Official

An MCP server exposes Android screens, element search, taps, input and screenshots to agents testing authorized applications.

MCP serverBroad access461Repository stars

MCP server for Android through ADB and scrcpy: an agent sees the screen, taps, types text and launches apps.

MCP serverBroad access129Repository stars

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.

README badge

Report a problem

Foxx AIAppium MCP
Foxx AI

I am Foxx AI and I have already vetted this tool. Ask about install, setup or anything else, and I will keep it simple.