Flutter Driver MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| start_appC | Injects the harness and starts the Flutter app in test mode. |
| stop_appB | Stops the currently running Flutter app and cleans up. |
| pilot_hot_restartC | Performs a hot restart of the currently running app session started by this server. |
| list_devicesA | Lists available Flutter devices. Does NOT require a running app. |
| start_recordingA | Starts recording the screen of the running app's device. Recording begins capturing immediately with no warmup delay — proceed with interactions right away. Supports iOS Simulators (MP4), macOS Desktop (MOV), and Android devices/emulators (MP4, max 180s). Only one recording at a time. Auto-stops if stop_app is called or after 5 minutes. |
| stop_recordingA | Stops the current screen recording and finalizes the video file. Returns the file path, format, duration, and file size. Called automatically by stop_app if a recording is active. |
| tapB | Taps, long-presses, or double-taps a widget. Defaults to a normal tap. Use gesture to change. |
| enter_textA | Enters text into a widget found by the target string. By default, replaces existing text. Set clearFirst to explicitly clear and re-focus the field before typing. |
| get_textB | Returns the text content of a widget identified by the target string. |
| drag_and_dropC | Drags from a source widget to a target widget (or to an offset). |
| scrollB | Scrolls or swipes a widget. Use dx/dy for pixel-precise scrolling, or direction/distance for named swipe gestures. |
| scroll_until_visibleB | Scrolls a scrollable widget until a target widget is visible. |
| navigate_toA | Pushes a named route using Navigator.pushNamed. NOTE: Does NOT work with GoRouter or other custom routers — use tap() to navigate via on-screen elements instead. |
| go_backA | Pops the current route off the Navigator stack (like pressing the back button). |
| get_current_routeA | Returns the name of the currently active route on the Navigator stack. |
| press_keyC | Simulates a keyboard key press (e.g. enter, tab, escape, backspace, arrow keys). |
| assertA | Runs an assertion check on a widget. Use 'check' to specify the type: exists, not_exists, text_equals, text_contains, count, state, visible, or enabled. |
| screenshotB | Captures a screenshot. Without a target, captures the full app. With a target, captures a specific widget. |
| get_widget_treeC | Returns a JSON representation of the widget tree. |
| get_accessibility_treeC | Returns the accessibility (semantics) tree. |
| explore_screenC | Maps out interactive elements on the screen. |
| wait_forB | Waits for a widget to appear or disappear. Set gone=true to wait for disappearance (e.g. loading spinners). |
| simulate_backgroundB | Simulates the app going into the background and coming back to the foreground. |
| set_network_statusC | Simulates network connectivity changes. |
| intercept_networkC | Mocks a network response. Pass null for both to clear. |
| read_logsB | Reads the last N lines from the app's stdout/stderr. |
| batch_actionsA | Execute multiple actions in a single call. Each action is run sequentially with pumpAndSettle between them. Stops on first error. Supported tools: tap, enter_text, scroll, assert, wait_for, press_key, screenshot, get_text, explore_screen. |
| wait_for_animationA | Pumps frames for a specified duration without waiting for all animations to settle. Useful for hero transitions, page animations, or custom animation controllers where pumpAndSettle would time out. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/funkyfunc/flutter-driver-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server