Expo MCP Server
Enables automated testing and development of Expo/React Native apps through session-based Expo dev server management and Maestro UI automation tools for tapping, text input, screenshots, and flow execution.
README
expo-mcp
MCP server for Expo/React Native app automation with Maestro integration.
Features
- Session-Based Architecture: Launch Expo and device binds automatically - no manual device ID management
- Expo Dev Server Management: Start/stop/reload Expo development server
- Maestro Integration: Full UI automation tools (tap, input, screenshot, etc.)
Installation
npm install -g expo-mcp
# or
npx expo-mcp
Usage with Claude Code
Add to your .mcp.json:
{
"mcpServers": {
"expo-mcp": {
"command": "npx",
"args": ["-y", "expo-mcp"],
"env": {
"EXPO_APP_DIR": "/path/to/your/expo/app"
}
}
}
}
Quick Start
# 1. Start session (launches Expo + binds device automatically)
launch_expo({ target: "ios-simulator" })
# 2. Use Maestro tools directly (no device_id needed!)
take_screenshot()
tap_on({ text: "Login" })
input_text({ text: "hello@example.com" })
# 3. Reload app after code changes
reload_expo()
# 4. Check logs if needed
get_logs({ level: "error" })
# 5. Stop session when done
stop_expo()
Tools
Lifecycle Tools
| Tool | Description |
|---|---|
app_status |
Get session status (server info, device_id) |
launch_expo |
Start Expo server and establish session with device |
stop_expo |
Stop Expo server and end session |
reload_expo |
Hot reload the app on connected device |
get_logs |
Get Metro bundler logs (filterable by level) |
launch_expo Options
| Option | Type | Description |
|---|---|---|
target |
ios-simulator | android-emulator | web-browser |
Device to launch |
host |
lan | tunnel | localhost |
Connection mode |
port |
number | Server port (default: 8081, auto-increments if busy) |
clear |
boolean | Clear Metro bundler cache |
dev |
boolean | Development mode (default: true) |
Maestro Tools
All Maestro tools work automatically once a session is active:
| Tool | Description |
|---|---|
tap_on |
Tap on UI element by text, id, or point |
input_text |
Type text into focused field |
take_screenshot |
Capture screen (auto-resized for LLM) |
inspect_view_hierarchy |
Get UI element tree |
launch_app |
Launch app by bundle ID |
back |
Press back button |
run_flow |
Run Maestro YAML flow |
Note: Maestro tools require an active session. Call
launch_expofirst.
Environment Variables
| Variable | Description | Default |
|---|---|---|
EXPO_APP_DIR |
Path to Expo app directory | Current working directory |
MAESTRO_CLI_PATH |
Path to Maestro CLI | ~/.maestro/bin/maestro |
ESSENTIAL_TOOLS |
Comma-separated list of tools to expose | All tools |
LOG_BUFFER_SIZE |
Max log lines to keep in memory | 400 |
How It Works
- Session Creation:
launch_expostarts Expo dev server and waits for device connection - Device Binding: Once device connects, its ID is stored in the session
- Automatic Injection: All Maestro tools automatically use the session's device ID
- Session End:
stop_expocleans up everything
This eliminates the need for manual device_id management.
Requirements
- Node.js >= 18
- Xcode (for iOS Simulator)
- Android Studio (for Android Emulator)
- Maestro CLI (for UI automation)
License
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.