npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

appium-mcp

v1.3.0

Published

Intelligent MCP server providing AI assistants with powerful tools and resources for Appium mobile automation

Readme

MCP Appium - MCP server for Mobile Development and Automation | iOS, Android, Simulator, Emulator, and Real Devices

License

MCP Appium is an intelligent MCP (Model Context Protocol) server designed to empower AI assistants with a robust suite of tools for mobile automation. It streamlines mobile app testing by enabling natural language interactions, intelligent locator generation, and automated test creation for both Android and iOS platforms.

Table of Contents

🚀 Features

  • Cross-Platform Support: Automate tests for both Android (UiAutomator2) and iOS (XCUITest).
  • Intelligent Locator Generation: AI-powered element identification using priority-based strategies.
  • Interactive Session Management: Easily create and manage sessions on local mobile devices.
  • Smart Element Interactions: Perform actions like clicks, text input, screenshots, and element finding.
  • Automated Test Generation: Generate Java/TestNG test code from natural language descriptions.
  • Page Object Model Support: Utilize built-in templates that follow industry best practices.
  • Flexible Configuration: Customize capabilities and settings for different environments.

📋 Prerequisites

Before you begin, ensure you have the following installed:

System Requirements

  • Node.js (v22 or higher)
  • npm or yarn
  • Java Development Kit (JDK) (8 or higher)
  • Android SDK (for Android testing)
  • Xcode (for iOS testing on macOS)

Mobile Testing Setup

Android

  1. Install Android Studio and the Android SDK.
  2. Set the ANDROID_HOME environment variable.
  3. Add the Android SDK tools to your system's PATH.
  4. Enable USB debugging on your Android device.
  5. Install the Appium UiAutomator2 driver dependencies.

iOS (macOS only)

  1. Install Xcode from the App Store.
  2. Install the Xcode Command Line Tools: xcode-select --install.
  3. Install iOS simulators through Xcode.
  4. For real device testing, configure your provisioning profiles.

🛠️ Installation

Standard config works in most of the tools::

{
  "mcpServers": {
    "appium-mcp": {
      "disabled": false,
      "timeout": 100,
      "type": "stdio",
      "command": "npx",
      "args": [
        "appium-mcp@latest"
      ],
      "env": {
        "ANDROID_HOME": "/path/to/android/sdk",
        "CAPABILITIES_CONFIG": "/path/to/your/capabilities.json"
      }
    }
  }
}

In Cursor IDE

The easiest way to install MCP Appium in Cursor IDE is using the one-click install button:

Install MCP Server

This will automatically configure the MCP server in your Cursor IDE settings. Make sure to update the ANDROID_HOME environment variable in the configuration to match your Android SDK path.

Or install manually:

Go to Cursor Settings → MCP → Add new MCP Server. Name it to your liking, use command type with the command npx -y appium-mcp@latest. You can also verify config or add command arguments via clicking Edit.

Here is the recommended configuration:

{
  "appium-mcp": {
    "disabled": false,
    "timeout": 100,
    "type": "stdio",
    "command": "npx",
    "args": ["appium-mcp@latest"],
    "env": {
      "ANDROID_HOME": "/Users/xyz/Library/Android/sdk"
    }
  }
}

Note: Make sure to update the ANDROID_HOME path to match your Android SDK installation path.

With Gemini CLI

Use the Gemini CLI to add the MCP Appium server:

gemini mcp add appium-mcp npx -y appium-mcp@latest

This will automatically configure the MCP server for use with Gemini. Make sure to update the ANDROID_HOME environment variable in the configuration to match your Android SDK path.

With Claude Code CLI

Use the Claude Code CLI to add the MCP Appium server:

claude mcp add appium-mcp -- npx -y appium-mcp@latest

This will automatically configure the MCP server for use with Claude Code. Make sure to update the ANDROID_HOME environment variable in the configuration to match your Android SDK path.

⚙️ Configuration

Capabilities

Create a capabilities.json file to define your device capabilities:

