Platform & IDE Setup
Detailed setup instructions for all supported IDEs and platforms.
Requirements
- Node.js 18+
- React Native app running with Metro bundler
- Recommended: execbro-sdk in your app — wires stores and the network layer into the agent for dramatically better debugging (optional; ExecBro works without it)
- iOS UI automation: Facebook IDB or AXe CLI — required for tap, swipe, text input, accessibility on iOS Simulator
No installation required — every client below uses npx to fetch the latest version on demand. After saving the configuration, fully quit and relaunch the client so it picks up the new server.
Claude Code
claude mcp add execbro --scope user -- npx -y execbro@latestclaude mcp add execbro --scope project -- npx -y execbro@latestOr edit ~/.claude.json (user) / .mcp.json (project) manually:
{
"mcpServers": {
"execbro": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"execbro@latest"
]
}
}
}Claude Desktop
Edit the config at ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows). You can also open it from Settings → Developer → Edit Config.
{
"mcpServers": {
"execbro": {
"command": "npx",
"args": [
"-y",
"execbro@latest"
]
}
}
}Codex CLI (OpenAI)
codex mcp add execbro -- npx -y execbro@latestOr edit ~/.codex/config.toml directly:
[mcp_servers.execbro]
command = "npx"
args = ["-y", "execbro@latest"]Cursor
Via Command Palette: Cmd+Shift+P→ "View: Open MCP Settings". Or edit .cursor/mcp.json (project) / ~/.cursor/mcp.json (global):
{
"mcpServers": {
"execbro": {
"command": "npx",
"args": [
"-y",
"execbro@latest"
]
}
}
}VS Code Copilot (1.102+)
Via Command Palette: Cmd+Shift+P→ "MCP: Add Server". Or edit .vscode/mcp.json:
{
"servers": {
"execbro": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"execbro@latest"
]
}
}
}Windsurf
Edit ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"execbro": {
"command": "npx",
"args": [
"-y",
"execbro@latest"
]
}
}
}Zed
Open the Agent Panel settings and click "Add Custom Server", or add to settings.json:
{
"context_servers": {
"execbro": {
"command": "npx",
"args": [
"-y",
"execbro@latest"
],
"env": {}
}
}
}Gemini CLI
Edit ~/.gemini/settings.json (user) or .gemini/settings.json (project):
{
"mcpServers": {
"execbro": {
"command": "npx",
"args": [
"-y",
"execbro@latest"
]
}
}
}Android Setup
Android works out of the box — all device control tools use ADB, which ships with Android Studio. Verify it's available:
adb devicesiOS Simulator — UI Automation Setup
iOS UI automation tools (tap, swipe, text input, accessibility queries) require a UI driver. Install one of the following:
Option A: AXe CLI (experimental)
AXe is a standalone CLI for iOS simulator automation. No daemon required — single binary, simple setup.
brew install cameroncooke/axe/axeVerify: axe --version
Add env to your MCP server configuration:
{
"mcpServers": {
"execbro": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"execbro@latest"
],
"env": {
"IOS_DRIVER": "axe"
}
}
}
}Note: AXe text input only supports US keyboard layout characters.
Option B: IDB (default)
IDB (iOS Development Bridge) is a tool built by Meta for automating iOS Simulators. Requires a background daemon.
brew install idb-companionVerify: idb_companion --list 1
IDB is the default driver — no IOS_DRIVER env var needed.
What works without a UI driver
| Capability | Without IDB/AXe | With IDB/AXe |
|---|---|---|
| Screenshots | Yes (simctl) | Yes |
| App install/launch/terminate | Yes (simctl) | Yes |
| URL opening | Yes (simctl) | Yes |
| Boot simulator | Yes (simctl) | Yes |
| Tap / swipe / gestures | No | Yes |
| Text input | No | Yes |
| Accessibility tree queries | No | Yes |
| Element finding / waiting | No | Yes |
| Hardware buttons (Home, Lock) | No | Yes |
Troubleshooting:If you see errors like "IDB is not installed" or "AXe is not installed" in tap results, install the appropriate driver with the commands above and retry.
Install the SDK (recommended)
ExecBro works with zero app changes, but installing the companion execbro-sdk package is the single biggest upgrade to debugging quality. It lets you wire the important parts of your app — your state stores and your network layer — directly into the agent's reach, so the AI inspects real Redux / TanStack Query state and full request/response bodies instead of guessing from the outside.
Under the hood, the MCP server connects over Chrome DevTools Protocol (CDP), which misses events that fire before it attaches and can't read request/response bodies on newer architectures. The SDK patches fetch and console at import time and buffers everything in-app from the very first line — the MCP server auto-detects it, no extra config.
| Without SDK | With SDK | |
|---|---|---|
| State stores (Redux, TanStack Query) | Manual via execute_in_app | Wired up — direct references |
| Request/response bodies | Not available | Full (including GraphQL) |
| Startup network requests (auth, config) | Missed | Captured from first fetch |
| Console logs from startup | May miss early logs | Captured from first log |
| Works on Bridgeless (Expo SDK 52+) | Partial | Full |
npm install execbro-sdkInitialize in your app's entry file ( index.js, App.tsx, or app/_layout.tsx for Expo Router) as the first import, and pass in the stores and references you want the agent to reach:
import { init } from 'execbro-sdk';
import { store } from './store'; // Redux store
import { queryClient } from './queryClient'; // TanStack Query
import { navigationRef } from './navigation';
if (__DEV__) {
init({
stores: { redux: store, queryClient },
navigation: navigationRef,
});
}init() alone already unlocks full log and network capture. Wiring stores, navigation, or customreferences is what lets the agent read and reason about your app's state directly. See the SDK README for every option.