Marionette MCP — агент внутри Flutter-приложения

Marionette MCP

MCP-сервер для Flutter: агент подключается к запущенному приложению, смотрит дерево виджетов, нажимает, вводит текст, прокручивает и снимает экран

  • 497 ★ репозитория
  • Последний коммит
  • Apache-2.0
MCP-сервер

Расширенный доступ

Почему такой уровень

  • Агент нажимает элементы и вводит текст в запущенном приложении, поэтому на тестовых данных он может вызвать любые действия интерфейса
  • Скриншоты и логи работающего приложения попадают в контекст модели
Все причины и проверки

leancodepl/marionette_mcp

Установка

Ручная установка

dart pub global activate marionette_mcp

Ставит мост. Приложение заранее готовят: flutter pub add marionette_flutter и MarionetteBinding.ensureInitialized() в main.dart.

Доступ и проверки

Как мы проверяем

Расширенный доступИнструмент запускает код или ходит в сеть, а внешние данные только читает.

  • Агент нажимает элементы и вводит текст в запущенном приложении, поэтому на тестовых данных он может вызвать любые действия интерфейса
  • Скриншоты и логи работающего приложения попадают в контекст модели

Это чужой код. Посмотрите файлы в репозитории перед установкой.

Что делает

Marionette соединяет агента с работающим Flutter-приложением через VM-сервис. Автор называет его аналогом Playwright MCP для Flutter. Агент получает список интерактивных виджетов с типом, текстом, ключом и идентификатором семантики, а затем действует: нажимает, нажимает дважды, держит, свайпает, масштабирует щипком и прокручивает до нужного элемента. Инструментов немного, и каждый возвращает минимум данных, чтобы не раздувать контекст. Это `connect`, `disconnect`, `get_interactive_elements`, `take_screenshots`, `get_logs` и жесты `tap`, `secondary_tap`, `double_tap`, `long_press`, `swipe`, `pinch_zoom`, `press_back_button`, `scroll_to`. Скриншоты приходят в PNG, логи собирает `LogCollector`. Установка идет в два шага. В приложение добавляют пакет `marionette_flutter` и вызывают `MarionetteBinding.ensureInitialized()` в режиме отладки, а мост ставят командой `dart pub global activate marionette_mcp`. Есть и CLI-вариант того же моста.

Для кого. Для Flutter-разработчиков и тестировщиков, которые хотят, чтобы Claude Code, Cursor, Copilot или Gemini CLI проходили сценарии в запущенном приложении.

Подходит, если

  • Нужно проверить экран приложения вживую: что видно, какие элементы нажимаются и как работают свайпы
  • Агент должен пройти сценарий на эмуляторе или устройстве и показать скриншоты каждого шага
  • Повторяющиеся ключи в сетке карточек разводят параметром `ancestor_keys`, который ограничивает поиск поддеревом
  • Нужны логи работающего приложения после горячей перезагрузки через `get_logs`
  • Вы хотите, чтобы агент сохранял отчет о проходе с доказательствами: в Marionette есть `session` `reports`

Не подходит, если

  • Нужны поиск пакетов на pub.dev, анализ кода и управление зависимостями: этим занимается официальный сервер Dart и Flutter
  • Приложение не на Flutter: сервер работает через Flutter VM-сервис
  • Приложение собрано в режиме релиза: привязка Marionette включается только в режиме отладки
  • Проект не готов менять код: приложение сначала нужно подготовить, добавив пакет и инициализацию

Пример запроса к агенту

Запусти мое Flutter-приложение в режиме отладки, подключись через Marionette, пройди экран входа и сделай скриншот после каждого шага

MCP

Транспорт
stdio
Авторизация
не нужна

Ограничения

  • Приложение нужно подготовить: добавить `marionette_flutter` и инициализировать привязку в `main.dart`. В примере автора это делается только при `kDebugMode`.
  • Перед любым другим инструментом агент вызывает `connect` с адресом VM-сервиса, например ws://127.0.0.1:9101/ws, который печатает `flutter run`.
  • `get_logs` работает при установленном `LogCollector`, а `secondary_tap` доступен только на десктопе.
  • `connect` сверяет версию привязки в приложении с версией сервера.
  • Нужен установленный Dart SDK, потому что мост ставится через `dart pub global activate`.

