marrionate_extended_mcp
Supports automating and inspecting Flutter apps running on Android through the Dart VM service, where the ext.flutter.marionette.* service extensions (18 tools) are available.
Provides end-to-end automation for Flutter apps: MCP tools for interacting with widgets and asserting on them (targeting stable ValueKeys rather than text or coordinates), a scenario model with recording and replay, a replay CLI (text/JSON/JUnit output, stop-on-failure), and a build_runner key-injection builder that adds missing keys. Ships app-side bindings (E2eBinding/E2eCapability) plus vendored marionette and flutter-skill drivers behind one import.
Supports automating and inspecting Flutter apps running on iOS through the Dart VM service, where the ext.flutter.marionette.* service extensions (18 tools) are available.
Supports automating and inspecting Flutter apps running on Linux through the Dart VM service, where the ext.flutter.marionette.* service extensions (18 tools) are available.
Supports automating and inspecting Flutter apps running on macOS through the Dart VM service, where the ext.flutter.marionette.* service extensions (18 tools) are available.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@marrionate_extended_mcptap the login button by its ValueKey and assert the home screen appears"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
marrionate_extended_mcp
Unified Flutter end-to-end automation in a single package: MCP server, app-side bindings, scenario model, replay runtime, key-injection builder, and the vendored marionette / flutter-skill drivers behind one import.
See doc/mcp-instructions.md for the MCP wire format and how to attach exported instructions to a running debug app.
Install
dependencies:
marrionate_extended_mcp: ^0.1.0While it is not yet on pub.dev, depend on it by path or git:
dependencies:
marrionate_extended_mcp:
path: ../marrionate_extended_mcp
# or:
# git:
# url: https://github.com/your-org/marrionate_extended_mcp.gitRelated MCP server: Flutter Driver MCP
What's inside
Module ( | Origin | Provides |
| first-party | app-side bindings, scenario model, validator, recorder |
| first-party | unified MCP server + replay CLI |
| first-party | build_runner builder injecting |
| vendored (Apache-2.0) | MCP server, session/step logging, stdio + WS transports |
| vendored (Apache-2.0) |
|
| vendored (Apache-2.0) | command-line client |
| vendored (Apache-2.0) | structured logging |
| vendored (MIT) | JS/CDP bridge for web apps |
Everything is exported from the single barrel file:
import 'package:marrionate_extended_mcp/marrionate_extended_mcp.dart';Individual modules are importable as
package:marrionate_extended_mcp/src/<module>/<file>.dart if you need
something the barrel file hides to avoid name clashes.
Command-line entry points
The package ships these executables (bin/):
dart run marrionate_extended_mcp:marionette_mcp # MCP server (stdio)
dart run marrionate_extended_mcp:replay # scenario replay CLI
dart run marrionate_extended_mcp:marionette # marionette CLI
dart run marrionate_extended_mcp:server # flutter-skill server
dart run marrionate_extended_mcp:flutter_skill # flutter-skill CLIWire the MCP server into an agent (stdio transport by default; pass
--sse-port N for SSE):
{
"mcpServers": {
"marrionate-extended-mcp": {
"command": "dart",
"args": ["run", "marrionate_extended_mcp:marionette_mcp"]
}
}
}Replay recorded scenarios from the command line:
dart run marrionate_extended_mcp:replay --scenarios path/to/scenarios --format text
# --stop-on-failure, --list-only, --format {text,json,junit}Platform behaviour
Marionette registers ext.flutter.marionette.* service extensions and
flutter-skill registers ext.flutter.flutter_skill.*. Both are reached over the
Dart VM service, which does not exist in a browser.
Native (Windows/macOS/Linux/Android/iOS) | Web (Chrome) | |
Marionette tools | 18 available | withheld, |
Flutter-skill tools | available | available via JS/CDP bridge |
Transport | Dart VM service |
|
E2eBinding.ensureInitialized installs the right transport for the target, and
E2eCapability reports what works so callers fail fast instead of hanging.
The ValueKey rule
Anything a tool can interact with, or an assertion can observe, carries a stable
ValueKey<String>. Scenarios target keys exclusively — never text or
coordinates — so a copy change cannot silently break a test.
The e2e_key_generator builder injects missing keys:
dart run build_runner buildDevelopment
dart analyze # 0 issues
flutter test # full suite
dart pub publish --dry-runLicense
MIT for first-party code. Vendored dependencies keep their upstream licenses — MIT (flutter-skill) and Apache-2.0 (marionette_*). See NOTICE.md.
This server cannot be deployed
Maintenance
Related MCP Connectors
Drive real devices from your AI Coding tool. Embed a client SDK (Unity, Godot, Flutter, iOS/macOS, Android, React Native, Web) in your app, then capture screenshots, traverse the UI tree, inject taps and key events, and run automated test tasks on the physical device over a secure relay.
Create, edit, preview, and build Flutter apps via FlutterGo.AI cloud MCP (OAuth).
remote debug iOS/Android/Unity/Godot/Flutter/RN/Web on real-device.ui-tree/screenshots/taps,tests.
Control real Android and iOS devices with LLM agents — tap, swipe, type, automate flows.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables AI-driven mobile test automation through planning, generation, and self-healing agents for Android and iOS, exposed as callable MCP tools.10-
- AlicenseBqualityDmaintenanceAn MCP server that lets AI agents see, tap, type, scroll, and assert inside live Flutter apps — no pre-written tests required.2810 npmMIT
- AlicenseBqualityBmaintenanceEnables building Flutter and Dart apps through a multi-agent system that orchestrates specialized agents for UI design, backend development, testing, and deployment.231MIT
- AlicenseNot gradedqualityAmaintenanceEnables agents to drive a running React application through typed MCP tools, using the same actions as the UI instead of browser automation.45 npm1Apache 2.0