
leancodepl/marionette_mcp
Developer toolsЭта страница переведена автоматически. Технические детали смотрите в оригинале. Открыть оригинал
MCP-сервер, позволяющий агентам ИИ взаимодействовать с приложениями Flutter во время выполнения — пусть они инспектируют виджеты, имитируют нажатия, вводят текст, прокручивают и делают скриншоты.
Обзор
Marionette MCP позволяет агентам ИИ (Claude Code, Copilot, Cursor, Gemini CLI и другим) инспектировать и взаимодействовать с запущенными приложениями Flutter. Он напрямую подключает вашего AI-агента к запущенному приложению через протокол Model Context Protocol (MCP), чтобы он мог видеть дерево виджетов, нажимать на элементы, вводить текст, прокручивать и делать скриншоты для автоматизированного тестирования и взаимодействия с дымом под руководством ИИ. Marionette MCP намеренно сохраняет площадь поверхности небольшой. Она открывает лишь несколько действий с высоким сигналом и возвращает минимальные рабочие данные, что помогает контролировать подсказки и контроль размеров контекста. - Видео: Переход по вашему приложению с Marionette MCP - Статья: Marionette MCP — ваш агент Flutter AI, взаимодействующий с запущенными приложениями Официальный сервер Dart & Flutter MCP сосредоточен на задачах: поиске pub.dev, управлении зависимостями, анализе кода и проверке ошибок во время выполнения. Он также может управлять интерфейсом, но делает это через Flutter Driver, который добавляет дополнительные инструменты в вашем приложении.
Обзор (машинный перевод)
Руки и глаза вашего агента на работе приложения Flutter.
Marionette подключает Claude Code, Cursor, Codex, Gemini CLI, Copilot или любой MCP-клиент к приложению Flutter, которое вы запускаете в режиме отладки. Агент видит экран, нажимает, печатает, прокручивает, читает логи, загружает горячую загрузку и пишет отчёт о том, что он сделал. Если вы знаете Playwright MCP: это именно он для Flutter.
Веб-сайт · Документы · Видео · Статья
Быстрый старт
-
Добавьте пакет в приложение и инициализируйте связывание в отладочных сборках:
-
Дайте своему агенту мост: сервер MCP или
marionetteCLI, в зависимости от того, что вы предпочитаете (каждый агент): -
Запустите приложение с помощью
flutter runи вставьте URI сервиса виртуальной машины [ws://…/ws, которую оно печатает в подсказку, или попросите агента запустить само приложение:
Подключиться к ws://127.0.0.1:9101/…/ws. В профиле неправильное письмо должно показывать ошибку и оставать отключённым Отправить, а действительное письмо должно быть отправлено.
[! ВАЖНО] Собственные виджеты Flutter работают как есть. Для кастомной системы проектирования требуется один шаг настройки, иначе агент не видит ваши кнопки и поля: см. Конфигурировать.
Что может сделать агент
| Инструменты | |
|---|---|
| *См. | get_interactive_elements, take_screenshots |
Эта страница переведена автоматически. Технические детали смотрите в оригинале.
README
Показан фрагмент оригинального README. Открыть оригинал.
Marionette MCP
Your agent’s hands and eyes on a running Flutter app.
Marionette connects Claude Code, Cursor, Codex, Gemini CLI, Copilot or any MCP client to the Flutter app you run in debug mode. The agent sees the screen, taps, types, scrolls, reads the logs, hot reloads, and writes a report of what it did. If you know Playwright MCP: this is that, for Flutter.
Website · Docs · Video · Article
Quick start
-
Add the package to your app and initialize the binding in debug builds:
flutter pub add marionette_fluttervoid main() { if (kDebugMode) { MarionetteBinding.ensureInitialized(); } else { WidgetsFlutterBinding.ensureInitialized(); } runApp(const MyApp()); } -
Give your agent a bridge: the MCP server or the
marionetteCLI, whichever you prefer (every agent):# MCP server, registered with Claude Code dart pub global activate marionette_mcp claude mcp add --transport stdio marionette -- marionette_mcp # or the CLI dart pub global activate marionette_cli -
Run the app with
flutter runand paste thews://…/wsVM service URI it prints into the prompt, or ask the agent to run the app itself:Connect to ws://127.0.0.1:9101/…/ws. On Profile, a malformed email must show an error and keep Submit disabled, and a valid one must submit.
[!IMPORTANT] Flutter’s own widgets work as is. A custom design system needs one configuration step, or the agent cannot see your buttons and fields: see Configure.
What the agent can do
| Tools | |
|---|---|
| See | get_interactive_elements, take_screenshots |
| Act | tap, enter_text, scroll_to, swipe, long_press, double_tap, pinch_zoom, press_key, press_back_button |
| Verify | get_logs, set_device_config (text scale, bold text, dark mode) |
| Iterate | hot_reload, hot_restart |
| Extend | your app’s own actions, registered with registerMarionetteExtension |
Установка
npx skills add leancodepl/marionette_mcp # without the Dart toolchain