Как отключить. Выполните claude mcp `remove` `marionette` и удалите зависимость командой `flutter` `pub` `remove` marionette_flutter вместе со строкой MarionetteBinding в main.dart. Мост снимается командой `dart` `pub` `global` `deactivate` marionette_mcp.

Частые вопросы

Как подключить Marionette MCP к Claude Code?

После `dart` `pub` `global` `activate` marionette_mcp выполните claude mcp `add` --transport stdio `marionette` -- marionette_mcp. Для Cursor, Gemini CLI, Copilot и Antigravity настройка описана в документации docs/mcp-tools.md.

Чем Marionette отличается от официального сервера Dart и Flutter?

Официальный сервер решает задачи разработки: ищет пакеты, управляет зависимостями, анализирует код, показывает ошибки выполнения. Интерфейс он может водить через Flutter Driver. Marionette работает с запущенным приложением напрямую и держит набор действий небольшим.

Что нужно сделать с приложением перед подключением?

Добавить `marionette_flutter`, в main.dart вызвать `MarionetteBinding.ensureInitialized()` при `kDebugMode`, запустить приложение через `flutter run` и скопировать адрес VM-сервиса из консоли.

Можно ли выбрать элемент без ключа?

Да. Нажатие ищет элемент по ключу, идентификатору семантики, тексту, типу или координатам. Ключ автор советует как самый стабильный вариант, идентификатор семантики идет следующим.

Есть ли у Marionette версия для командной строки?

Да. В репозитории есть пакет marionette_cli, а руководство по нему лежит в docs/cli.md. В папке пакета marionette_flutter есть и скилл `marionette-flutter-drive-app`.

Обсуждение

Вопросов и отзывов пока нет.

MCP-серверы

MCP-сервер на Playwright от сообщества: браузерная автоматизация, скриншоты, эмуляция устройств и генерация тестового кода

MCP-серверРасширенный доступ5,7 тыс.Звезды репозитория

CLI, MCP-сервер и типизированный Node.js API, чтобы агент проверял свои правки в живом мобильном приложении на iOS, Android и других платформах

CLIРасширенный доступ5,2 тыс.Звезды репозитория

MCP-сервер, который проверяет, правда ли агент закончил: гоняет реальное приложение и возвращает вердикт прошло, не прошло, неясно с указанием файла и строки

MCP-серверРасширенный доступ1,3 тыс.Звезды репозитория
Выбор редакции

Официальный отладчик MCP-серверов: веб-интерфейс, CLI для автоматизации и терминальный интерфейс в одном пакете

CLIРасширенный доступ11,2 тыс.Звезды репозитория
Официальный

MCP-сервер от Mozilla: агент управляет Firefox через WebDriver BiDi, читает консоль и сеть, делает снимки страниц и профилирует загрузку

MCP-серверШирокий доступ529Звезды репозитория
Официальный

Официальный MCP-сервер Postman: рабочие пространства, коллекции, спецификации и окружения прямо из агента

MCP-серверРасширенный доступ325Звезды репозитория

Сравнение с похожими

Записи с тем же главным запросом: чем они отличаются.

ЗаписьОфициальныйАвторизацияЗвезды репозиторияГлавное отличие
Marionette MCP — агент внутри Flutter-приложения (эта запись)нетне нужна497
Flutter Agent Pluginsда3 123плагин команды Flutter: скиллы и сервер Dart MCP для разработки
Mobile MCPнетне нужна10 095универсальный сервер для симуляторов, эмуляторов и устройств iOS и Android
Agent Skills for Dartда532скиллы команды Dart: тесты, анализ, CLI-приложения, FFI

Коротко о README

README подает проект как «Playwright MCP для Flutter» и сравнивает его с официальным сервером Dart и Flutter. Быстрый старт состоит из четырех шагов: подготовка приложения, установка моста, настройка ИИ-инструмента и запуск приложения в режиме отладки. Дальше идут ссылки на видео и статью команды LeanCode, а подробности разнесены по документам: начало работы, настройка Flutter, конфигурация, логи, семантика, отчеты сеансов, пользовательские расширения и устранение неполадок.

Бейдж для README

Сообщить о проблеме

Foxx AIMarionette MCP — агент внутри Flutter-приложения
Foxx AI

Я Foxx AI и уже разобрал этот инструмент. Спросите про установку, настройку или что угодно еще, отвечу простыми словами.