Flutter MCP Toolkit
OCI · GHCR.IO/ARENUKVERN/FLUTTER-MCP-TOOLKIT:5.1.0 · SCANNED SEP 20
Inspect and drive Flutter debug apps/games: semantic snapshots, search, and custom client tools
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security0
- Malware scan not yet available for this package.Unverified
- Known CVEs could not be checked: this artifact ships no SBOM, so there is no dependency list to read. Publishing one would let us assess it.Unverified
- Install-script risk not yet assessed.Unverified
- Dependency health could not be checked: this artifact ships no SBOM, so there is no dependency list to read. Publishing one would let us assess it.Unverified
Provenance & Transparency35
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- License check failed: no license is declared. See how to fix → Fail
- Actively maintained (last published 27 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability84
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 3836 tokens (~106/item across 36 items; 33 tools + 3 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management90
- Stability observed for 27 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage86
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 57% of tool parameters carry a description.Partial
Tool Safety75
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 0 of 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "fmt_client_tool" implies "execute" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
- An AI judge read all 35 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Unverified: 1 category
A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.
How do I install the Flutter MCP Toolkit server?
Flutter MCP Toolkit runs locally as a container image, launched with docker run --rm -i ghcr.io/arenukvern/flutter-mcp-toolkit:5.1.0. Ready-made configuration for Claude, Cursor, VS Code, Codex and 3 more is on this page, copied from each client's own documentation.
oci · ghcr.io/arenukvern/flutter-mcp-toolkit:5.1.0
claude mcp add arenukvern-flutter-mcp-toolkit -- docker run --rm -i ghcr.io/arenukvern/flutter-mcp-toolkit:5.1.0
{
"mcpServers": {
"arenukvern-flutter-mcp-toolkit": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"ghcr.io/arenukvern/flutter-mcp-toolkit:5.1.0"
]
}
}
} {
"servers": {
"arenukvern-flutter-mcp-toolkit": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"ghcr.io/arenukvern/flutter-mcp-toolkit:5.1.0"
]
}
}
} codex mcp add arenukvern-flutter-mcp-toolkit -- docker run --rm -i ghcr.io/arenukvern/flutter-mcp-toolkit:5.1.0
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"arenukvern-flutter-mcp-toolkit": {
"type": "local",
"command": [
"docker",
"run",
"--rm",
"-i",
"ghcr.io/arenukvern/flutter-mcp-toolkit:5.1.0"
],
"enabled": true
}
}
} mcp_servers:
arenukvern-flutter-mcp-toolkit:
command: "docker"
args: ["run", "--rm", "-i", "ghcr.io/arenukvern/flutter-mcp-toolkit:5.1.0"] {
"McpServers": {
"arenukvern-flutter-mcp-toolkit": {
"Transport": "stdio",
"Command": "docker",
"Arguments": [
"run",
"--rm",
"-i",
"ghcr.io/arenukvern/flutter-mcp-toolkit:5.1.0"
]
}
}
} {
"mcpServers": {
"arenukvern-flutter-mcp-toolkit": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"ghcr.io/arenukvern/flutter-mcp-toolkit:5.1.0"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 19 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 17 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 77 to 80. That category is still filling its 30-day observation window: 23 days of observed history at the previous scan, 24 at this one. The score rises as the window fills, whether or not the server changes.
- 15 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 70 to 73. That category is still filling its 30-day observation window: 21 days of observed history at the previous scan, 22 at this one. The score rises as the window fills, whether or not the server changes.
- 13 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 63 to 67. That category is still filling its 30-day observation window: 19 days of observed history at the previous scan, 20 at this one. The score rises as the window fills, whether or not the server changes.
- 11 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 57 to 60. That category is still filling its 30-day observation window: 17 days of observed history at the previous scan, 18 at this one. The score rises as the window fills, whether or not the server changes.
- 8 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 47 to 50. That category is still filling its 30-day observation window: 14 days of observed history at the previous scan, 15 at this one. The score rises as the window fills, whether or not the server changes.
- 6 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 40 to 43. That category is still filling its 30-day observation window: 12 days of observed history at the previous scan, 13 at this one. The score rises as the window fills, whether or not the server changes.
- 4 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Analysed oci/ghcr.io/arenukvern/flutter-mcp-toolkit:5.1.0
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | oci |
| Reason | No attestation published |
Background: How many MCP packages publish verified provenance →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
fmt_capture_ui_snapshot ~148
Capture screenshots, view details, and app errors in one response.
| Name | Type | Req | Description |
|---|---|---|---|
| compress | boolean | – | Whether screenshots should be compressed (default: true). |
| connection | object | – | – |
| errorsCount | integer | – | Number of recent errors to include (default: 4). |
| includeErrors | boolean | – | Include app errors (default: true). |
| includeViewDetails | boolean | – | Include detailed view/widget data (default: true). |
| permissionPolicy | string | – | Permission policy: check_only, auto_request_once, or request_always (default: check_only). |
| screenshotMode | string | – | Screenshot mode: auto, flutter_layer, or desktop_window (default: auto). |
No output schema declared.
No examples provided.
fmt_client_resource ~240
Read content from a dynamically registered resource in the Flutter application. Resources provide structured data like app state, view details, or configuration information. Use this to access read-only information that doesn't require tool execution. Names/URIs must match exactly what appears in fmt_list_client_tools_and_resources. Typically used for getting current app state snapshots or accessing structured data. For custom resources: To create new tools/resources: 1) Define AgentCallEntry.tool() or AgentCallEntry.resource() (namespace, name, description, inputSchema, handler returning AgentResult), 2) Register in the Flutter app (main.dart or bootstrap) via MCPToolkitBinding.addEntries() or addMcpTool(), 3) Use fmt_list_client_tools_and_resources to verify registration, 4) Hot restart the app to activate. 5) Use fmt_client_tool or fmt_client_resource to execute. Example: AgentCallEntry.resource(namespace: "app", name: "my_resource", ...) then addEntries; hot restart.
| Name | Type | Req | Description |
|---|---|---|---|
| connection | object | – | – |
| resourceUri | string | yes | Exact URI of the resource to read (from fmt_list_client_tools_and_resources) |
No output schema declared.
No examples provided.
fmt_client_tool ~267
Execute a specific dynamically registered tool from the Flutter application. Use this to run debugging tools, inspect app state, take screenshots, analyze errors, or execute custom tools. Names/URIs must match exactly what appears in fmt_list_client_tools_and_resources. Arguments should conform to the tool's inputSchema requirements. This is your primary way to interact with Flutter app functionality beyond static MCP server tools. For custom tools: To create new tools/resources: 1) Define AgentCallEntry.tool() or AgentCallEntry.resource() (namespace, name, description, inputSchema, handler returning AgentResult), 2) Register in the Flutter app (main.dart or bootstrap) via MCPToolkitBinding.addEntries() or addMcpTool(), 3) Use fmt_list_client_tools_and_resources to verify registration, 4) Hot restart the app to activate. 5) Use fmt_client_tool or fmt_client_resource to execute. Example: AgentCallEntry.tool(namespace: "app", name: "my_tool", ...) then addEntries; hot restart.
| Name | Type | Req | Description |
|---|---|---|---|
| arguments | object | – | Arguments to pass to the tool, matching its inputSchema requirements |
| connection | object | – | – |
| toolName | string | yes | Exact name of the tool to execute (from fmt_list_client_tools_and_resources) |
No output schema declared.
No examples provided.
fmt_connect_debug_app ~35
Connect to a Flutter debug VM. Use this to select an app when multiple are running.
| Name | Type | Req | Description |
|---|---|---|---|
| connection | object | – | – |
No output schema declared.
No examples provided.
fmt_discover_debug_apps ~29
Discover Flutter debug targets with canonical ws target URIs.
| Name | Type | Req | Description |
|---|---|---|---|
| connection | object | – | – |
No output schema declared.
No examples provided.
fmt_drag ~152
Drag from one widget to another, identified by refs.
| Name | Type | Req | Description |
|---|---|---|---|
| connection | object | – | – |
| fromRef | string | yes | Source widget ref. |
| kind | string | – | Pointer device to synthesize. Defaults to mouse on desktop targets and touch elsewhere. Mouse keeps scrollables out of the gesture arena, so the drag lands on the target's drag/pan recognizer (drag-a… |
| snapshotId | integer | – | Optional: snapshotId input. Use the snapshot_id returned by most recent semantic_snapshot. If provided and stale, the call fails with stale_snapshot. |
| toRef | string | yes | Target widget ref. |
No output schema declared.
No examples provided.
fmt_enter_text ~94
Enter text into a text field identified by ref from semantic_snapshot. Taps the field to focus before typing.
| Name | Type | Req | Description |
|---|---|---|---|
| connection | object | – | – |
| ref | string | yes | Text field ref. |
| snapshotId | integer | – | Optional: snapshotId input. Use the snapshot_id returned by most recent semantic_snapshot. If provided and stale, the call fails with stale_snapshot. |
| text | string | yes | Text to enter. |
No output schema declared.
No examples provided.
fmt_evaluate_dart_expression ~87
Evaluate a Dart expression in the running app isolate. Returns the result of the expression as text.
| Name | Type | Req | Description |
|---|---|---|---|
| connection | object | – | – |
| expression | string | yes | Dart expression to evaluate (e.g. "MyClass.instance.value"). |
| libraryUri | string | – | Optional library URI for evaluation scope (e.g. package:myapp/main.dart). Defaults to root library. |
No output schema declared.
No examples provided.
fmt_fill_form ~99
Batch text entry: enters text into multiple fields in one call. Stops on first failure. Each field: {ref, text}. Pass snapshotId to validate against the most recent semantic_snapshot (checked on the first field only).
| Name | Type | Req | Description |
|---|---|---|---|
| connection | object | – | – |
| fields | array | yes | – |
| snapshotId | integer | – | Optional: snapshotId input. Use the snapshot_id returned by most recent semantic_snapshot. Checked on the first field only. |
No output schema declared.
No examples provided.
fmt_focus_window ~49
Focus the host macOS app window or iOS Simulator before desktop capture.
| Name | Type | Req | Description |
|---|---|---|---|
| connection | object | – | – |
| targetPid | integer | – | Optional VM process id (defaults to the connected VM). |
No output schema declared.
No examples provided.
fmt_get_app_errors ~45
Get the most recent application errors from Dart VM.
| Name | Type | Req | Description |
|---|---|---|---|
| connection | object | – | – |
| count | integer | – | Number of recent errors to retrieve (default: 4). |
No output schema declared.
No examples provided.
fmt_get_extension_rpcs ~72
Utility: List all available extension RPCs in the Flutter app.
| Name | Type | Req | Description |
|---|---|---|---|
| connection | object | – | – |
| isRawResponse | boolean | – | If true, returns the raw VM response without post-processing. |
| isolateId | string | – | Optional specific isolate ID to inspect. If omitted, checks all isolates. |
No output schema declared.
No examples provided.
fmt_get_recent_logs ~47
Get recent print() and log output from the running Flutter app.
| Name | Type | Req | Description |
|---|---|---|---|
| connection | object | – | – |
| count | integer | – | Number of recent log entries (default: 50). |
No output schema declared.
No examples provided.
fmt_get_screenshots ~92
Get screenshots of all views in the application.
| Name | Type | Req | Description |
|---|---|---|---|
| compress | boolean | – | Whether to compress the images (default: true). |
| connection | object | – | – |
| mode | string | – | Screenshot mode: auto, flutter_layer, or desktop_window (default: auto). |
| permissionPolicy | string | – | Permission policy: check_only, auto_request_once, or request_always (default: check_only). |
No output schema declared.
No examples provided.
fmt_get_view_details ~26
Get details for all views in the application.
| Name | Type | Req | Description |
|---|---|---|---|
| connection | object | – | – |
No output schema declared.
No examples provided.
fmt_get_vm ~38
Utility: Get VM information from a Flutter app. This is a VM service method, not a Flutter RPC.
| Name | Type | Req | Description |
|---|---|---|---|
| connection | object | – | – |
No output schema declared.
No examples provided.
fmt_handle_dialog ~63
Dismiss the topmost popup/dialog route on the registered Navigator. Currently only action="dismiss" is supported. Requires MCPToolkitBinding.instance.navigatorKey = key on the app.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | Currently must be "dismiss". |
| connection | object | – | – |
No output schema declared.
No examples provided.
fmt_hot_reload_and_capture ~103
Hot reload then capture screenshot + semantic snapshot + errors in a single call. Tight edit-preview cycle for AI iteration.
| Name | Type | Req | Description |
|---|---|---|---|
| compress | boolean | – | Compress screenshots (default: true). |
| connection | object | – | – |
| errorsCount | integer | – | Number of errors to include (default: 4). |
| includeErrors | boolean | – | Include app errors (default: true). |
| includeSemantics | boolean | – | Include semantic snapshot (default: true). |
No output schema declared.
No examples provided.
fmt_hot_reload_flutter ~45
Hot reloads the Flutter app.
| Name | Type | Req | Description |
|---|---|---|---|
| connection | object | – | – |
| force | boolean | – | If true, forces a hot reload even if there are no source changes |
No output schema declared.
No examples provided.
fmt_hot_restart_flutter ~31
Hot restarts the Flutter app (full restart; state not preserved).
| Name | Type | Req | Description |
|---|---|---|---|
| connection | object | – | – |
No output schema declared.
No examples provided.
fmt_hover ~110
Synthesize a mouse hover at the centre of a widget identified by a semantic snapshot ref, driving MouseRegion.onEnter/onExit. Desktop and web only. The hover stays parked, so an affordance it reveals survives the next semantic_snapshot; act on it with your next call — any other interaction releases the hover, and the affordance goes with it. Pass snapshotId to detect staleness.
| Name | Type | Req | Description |
|---|---|---|---|
| connection | object | – | – |
| ref | string | yes | – |
| snapshotId | integer | – | – |
No output schema declared.
No examples provided.
fmt_inspect_widget_at_point ~70
Inspect the deepest widget at global logical coordinates (x, y).
| Name | Type | Req | Description |
|---|---|---|---|
| connection | object | – | – |
| viewId | integer | – | Optional FlutterView id for multi-view apps. |
| x | integer | yes | Global logical X coordinate. |
| y | integer | yes | Global logical Y coordinate. |
No output schema declared.
No examples provided.
fmt_list_client_tools_and_resources ~200
Discover all dynamically registered tools and resources from the connected Flutter application. Use this as your first step to understand what debugging and inspection capabilities are available. Returns tool definitions with names, descriptions, and input schemas, plus available resources with URIs. Essential for planning your debugging workflow and understanding the app's current MCP toolkit setup. To create new tools/resources: 1) Define AgentCallEntry.tool() or AgentCallEntry.resource() (namespace, name, description, inputSchema, handler returning AgentResult), 2) Register in the Flutter app (main.dart or bootstrap) via MCPToolkitBinding.addEntries() or addMcpTool(), 3) Use fmt_list_client_tools_and_resources to verify registration, 4) Hot restart the app to activate. 5) Use fmt_client_tool or fmt_client_resource to execute. See flutter-mcp-toolkit-custom-tools skill for AgentCallEntry examples.
| Name | Type | Req | Description |
|---|---|---|---|
| connection | object | – | – |
No output schema declared.
No examples provided.
fmt_long_press ~70
Long-press a widget identified by ref.
| Name | Type | Req | Description |
|---|---|---|---|
| connection | object | – | – |
| ref | string | yes | Widget ref. |
| snapshotId | integer | – | Optional: snapshotId input. Use the snapshot_id returned by most recent semantic_snapshot. If provided and stale, the call fails with stale_snapshot. |
No output schema declared.
No examples provided.
fmt_migrate_agent_entries ~92
Scan Dart sources for legacy MCPCallEntry and return a migration report. Set apply=true to rewrite files in place (host filesystem paths only).
| Name | Type | Req | Description |
|---|---|---|---|
| apply | boolean | – | When true, apply migrations. Default false (report-only). |
| namespace | string | – | Default AgentCallEntry namespace (default: app). |
| projectRoot | string | yes | Flutter/Dart project root or single .dart file path. |
No output schema declared.
No examples provided.
fmt_navigate ~76
Drive the registered Navigator: action=push|pop|popUntil. push and popUntil require route. push accepts arguments map. Requires MCPToolkitBinding.instance.navigatorKey = key on the app.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| arguments | object | – | – |
| connection | object | – | – |
| route | string | – | – |
No output schema declared.
No examples provided.
fmt_press_key ~111
Synthesize a keyboard key press (down + up). Accepted keys: Enter, Escape, Tab, Backspace, Delete, Space, ArrowUp/Down/Left/Right, and single ASCII chars (a-z, 0-9). Optional modifiers: ctrl, shift, alt, meta.
| Name | Type | Req | Description |
|---|---|---|---|
| alt | boolean | – | – |
| connection | object | – | – |
| ctrl | boolean | – | – |
| key | string | yes | – |
| meta | boolean | – | – |
| shift | boolean | – | – |
No output schema declared.
No examples provided.
fmt_reveal_search ~136
Find a semantic target that may be off-screen by taking a snapshot, matching one bounded selector, scrolling up to maxAttempts, and returning a fresh ref/snapshotId plus trace.
| Name | Type | Req | Description |
|---|---|---|---|
| connection | object | – | – |
| direction | string | – | Scroll direction between snapshots. |
| distance | number | – | Scroll distance in logical pixels between attempts. |
| matchBy | string | – | Bounded selector field. "text" searches label, value, and hint. |
| maxAttempts | integer | – | Maximum scroll attempts after the initial snapshot (default 5). |
| query | string | yes | Target text or identifier to find in semantic snapshots. |
No output schema declared.
No examples provided.
fmt_scroll ~138
Scroll to reveal content in a direction. "down" reveals content below (finger swipes up); "up" reveals content above. Matches Playwright and user language ("scroll down to see the footer").
| Name | Type | Req | Description |
|---|---|---|---|
| connection | object | – | – |
| direction | string | yes | Scroll direction: up, down, left, right. |
| distance | number | – | Scroll distance in logical pixels (default: 300). |
| ref | string | – | Optional ref to scroll from. |
| snapshotId | integer | – | Optional: snapshotId input. Use the snapshot_id returned by most recent semantic_snapshot. If provided and stale, the call fails with stale_snapshot. |
No output schema declared.
No examples provided.
fmt_semantic_snapshot ~67
Get compact semantic tree of interactive widgets with refs usable by interaction tools (tap_widget, enter_text, etc.). A control that appears only under the pointer is absent here: on desktop and web, hover the element that should own it and snapshot again.
| Name | Type | Req | Description |
|---|---|---|---|
| connection | object | – | – |
No output schema declared.
No examples provided.
fmt_swipe ~124
Swipe to reveal content in a direction (higher pointer velocity than scroll; used for flings). "down" reveals content below.
| Name | Type | Req | Description |
|---|---|---|---|
| connection | object | – | – |
| direction | string | yes | Swipe direction: up, down, left, right. |
| distance | number | – | Swipe distance in logical pixels (default: 300). |
| ref | string | – | Optional ref to swipe from. |
| snapshotId | integer | – | Optional: snapshotId input. Use the snapshot_id returned by most recent semantic_snapshot. If provided and stale, the call fails with stale_snapshot. |
No output schema declared.
No examples provided.
fmt_tap_widget ~97
Tap a widget identified by ref from semantic_snapshot. Refs are session-scoped to the most recent semantic_snapshot call.
| Name | Type | Req | Description |
|---|---|---|---|
| connection | object | – | – |
| ref | string | yes | Widget ref from semantic_snapshot (e.g. "s_0"). |
| snapshotId | integer | – | Optional: snapshotId input. Use the snapshot_id returned by most recent semantic_snapshot. If provided and stale, the call fails with stale_snapshot. |
No output schema declared.
No examples provided.
fmt_wait_for ~213
Wait for a UI predicate (text/noText/node/time/stable/noError) and return a fresh semantic snapshot. Replaces sleep+snapshot polling. text matches any string in the tree, including the label of a tab that is not open — wait on state with node: {"kind":"node","identifier":"…","selected":true}, or add "absent":true to wait for it to go away. Default timeout 5000 ms, max 30000 ms.
| Name | Type | Req | Description |
|---|---|---|---|
| connection | object | – | – |
| predicate | object | yes | Predicate map. Shapes: {kind:"time", ms:int} | {kind:"text", text:String} | {kind:"noText", text:String} | {kind:"node", identifier:String, selected/enabled/focused/checked/toggled:bool, absent:bool}… |
| timeoutMs | integer | – | Timeout in ms (default 5000, max 30000). |
No output schema declared.
No examples provided.
What is the Flutter MCP Toolkit server?
Flutter MCP Toolkit is listed in the public MCP registry as io.github.Arenukvern/flutter-mcp-toolkit. Inspect and drive Flutter debug apps/games: semantic snapshots, search, and custom client tools. This page covers its container image (ghcr.io/arenukvern/flutter-mcp-toolkit:5.1.0).
Is the Flutter MCP Toolkit server safe to use?
Flutter MCP Toolkit scores 50 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Flutter MCP Toolkit server expose?
Flutter MCP Toolkit exposes 33 tools: fmt_hot_reload_flutter, fmt_hot_restart_flutter, fmt_connect_debug_app, fmt_discover_debug_apps, fmt_get_vm, and 28 more. Their descriptions and schemas cost roughly 3,266 tokens of context every time the server is loaded.
Is the Flutter MCP Toolkit server still maintained?
Flutter MCP Toolkit is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.