Help us improve
Share bugs, ideas, or general feedback.
Share bugs, ideas, or general feedback.
Share bugs, ideas, or general feedback.
By DaveDev42
Expo/React Native app automation — QA testing, UI automation, and Maestro integration. Run /expo-mcp:install afterward to verify setup.
npx claudepluginhub davedev42/expo-mcp --plugin expo-mcpUses power tools
Uses Bash, Write, or Edit tools
No model invocation
Share bugs, ideas, or general feedback.
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge.
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge.
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}Plugin-based MCP server for React Native/Expo runtime debugging, inspection, and automation via Metro/CDP
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
Validation and quality enforcement for Expo React Native projects.
Expo (EAS) iOS/Android アプリのデプロイ自動化。App ID登録、証明書作成、EASビルド、TestFlight配布、App Store提出までをCLIから実行
Mobile app test automation with Appium, Detox, XCUITest - test iOS and Android apps
Mobile device automation for Android and iOS - control devices with natural language
Tauri desktop app test automation via MCP. Launch, inspect, interact with, and test Tauri v2 apps using accessibility tree snapshots and DOM manipulation.
Executes directly as bash, bypassing the AI model
Executes directly as bash, bypassing the AI model
Share bugs, ideas, or general feedback.
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: "hello@example.com" })
press_key({ key: "Enter" })
scroll({ direction: "down" })
swipe({ direction: "left" })