PackageTrack
Sign in Get early access

marionette_flutter

Flutter extensions for AI agent interaction via MCP — lets Claude, Copilot, and Cursor tap, scroll, type, and screenshot your app.

0.6.0 157K downloads/mo #943 most downloaded on pub.dev leancodepl/marionette_mcp

What this package is like to depend on

Last release 2 months ago

23 Jun 2026

Ships fairly regularly

a new release about every 5 weeks

Nearly every release is documented

notes for 10 of 10 stable releases

Nothing withdrawn

no release was ever pulled

7 months old

10 releases · first in 2026

10 releases in the last 12 months

see the full history below

Release timeline

10 releases · Jan 2026 to Jun 2026
Release Pre-release

Releases

latest 10
  1. 0.6.0 23 Jun 2026
    Release notes

    See changelog on pub.dev

    What's Changed

    • chore: bump mcp_dart to v2.1.0 by @jakubfijalkowski with @Copilot in #71
    • feat: surface Semantics(label) and Semantics(value) in get_interactive_elements by @sthefanoss in #72
    • refactor: split VM service context and Marionette binding into themed files by @MatejLNCD in #73
    • feat: add support for secondary tap by @lukaszgarstecki in #77
    • feat: promote schema-bearing custom extensions to first-class MCP tools by @MatejLNCD in #78
    • docs: restructure README into slim landing page + docs/ guides by @mchudy in #80
    • feat: add swipe command to the CLI by @mchudy in #82
    • feat: add hot restart support by @mchudy in #81
    • fix: exit stdio server on stdin EOF; drop custom Copilot transport by @mchudy in #86
    • fix: sanitize custom-extension tool names for strict MCP clients by @mchudy in #87
    • Add Dockerfile for Docker MCP Registry submission by @mchudy in #83
    • feat: add keyboard input support (press_key) by @mchudy in #88
    • chore: prepare 0.6.0 release by @mchudy in #91
    • fix: declare meta as a direct dependency of marionette_flutter by @mchudy in #92

    New Contributors

    Full Changelog: v0.5.0...v0.6.0

    Open source →
    Release notes
    • Promote schema-bearing custom extensions to first-class MCP tools via the new ExtensionInputSchema/ExtensionParam DSL
    • Add press_key tool for dispatching hardware key events with modifiers
    • Add hot_restart tool for fully restarting the app from main()
    • Add secondary_tap tool for right mouse button clicks on desktop
    • Add swipe CLI command for element- and coordinate-based swipe/drag gestures
    • Surface Semantics(label:) and Semantics(value:) in get_interactive_elements
    • Exit the stdio MCP server on stdin EOF to prevent orphaned processes
    • Bump mcp_dart to ^2.1.0 and drop the bespoke Copilot-compat stdio transport
    • Add a Dockerfile for building marionette_mcp as a container image
    Open source →
    Release notes
    • Promote schema-bearing custom extensions to first-class MCP tools. Registering an extension with an inputSchema (declared via the new typed ExtensionInputSchema / ExtensionParam DSL) now surfaces it as an individually-named, discoverable tool with a validated input schema — the agent gets argument hints and enum autocomplete, invalid arguments are rejected before reaching your app, and declared defaults are applied before the callback runs. Promoted tool names are sanitized for strict clients (e.g. VS Code Copilot's [a-z0-9_-] -only rule) while the extension is still invoked by its real name. Schema-less extensions stay supported through the generic call_custom_extension tool.

    • Add the press_key tool (plus the press-key CLI command) for dispatching real hardware key events to the focused element — named keys ( enter , tab , escape , arrows, etc.) and single characters, with optional control/shift/alt/meta modifiers. Unlike enter_text , which rewrites a field's value, this drives form submission, focus traversal, dismiss, and app shortcuts.

    • Add the hot_restart tool (plus the hot-restart CLI command), mirroring hot reload but fully restarting the app from main() and resetting all state. Requires the app to be launched via flutter run ; the connector re-resolves the new root isolate and re-registers its extensions after the restart.

    • Add a swipe CLI command, wiring the existing swipe/drag gesture into the CLI in both element-based ( --key / --text / --type + --direction ) and coordinate-based ( --start-x / --start-y / --end-x / --end-y ) modes.

    • Add the secondary_tap tool (plus the secondary-tap CLI command) for right mouse button clicks on desktop. It dispatches a mouse pointer with the secondary button pressed, triggering Flutter's onSecondaryTap (e.g. context menus). Touch tap is unchanged.

    • Surface Semantics(label:) and Semantics(value:) in get_interactive_elements . Widgets that render via inline-span trees ( Text.rich , custom-painted text, etc.) where toPlainText() loses structure can now be made fully readable by agents through an explicit accessibility annotation, without altering the rendered widget.

    • Bump the mcp_dart dependency to ^2.1.0 .

    • Exit the stdio MCP server when its stdin reaches EOF (e.g. the MCP host crashes or disconnects without sending a signal), preventing orphaned marionette_mcp processes from accumulating. Removed the bespoke Copilot-compat stdio transport in favour of mcp_dart 's built-in StdioServerTransport — mcp_dart 2.1.0 parses GitHub Copilot's object-typed tasks capabilities natively, so the workaround is no longer needed.

    • Add a Dockerfile so marionette_mcp can be built as a container image and submitted to the Docker MCP Registry; the image installs the published package from pub.dev and runs the server over stdio.

    Open source →
  2. 0.5.0 09 Apr 2026
    Release notes

    See changelog on pub.dev

    What's Changed

    New Contributors

    Full Changelog: v0.4.0...v0.5.0

    Open source →
    Release notes
    • Breaking: Pass Element instead of Widget to the extractText configuration callback, giving access to the full element context. Migration: change (widget) to (element) and use element.widget to access the widget.
    • Add gesture support across all layers: swipe/drag, long_press, double_tap, pinch_zoom, and press_back_button.
    • Add video recording with TCP/WS transport and Android auto-fallback.
    • Improve screencast stability with broken-pipe race handling, concurrent stop safety, and orphaned session cleanup.
    • Improve runtime robustness around input validation, resource cleanup, and non-monotonic timestamp handling.
    • Strengthen release CI with explicit minimum-version compatibility checks and Flutter version sourced from .fvmrc.
    Open source →
    Release notes
    • Breaking: Pass Element instead of Widget to the extractText configuration callback, giving access to the full element context. Migration: change (widget) to (element) and use element.widget to access the widget.

    • Add gesture support across all layers: swipe/drag , long_press , double_tap , pinch_zoom , and press_back_button .

    • Add video recording with TCP/WS transport and Android auto-fallback.

    • Improve screencast stability with broken-pipe race handling, concurrent stop safety, and orphaned session cleanup.

    • Improve runtime robustness around input validation, resource cleanup, and non-monotonic timestamp handling.

    • Strengthen release CI with explicit minimum-version compatibility checks and Flutter version sourced from .fvmrc .

    Open source →
  3. 0.4.0 16 Mar 2026
    Release notes

    See changelog on pub.dev

    What's Changed

    New Contributors

    Open source →
    Release notes
    • Add marionette_cli package with multi-instance CLI support
    • Add call_custom_extension tool for arbitrary VM service extensions
    • Add custom extension registry with registerMarionetteExtension
    • Add focused selector to enter_text
    • Add version compatibility check on connect
    • Decouple logging from marionette_flutter into marionette_logger and marionette_logging
    • Improve ScrollSimulator with reverse scrolling direction and configurable max scroll attempts
    • Fix tap matching widgets behind modal route barriers
    • Fix onChanged not being called on enter_text
    • Fix pointer device collision with macOS mouse cursor
    • Fix extracted text not being exposed in interactive elements
    • Ensure correct status code range in MarionetteExtensionError
    Open source →
    Release notes
    • Add marionette_cli package with multi-instance CLI support

    • Add call_custom_extension tool for arbitrary VM service extensions

    • Add custom extension registry with registerMarionetteExtension

    • Add focused selector to enter_text

    • Add version compatibility check on connect

    • Decouple logging from marionette_flutter into marionette_logger and marionette_logging

    • Improve ScrollSimulator with reverse scrolling direction and configurable max scroll attempts

    • Fix tap matching widgets behind modal route barriers

    • Fix onChanged not being called on enter_text

    • Fix pointer device collision with macOS mouse cursor

    • Fix extracted text not being exposed in interactive elements

    • Ensure correct status code range in MarionetteExtensionError

    Open source →
  4. 0.3.0 22 Jan 2026
    Release notes Open source →
    Release notes
    • Add screenshot resizing configuration
    • Fix SIGTERM handling on Windows
    • Add GitHub Copilot support
    • Require Dart 3.10 for the MCP server
    • Fix hot_reload tool response handling
    Open source →
    Release notes
    • Add screenshot resizing configuration

    • Fix SIGTERM handling on Windows

    • Add GitHub Copilot support

    • Require Dart 3.10 for the MCP server

    • Fix hot_reload tool response handling

    Open source →
  5. 0.2.4 16 Jan 2026
    Release notes Open source →
    Release notes
    • Add CI workflow with analyze, format, and version checks
    • Add version generation script with validation and robustness
    • Replace example symlinks with actual directories in both packages
    • Improve project structure and dependencies
    Open source →
  6. 0.2.3 15 Jan 2026
    Release notes Open source →
    Release notes
    • Add example symlinks for improved pub.dev package scoring
    • Fix documentation lints for angle brackets in code references
    Open source →
  7. 0.2.2 15 Jan 2026
    Release notes Open source →
    Release notes
    • Add compatibility for Copilot initialize call
    • Make configuration parameter optional in MarionetteBinding.ensureInitialized()
    Open source →
    Release notes
    • Add compatibility for Copilot initialize call

    • Make configuration parameter optional in MarionetteBinding.ensureInitialized()

    Open source →
  8. 0.2.1 14 Jan 2026
    Release notes

    Release v0.2.1 with new README

    Open source →
    Release notes
    • Update README
    Open source →
  9. 0.2.0 14 Jan 2026
    Release notes

    Update CHANGELOG and bump version to 0.2.0

    Open source →
    Release notes
    • Support tapping by widget type
    • Support tapping by coordinates
    • Return more info in get_interactive_elements
    • Add hot reload tool, and return logs only since last hot reload
    • get_interactive_elements returns only hittable elements now
    • The tools have better naming to conform to the MCP implementations
    • scroll_to does not assume that the widget is in the tree
    • Text is a stopwidget now
    Open source →
    Release notes
    • Support tapping by widget type

    • Support tapping by coordinates

    • Return more info in get_interactive_elements

    • Add hot reload tool, and return logs only since last hot reload

    • get_interactive_elements returns only hittable elements now

    • The tools have better naming to conform to the MCP implementations

    • scroll_to does not assume that the widget is in the tree

    • Text is a stopwidget now

    Open source →
  10. 0.1.0 12 Jan 2026
    Release notes

    Require Flutter when building marionette_flutter

    Open source →
    Release notes
    • Initial version of Marionette MCP
    • Support for getting the interactive widget tree
    • Support for entering text
    • Support for tapping and scrolling
    • Support for getting logs from logging package
    Open source →
    Release notes
    • Initial version of Marionette MCP

    • Support for getting the interactive widget tree

    • Support for entering text

    • Support for tapping and scrolling

    • Support for getting logs from logging package

    58

    likes

    160

    points

    153k

    downloads

    Documentation

    API reference

    Publisher

    leancode.co

    Weekly Downloads

    Metadata

    Flutter extensions for AI agent interaction via MCP — lets Claude, Copilot, and Cursor tap, scroll, type, and screenshot your app.

    Repository (GitHub)

    View/report issues

    Topics

    #mcp #ai #claude #agent #copilot

    License

    Apache-2.0 ( license )

    Dependencies

    flutter , meta , web

    More

    Packages that depend on marionette_flutter

    ← Metadata

    58

    likes

    160

    points

    153k

    downloads

    Documentation

    API reference

    Publisher

    leancode.co

    Weekly Downloads

    Metadata

    Flutter extensions for AI agent interaction via MCP — lets Claude, Copilot, and Cursor tap, scroll, type, and screenshot your app.

    Repository (GitHub)

    View/report issues

    Topics

    #mcp #ai #claude #agent #copilot

    License

    Apache-2.0 ( license )

    Dependencies

    flutter , meta , web

    More

    Packages that depend on marionette_flutter

    Back

    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive