ExecBro
← до документації

Налаштування платформ та IDE

Детальні інструкції з налаштування для всіх підтримуваних IDE та платформ.

Вимоги

  • Node.js 18+
  • React Native застосунок, запущений з бандлером Metro
  • Рекомендовано: execbro-sdk у вашому застосунку: під’єднує сховища стану та мережевий шар до агента, і налагодження стає значно кращим (необов’язково, ExecBro працює і без нього)
  • Автоматизація UI на iOS: Facebook IDB або AXe CLI: потрібні для тапів, свайпів, введення тексту та accessibility у симуляторі iOS
  • Скриншоти з фізичного iOS-пристрою: pymobiledevice3: потрібен лише для знімків iPhone/iPad, підключеного через USB; взаємодія з фізичними пристроями не підтримується

Нічого встановлювати не треба: кожен клієнт нижче використовує npx, щоб за потреби завантажити останню версію. Після збереження конфігурації повністю закрийте й знову запустіть клієнт, щоб він підхопив новий сервер.

Claude Code

Для проєкту (рекомендовано)
claude mcp add execbro --scope project -- npx -y execbro@latest
Глобально (усі проєкти)
claude mcp add execbro --scope user -- npx -y execbro@latest

Рівень проєкту записує .mcp.json, який можна закомітити, тож уся команда отримає ExecBro в цьому репозиторії й ніде більше. Глобальний рівень запускає його в кожній сесії, яку ви відкриваєте, зокрема в репозиторіях, де немає сервера Metro для підключення: зручно, якщо ви весь день працюєте з React Native, і марнотратно в іншому разі.

Або відредагуйте вручну ~/.claude.json (для користувача) / .mcp.json (для проєкту):

{
  "mcpServers": {
    "execbro": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "execbro@latest"
      ]
    }
  }
}

Claude Desktop

Відредагуйте конфігурацію в ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) або %APPDATA%\Claude\claude_desktop_config.json (Windows). Її також можна відкрити через Settings → Developer → Edit Config.

{
  "mcpServers": {
    "execbro": {
      "command": "npx",
      "args": [
        "-y",
        "execbro@latest"
      ]
    }
  }
}

Codex CLI (OpenAI)

codex mcp add execbro -- npx -y execbro@latest

Або відредагуйте ~/.codex/config.toml напряму:

[mcp_servers.execbro]
command = "npx"
args = ["-y", "execbro@latest"]

Cursor

Через Command Palette: Cmd+Shift+P→ "View: Open MCP Settings". Або відредагуйте .cursor/mcp.json (проєкт) / ~/.cursor/mcp.json (глобально):

{
  "mcpServers": {
    "execbro": {
      "command": "npx",
      "args": [
        "-y",
        "execbro@latest"
      ]
    }
  }
}

VS Code Copilot (1.102+)

Через Command Palette: Cmd+Shift+P→ "MCP: Add Server". Або відредагуйте .vscode/mcp.json:

{
  "servers": {
    "execbro": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "execbro@latest"
      ]
    }
  }
}

Windsurf

Відредагуйте ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "execbro": {
      "command": "npx",
      "args": [
        "-y",
        "execbro@latest"
      ]
    }
  }
}

Zed

Відкрийте налаштування Agent Panel і натисніть "Add Custom Server" або додайте до settings.json:

{
  "context_servers": {
    "execbro": {
      "command": "npx",
      "args": [
        "-y",
        "execbro@latest"
      ],
      "env": {}
    }
  }
}

Gemini CLI

Відредагуйте ~/.gemini/settings.json (для користувача) або .gemini/settings.json (для проєкту):

{
  "mcpServers": {
    "execbro": {
      "command": "npx",
      "args": [
        "-y",
        "execbro@latest"
      ]
    }
  }
}

Налаштування Android

Android працює одразу: усі інструменти керування пристроєм використовують ADB, що постачається з Android Studio. Перевірте, що він доступний:

adb devices

Симулятор iOS: налаштування автоматизації UI

Інструментам автоматизації UI на iOS (тап, свайп, введення тексту, запити accessibility) потрібен UI-драйвер. Встановіть один із наведених:

Варіант A: AXe CLI (експериментально)

AXe це окремий CLI для автоматизації симулятора iOS. Демон не потрібен: один бінарник, просте налаштування.

brew install cameroncooke/axe/axe

Перевірка: axe --version

Додайте env до конфігурації свого MCP-сервера:

{
  "mcpServers": {
    "execbro": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "execbro@latest"
      ],
      "env": {
        "IOS_DRIVER": "axe"
      }
    }
  }
}

