Expo

Launch Expo dev server, bind devices automatically, and automate UI testing with Maestro.
  • javascript

1

GitHub Stars

javascript

Language

5 months ago

First Indexed

2 months ago

Catalog Refreshed

Documentation & install

Readme and setup notes from the catalogue, plus a client-ready config you can copy for your MCP host.

Installation

Add the following to your MCP client configuration file.

Configuration

View docs
{
  "mcpServers": {
    "davedev42-expo-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "expo-mcp"
      ],
      "env": {
        "EXPO_APP_DIR": "YOUR_PATH_TO_EXPO_APP",
        "ESSENTIAL_TOOLS": "all",
        "LOG_BUFFER_SIZE": "400",
        "MAESTRO_CLI_PATH": "/home/user/.maestro/bin/maestro"
      }
    }
  }
}

You can automate Expo/React Native app development and UI testing with this MCP server. It launches the Expo dev server, binds devices automatically, and exposes Maestro-based UI automation tools for rapid testing and interaction.

How to use

Start a session to launch Expo and bind a device, then use Maestro tools to interact with your app. You can take screenshots, tap UI elements by text or id, input text, inspect the view hierarchy, and run Maestro flows. When you are finished, stop the session to clean up resources.

How to install

Prerequisites: your system must have Node.js version 18 or higher and npm installed.

Install the MCP server globally or run it via npx.

npm install -g expo-mcp
# or
npx expo-mcp

Configuration and usage details

Configure the MCP server to manage your Expo app session. Create a configuration file that points to your Expo app directory and enables the MCP runtime to start with the Expo developer tools.

{
  "mcpServers": {
    "expo-mcp": {
      "command": "npx",
      "args": ["-y", "expo-mcp"],
      "env": {
        "EXPO_APP_DIR": "/path/to/your/expo/app"
      }
    }
  }
}

Environment setup and defaults

Important environment variables you may configure to tailor the session behavior include the Expo app directory, Maestro CLI path, and log settings.

# Example environment configuration
export EXPO_APP_DIR=/path/to/your/expo/app
export MAESTRO_CLI_PATH=~/.maestro/bin/maestro
export ESSENTIAL_TOOLS=all
export LOG_BUFFER_SIZE=400

How the session works

  1. Session creation: launching the Expo dev server starts the session and waits for a device to connect.

  2. Device binding: once a device connects, its identity is stored in the session for automatic use by Maestro tools.

  3. Automatic tool usage: Maestro tools automatically use the active session and the device binding for all actions.

  4. Session end: stopping the session cleans up the Expo server and any bound devices.

Examples of common workflows

Launch the Expo session for your iOS simulator or Android emulator, then perform common UI automation tasks such as taking a screenshot, tapping the login button, and entering text.

Reload the Expo app after code changes to apply updates without restarting the entire session.

Notes and troubleshooting

If you need to inspect what is happening under the hood, check the Metro bundler logs and the Maestro tool output. Adjust log level to capture more details if an issue arises.

Security and usage tips

Keep your environment secure by limiting access to your MCP server and ensuring the Expo app directory is writable only by trusted processes.

Notes on tools and capabilities

The MCP server exposes a suite of Maestro-based tools to interact with your app UI. You can perform taps, text input, screenshots, view hierarchy inspection, App launch by bundle, back navigation, and flow execution.

Available tools

launch_expo

Start Expo server and establish a session with the device

stop_expo

Stop Expo server and end the session

reload_expo

Hot reload the app on connected device

app_status

Get session status including server info and device binding

get_logs

Retrieve Metro bundler logs with optional level filtering

tap_on

Tap on a UI element by text, id, or coordinates

input_text

Type text into the focused input field

take_screenshot

Capture a screenshot of the current app screen (auto-resized for UI workflows)

inspect_view_hierarchy

Retrieve the UI element tree for debugging

launch_app

Launch the app by bundle ID

back

Navigate back in the app UI

run_flow

Execute a Maestro YAML flow to automate complex interactions

Built by
VeilStrat
AI signals for GTM teams
© 2026 VeilStrat. All rights reserved.All systems operational