{
  "android": {
    "appium:app": "/path/to/your/android/app.apk",
    "appium:deviceName": "Android Device",
    "appium:platformVersion": "11.0",
    "appium:automationName": "UiAutomator2",
    "appium:udid": "your-device-udid"
  },
  "ios": {
    "appium:app": "/path/to/your/ios/app.ipa",
    "appium:deviceName": "iPhone 15 Pro",
    "appium:platformVersion": "17.0",
    "appium:automationName": "XCUITest",
    "appium:udid": "your-device-udid"
  }
}

Set the CAPABILITIES_CONFIG environment variable to point to your configuration file.

🎯 Available Tools

MCP Appium provides a comprehensive set of tools organized into the following categories:

Platform & Device Setup

| Tool | Description | | ----------------- | ------------------------------------------------------------------------ | | select_platform | REQUIRED FIRST: Ask user to choose between Android or iOS platform | | select_device | Select a specific device when multiple devices are available | | boot_simulator | Boot an iOS simulator and wait for it to be ready (iOS only) | | setup_wda | Download and setup prebuilt WebDriverAgent for iOS simulators (iOS only) | | install_wda | Install and launch WebDriverAgent on a booted iOS simulator (iOS only) |

Session Management

| Tool | Description | | ---------------- | --------------------------------------------------------- | | create_session | Create a new mobile automation session for Android or iOS | | delete_session | Delete the current mobile session and clean up resources |

Context Management

| Tool | Description | | -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | | appium_get_contexts | Get all available contexts in the current Appium session. Returns a list of context names including NATIVE_APP and any webview contexts (e.g., WEBVIEW_ or WEBVIEW_). | | appium_switch_context | Switch to a specific context in the Appium session. Use this to switch between native app context (NATIVE_APP) and webview contexts (WEBVIEW_ or WEBVIEW_). Use appium_get_contexts to see available contexts first. |

Element Discovery & Interaction

| Tool | Description | | --------------------- | -------------------------------------------------------------------------------------------- | | appium_find_element | Find a specific element using various locator strategies (xpath, id, accessibility id, etc.) | | appium_click | Click on an element | | appium_double_tap | Perform double tap on an element | | appium_set_value | Enter text into an input field | | appium_get_text | Get text content from an element |

Screen & Navigation

| Tool | Description | | -------------------------- | ------------------------------------------------------- | | appium_screenshot | Take a screenshot of the current screen and save as PNG | | appium_scroll | Scroll the screen vertically (up or down) | | appium_scroll_to_element | Scroll until a specific element becomes visible | | appium_swipe | Swipe the screen in a direction (left, right, up, down) or between custom coordinates | | appium_get_page_source | Get the page source (XML) from the current screen |

App Management

| Tool | Description | | --------------------- | ------------------------------------------------------------------ | | appium_activate_app | Activate (launch/bring to foreground) a specified app by bundle ID | | appium_installApp | Install an app on the device from a file path | | appium_uninstallApp | Uninstall an app from the device by bundle ID | | appium_terminateApp | Terminate (close) a specified app | | appium_list_apps | List all installed apps on the device (Android only) |

Test Generation & Documentation

| Tool | Description | | ---------------------------- | -------------------------------------------------------------------------------- | | generate_locators | Generate intelligent locators for all interactive elements on the current screen | | appium_generate_tests | Generate automated test code from natural language scenarios | | appium_documentation_query | Query Appium documentation using RAG for help and guidance |

🤖 Client Support

MCP Appium is designed to be compatible with any MCP-compliant client.

📚 Usage Examples

Amazon Mobile App Checkout Flow

Here's an example prompt to test the Amazon mobile app checkout process:

Open Amazon mobile app, search for "iPhone 15 Pro", select the first search result, add the item to cart, proceed to checkout, sign in with email "[email protected]" and password "testpassword123", select shipping address, choose payment method, review order details, and place the order. Use JAVA + TestNG for test generation.

This example demonstrates a complete e-commerce checkout flow that can be automated using MCP Appium's intelligent locator generation and test creation capabilities.

🙌 Contributing

Contributions are welcome! Please feel free to submit a pull request or open an issue to discuss any changes.

📄 License

This project is licensed under the Apache-2.0. See the LICENSE file for details.