LM

leancodepl/marionette_mcp

Developer tools

이 페이지는 AI로 자동 번역되었습니다. 기술적인 세부 사항은 원문을 확인하세요. 원문 보기

497 stars 53 forks 품질 73 트렌드 41Apache-2.0

MCP 서버는 AI 에이전트가 런타임에 Flutter 앱과 상호작용할 수 있게 하며, 위젯을 검사하고, 탭을 시뮬레이션하며, 텍스트 입력, 스크롤, 스크린샷 촬영을 할 수 있게 합니다.

개요

Marionette MCP는 AI 에이전트(Claude Code, Copilot, Cursor, Gemini CLI 등)가 실행 중인 Flutter 애플리케이션을 검사하고 상호작용할 수 있도록 합니다. 이 시스템은 모델 컨텍스트 프로토콜(MCP)을 통해 AI 에이전트를 실행 중인 앱에 직접 연결하여 위젯 트리를 보고, 요소를 탭하며, 텍스트 입력, 스크롤, 스크린샷 캡처를 통해 자동화된 AI 기반 스모크 테스트 및 상호작용을 수행할 수 있습니다. Marionette MCP는 표면적을 의도적으로 작게 유지합니다. 신호가 높은 행동은 소수만 노출하고 최소한의 실행 가능한 데이터만 반환하여 프롬프트의 집중과 맥락 크기를 잘 관리할 수 있습니다. - 영상: Marionette MCP로 앱 클릭하기 - 기사: Marionette MCP - 실행 중인 앱과 상호작용하는 Flutter AI 에이전트 공식 Dart & Flutter MCP 서버는 pub.dev 검색, 의존성 관리, 코드 분석, 런타임 오류 검사 등 작업에 중점을 둡니다. UI도 제어할 수 있지만, 이는 앱에 추가 계측 기능을 도입하는 Flutter Driver를 통해 이루어집니다.

개요(AI 번역)

당신의 에이전트가 Flutter 앱을 켜고 있는 손과 눈.

Marionette는 Claude Code, 커서, Codex, Gemini CLI, Copilot 또는 모든 MCP 클라이언트를 디버그 모드에서 실행하는 Flutter 앱에 연결합니다. 에이전트는 화면을 보고, 탭하고, 타이핑하고, 스크롤하고, 로그를 읽고, 핫 리로드를 하고, 자신이 한 일을 보고서로 작성합니다. Playwright MCP를 안다면: 이것이 바로 Flutter의 전부입니다.

웹사이트 · 문서 · 영상 · 기사

퀵 스타트

  1. 패키지를 앱에 추가하고 디버그 빌드에서 바인딩을 초기화합니다:

  2. 에이전트에게 브리지를 제공하세요: MCP 서버 또는 marionette CLI, 원하는 대로 모든 에이전트를 선택하세요:

  3. flutter run로 앱을 실행하고, 프롬프트에 출력한 ws://…/ws VM 서비스 URI를 붙여넣거나, 에이전트에게 앱 자체를 실행해 달라고 요청하세요:

ws://127.0.0.1:9101/…/ws 에 연결하세요. 프로필에서는 잘못 작성된 이메일이 오류가 발생하고 제출 기능을 비활성화해야 하며, 유효한 이메일은 제출해야 합니다.

[! 중요] Flutter 자체 위젯은 현재 상태로 작동합니다. 커스텀 디자인 시스템은 한 단계의 설정 단계가 필요하며, 그렇지 않으면 에이전트가 버튼과 필드를 볼 수 없습니다: 구성 항목을 참조하세요.

에이전트가 할 수 있는 일들

도구
봐봐 get_interactive_elements, take_screenshots

이 페이지는 AI로 자동 번역되었습니다. 기술적인 세부 사항은 원문을 확인하세요.

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

  1. Add the package to your app and initialize the binding in debug builds:

    flutter pub add marionette_flutter
    
    void main() {
      if (kDebugMode) {
        MarionetteBinding.ensureInitialized();
      } else {
        WidgetsFlutterBinding.ensureInitialized();
      }
      runApp(const MyApp());
    }
    
  2. Give your agent a bridge: the MCP server or the marionette CLI, 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
    
  3. Run the app with flutter run and paste the ws://…/ws VM 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
GitHub에서 전체 README 보기

설치

npx skills add leancodepl/marionette_mcp # without the Dart toolchain
MCP 초보자라면? mcpskill.org 가이드부터 시작하세요 →