Примітка: введення тексту через AXe підтримує лише символи розкладки клавіатури US.

Варіант B: IDB (за замовчуванням)

IDB (iOS Development Bridge) це інструмент від Meta для автоматизації симуляторів iOS. Потребує фонового демона.

brew install idb-companion

Перевірка: idb_companion --list 1

IDB є драйвером за замовчуванням, змінна середовища IOS_DRIVER не потрібна.

Що працює без UI-драйвера

МожливістьБез IDB/AXeЗ IDB/AXe
СкриншотиТак (simctl)Так
Встановлення, запуск і завершення застосункуТак (simctl)Так
Відкриття URLТак (simctl)Так
Запуск симулятораТак (simctl)Так
Тап / свайп / жестиНіТак
Введення текстуНіТак
Запити до дерева accessibilityНіТак
Пошук елементів і очікуванняНіТак
Апаратні кнопки (Home, Lock)НіТак

Усунення проблем:якщо в результатах тапу ви бачите помилки на кшталт "IDB is not installed" або "AXe is not installed", встановіть відповідний драйвер командами вище й спробуйте ще раз.

Фізичний iOS-пристрій: скриншоти

screenshot може знімати iPhone чи iPad, підключений через USB. Це лише знімок: тап, свайп і введення тексту працюють із симулятором, а не з фізичним пристроєм, бо iOS нижче 17 не надає хосту можливості імітувати дотики.

Формули Homebrew для нього немає, а звичайний pip install на актуальній macOS відхиляється (externally-managed-environment), тож встановіть його як ізольований CLI-інструмент:

brew install pipx
pipx install pymobiledevice3

Якщо ви вже користуєтеся uv, uv tool install pymobiledevice3 робить те саме. Обидва варіанти кладуть бінарник у ~/.local/bin, який ExecBro перевіряє напряму, тож усе працює, навіть коли ваш MCP-клієнт запущено з GUI і він не успадковує PATH вашої оболонки.

Потім один раз для кожного пристрою змонтуйте DeveloperDiskImage. mounter auto-mount є задокументованим способом, але на стандартній машині не працює: він намагається писати в каталог Xcode, що належить root. Тож змонтуйте наявний образ Xcode, обравши версію, найближчу до вашого пристрою:

X=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/15.5
pymobiledevice3 mounter mount-developer \
  "$X/DeveloperDiskImage.dmg" "$X/DeveloperDiskImage.dmg.signature"

Після цього пристрій з’явиться в list_devicesу групі "iOS physical", а screenshot прийматиме його UDID або назву. Без встановленого pymobiledevice3 фізичні пристрої не показуються, і більше нічого не змінюється.

Встановіть SDK (рекомендовано)

ExecBro працює без жодних змін у застосунку, але встановлення супровідного пакета execbro-sdk найбільше покращує якість налагодження. Він дозволяє під’єднати важливі частини застосунку (сховища стану та мережевий шар) просто в досяжність агента, тож AI бачить справжній стан Redux / TanStack Query і повні тіла запитів і відповідей, а не вгадує ззовні.

Під капотом MCP-сервер підключається через Chrome DevTools Protocol (CDP), який пропускає події, що сталися до підключення, і не може читати тіла запитів і відповідей на новіших архітектурах. SDK патчить fetch і console під час імпорту й буферизує все в застосунку з першого ж рядка, а MCP-сервер сам його виявляє, без додаткової конфігурації.

Без SDKЗ SDK
Сховища стану (Redux, TanStack Query)Вручну через execute_in_appПід’єднано: прямі посилання
Тіла запитів і відповідейНедоступніПовністю (зокрема GraphQL)
Мережеві запити під час старту (auth, config)ПропускаютьсяПерехоплюються з першого fetch
Логи консолі під час стартуРанні логи можуть загубитисяПерехоплюються з першого логу
Робота на Bridgeless (Expo SDK 52+)ЧастковоПовністю
Встановлення
npm install execbro-sdk

Ініціалізуйте його у вхідному файлі застосунку ( index.js, App.tsx або app/_layout.tsx для Expo Router) як перший імпорт і передайте сховища та посилання, до яких має дістатися агент:

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() уже вмикає повне перехоплення логів і мережі. Передача посилань stores, navigation чи custom дає агенту пряме керування: він може читати й діяти через будь-який переданий об’єкт, не лише стан і навігацію, а й AsyncStorage, MMKV чи будь-яке інше посилання, яке ви вирішите відкрити. Усі параметри описано в посібнику з SDK.