- Home
- MCP servers
- Expo
Expo
- 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
-
Session creation: launching the Expo dev server starts the session and waits for a device to connect.
-
Device binding: once a device connects, its identity is stored in the session for automatic use by Maestro tools.
-
Automatic tool usage: Maestro tools automatically use the active session and the device binding for all actions.
-
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