By DaveDev42
Expo/React Native app automation — QA testing, UI automation, and Maestro integration. Run /expo-mcp:install afterward to verify setup.
Uses power tools
Uses Bash, Write, or Edit tools
No model invocation
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
This plugin requires configuration values that are prompted when the plugin is enabled. Sensitive values are stored in your system keychain.
app_dirPath to the Expo app directory, relative to the project root (e.g., apps/mobile). Leave empty if the Expo app lives at the project root.
${user_config.app_dir}Executes directly as bash, bypassing the AI model
Executes directly as bash, bypassing the AI model
MCP server for Expo/React Native app automation with Maestro integration.
start_session launches Expo, binds a device, and acquires a lease — no manual device ID managementTwo commands, then restart:
# 1. Install the plugin. Just dismiss the "Expo App Directory" prompt
# (or leave it empty) — the next step configures it for you.
/plugin marketplace add DaveDev42/expo-mcp
/plugin install expo-mcp --scope project
# 2. One-shot installer. Runs environment checks, auto-detects the Expo
# app directory, and writes the userConfig directly into
# .claude/settings.json. No /plugin UI round-trip needed.
/expo-mcp:install # auto-detect
/expo-mcp:install apps/mobile # monorepo: pass the path explicitly
Then restart Claude Code and all tools, agents, and skills are ready.
Installer flags:
/expo-mcp:install apps/mobile --global # write to ~/.claude/settings.json
/expo-mcp:install --scaffold-maestro # also create a starter maestro/
/expo-mcp:install --skip-doctor # skip prerequisite checks
The installer runs bundled Node scripts (doctor.mjs, detect-app-dir.mjs, scaffold-maestro.mjs) from the plugin directory. Claude Code will prompt you to approve each one the first time it runs — approve them to continue.
If you'd rather pre-approve the scripts (no prompts), add this to .claude/settings.local.json in your project — replacing <PATH> with the absolute path shown by Claude Code the first time each script runs:
{
"permissions": {
"allow": [
"Bash(node <PATH>/doctor.mjs:*)",
"Bash(node <PATH>/detect-app-dir.mjs:*)",
"Bash(node <PATH>/scaffold-maestro.mjs:*)"
]
}
}
Installing the plugin automatically wires up:
expo MCP server (no manual .mcp.json needed)qa) for automated mobile app testingflow-writer) for creating Maestro YAML test flows/expo-guide) with tool reference and best practicesThis project is distributed only through GitHub (the expo-mcp name on npm belongs to a different, unrelated package — do not use it). Run it via the GitHub reference:
npx -y github:DaveDev42/expo-mcp
If not using the plugin, add to your .mcp.json:
{
"mcpServers": {
"expo": {
"command": "npx",
"args": ["-y", "github:DaveDev42/expo-mcp"]
}
}
}
Use a positional argument to specify the app directory:
{
"mcpServers": {
"expo": {
"command": "npx",
"args": ["-y", "github:DaveDev42/expo-mcp", "apps/mobile"]
}
}
}
Pin a specific simulator or emulator with --device-id:
{
"mcpServers": {
"expo": {
"command": "npx",
"args": ["-y", "github:DaveDev42/expo-mcp", "--device-id=6D192F60-1234-5678-ABCD-000000000000"]
}
}
}
Exclude specific tools with --exclude-tools:
{
"mcpServers": {
"expo": {
"command": "npx",
"args": ["-y", "github:DaveDev42/expo-mcp", "apps/mobile", "--exclude-tools=list_devices"]
}
}
}
Or expose only specific tools with --tools:
{
"mcpServers": {
"expo": {
"command": "npx",
"args": ["-y", "github:DaveDev42/expo-mcp", "--tools=start_session,stop_session,take_screenshot"]
}
}
}
Usage: expo-mcp [app-dir] [options]
Arguments:
app-dir Path to Expo app directory (default: cwd)
Options:
--device-id=<id> Specific device to use (iOS simulator UUID or Android serial)
--exclude-tools=tool1,tool2 Exclude specific tools from the MCP server
--tools=tool1,tool2 Only expose specific tools
-h, --help Show help message
-v, --version Show version number
# 1. Start session (launches Expo + binds device + acquires lease)
start_session({ target: "ios-simulator" })
# 2. Use tools directly (no device_id needed!)
take_screenshot()
tap_on({ text: "Login" })
input_text({ text: "[email protected]" })
press_key({ key: "Enter" })
scroll({ direction: "down" })
swipe({ direction: "left" })
npx claudepluginhub davedev42/expo-mcp --plugin expo-mcpTauri desktop app test automation via MCP. Launch, inspect, interact with, and test Tauri v2 apps using accessibility tree snapshots and DOM manipulation.
Plugin-based MCP server for React Native/Expo runtime debugging, inspection, and automation via Metro/CDP
Validation and quality enforcement for Expo React Native projects.
Complete AI coding agent harness for React Native and Expo — 13 agents, 22 commands, 7 skills, 10 MCP integrations, autonomous worker mode, visual debugging, smart routing
Connect to Kobiton mobile testing platform - manage devices, run automation suites, and view test results
Expo (EAS) iOS/Android アプリのデプロイ自動化。App ID登録、証明書作成、EASビルド、TestFlight配布、App Store提出までをCLIから実行
Mobile app test automation with Appium, Detox, XCUITest - test iOS and Android apps