Налаштування платформ та 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@latestclaude 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.