Skip to main content
Glama
zafnz
by zafnz

flutter-dev-mcp

An MCP (Model Context Protocol) server that gives AI coding agents first-class Flutter development tools.

Why?

Flutter CLI tools are designed for humans, not agents. flutter test dumps hundreds of lines of output that overwhelm context windows. flutter run requires interactive terminal access for hot reload. flutter analyze produces unstructured text. This MCP server wraps the Flutter CLI into structured, agent-friendly tools with sensible output limits.

Key design decisions:

  • Test results are two-phase: flutter_test returns a compact summary of failures. flutter_get_result fetches full error details for specific tests. This prevents a single test run from blowing the context window.

  • All outputs are capped at 24KB to stay within typical tool response limits.

  • flutter run is managed: The server holds the process, exposes hot reload/restart/logs/kill as separate tools, so the agent doesn't need terminal access.

  • Inputs are sanitized: All commands use array-based process spawning (no shell). Project paths are normalized and validated. Package names and device IDs are checked for flag injection.

Related MCP server: MTDevKit

Tools at a glance

Tool

Parameters

Description

flutter_test

project_dir, [test_path], [test_name], [extra_args]

Run tests and return a compact summary of failures only. Use flutter_get_result to drill into specific failures.

flutter_get_result

test_run_id, test_ids

Get full error details for specific test IDs from a previous flutter_test run. Output capped at 24KB.

flutter_run

project_dir, [device], [is_debug], [dont_detach], [extra_args]

Start a Flutter app on device (e.g. macos, chrome, emulator ID) in debug or release mode. By default detaches after the app starts and returns a run_id.

flutter_hot_reload

run_id

Hot reload a running app.

flutter_hot_restart

run_id

Hot restart a running app.

flutter_kill

run_id

Kill a running app. Graceful shutdown, force-kills after 5s.

flutter_logs

run_id

Get logs from a running app. Returns the most recent output, capped at 24KB.

flutter_analyze

project_dir

Run static analysis. Returns structured issues with severity, file, line, column, and rule name.

flutter_devices

[wireless]

List available devices (simulators, emulators, physical). Skips wireless scan by default.

flutter_clean

project_dir

Delete build artifacts. Useful when builds get into a bad state.

flutter_pub_get

project_dir

Resolve and download dependencies.

flutter_pub_add

project_dir, packages, [dev]

Add one or more packages. Supports dev dependencies.

flutter_gen_l10n

project_dir

Generate localization files from ARB files.

flutter_build

project_dir, target, [debug], [extra_args]

Build the app for a target platform (apk, ios, web, macos, etc.).

flutter_build_runner

project_dir, [delete_conflicting]

Run build_runner for code generation (freezed, json_serializable, drift, etc.).

Parameters in [brackets] are optional.

Install

Requires Node.js 18+ and Flutter SDK on your PATH.

npm install -g flutter-dev-mcp

Or run directly with npx (recommended):

npx -y flutter-dev-mcp

Options

--limit-tools  Only expose tools that provide significant benefit over
               direct CLI usage (testing, app lifecycle, logs). Omits
               analyze, devices, clean, pub get/add, gen-l10n, build,
               and build_runner, which agents can run via shell.

Configuration

Claude Code (CLI)

Easy: claude mcp add flutter-dev -- npx -y flutter-dev-mcp

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "flutter-dev": {
      "command": "npx",
      "args": ["-y", "flutter-dev-mcp"]
    }
  }
}

Codex / Other agents

Any agent that supports MCP can use this server. Point it at the stdio transport:

npx -y flutter-dev-mcp

The server communicates over stdin/stdout using the MCP JSON-RPC protocol.

Tools

Testing

flutter_test

Run tests and get a summary of failures.

Parameter

Type

Required

Description

project_dir

string

yes

Path to the Flutter project

test_path

string

no

Specific test file or directory

test_name

string

no

Filter by test name (plain string match)

extra_args

string[]

no

Additional flags (e.g. ["--coverage", "--dart-define=KEY=VALUE"])

Returns a test_run_id and an array of failed tests with short error excerpts. Pass the test_run_id to flutter_get_result for full details.

flutter_get_result

Get full error output for specific test IDs from a previous run.

Parameter

Type

Required

Description

test_run_id

number

yes

From a previous flutter_test call

test_ids

number[]

yes

Test IDs to get details for

Output is capped at 24KB total. If a single test exceeds that, its error is truncated. If multiple tests would exceed it, only tests that fit are returned.

App lifecycle

flutter_run

Start a Flutter app and get a run_id for subsequent commands.

Parameter

Type

Required

Default

Description

project_dir

string

yes

Path to the Flutter project

device

string

no

""

Device ID (e.g. chrome, macos, emulator ID)

is_debug

boolean

no

true

Debug mode (true) or release mode (false)

dont_detach

boolean

no

false

Wait for app to exit instead of returning after start

extra_args

string[]

no

[]

Additional flags (e.g. ["--flavor=dev", "--dart-define=KEY=VALUE"])

flutter_hot_reload

Trigger a hot reload on a running app.

Parameter

Type

Required

Description

run_id

number

yes

From a previous flutter_run call

flutter_hot_restart

Trigger a hot restart on a running app.

Parameter

Type

Required

Description

run_id

number

yes

From a previous flutter_run call

flutter_kill

Kill a running app. Sends q for graceful shutdown, force-kills after 5s.

Parameter

Type

Required

Description

run_id

number

yes

From a previous flutter_run call

flutter_logs

Get logs from a running app. Returns the most recent output, capped at 24KB.

Parameter

Type

Required

Description

run_id

number

yes

From a previous flutter_run call

Analysis

flutter_analyze

Run static analysis. Returns structured issues with severity, file location, and lint rule name.

Parameter

Type

Required

Description

project_dir

string

yes

Path to the Flutter project

flutter_devices

List available devices.

Parameter

Type

Required

Default

Description

wireless

boolean

no

false

Include wireless devices (slower)

Build

flutter_build

Build the app for a target platform. Can take a long time for release builds.

Parameter

Type

Required

Default

Description

project_dir

string

yes

Path to the Flutter project

target

string

yes

Build target: apk, appbundle, ios, ipa, web, macos, windows, linux, aar, bundle, ios-framework, macos-framework

debug

boolean

no

true

Debug mode (true) or release mode (false)

extra_args

string[]

no

[]

Additional flags (e.g. ["--simulator", "--flavor=dev"])

Dependencies & codegen

flutter_pub_get

Resolve and download dependencies.

Parameter

Type

Required

Description

project_dir

string

yes

Path to the Flutter project

flutter_pub_add

Add packages to the project.

Parameter

Type

Required

Default

Description

project_dir

string

yes

Path to the Flutter project

packages

string[]

yes

Package names (e.g. ["http", "provider"])

dev

boolean

no

false

Add as dev dependency

flutter_clean

Delete build artifacts. Useful when builds get into a bad state.

Parameter

Type

Required

Description

project_dir

string

yes

Path to the Flutter project

flutter_gen_l10n

Generate localization files from ARB files.

Parameter

Type

Required

Description

project_dir

string

yes

Path to the Flutter project

flutter_build_runner

Run dart run build_runner build for code generation (freezed, json_serializable, drift, etc.).

Parameter

Type

Required

Default

Description

project_dir

string

yes

Path to the Flutter project

delete_conflicting

boolean

no

true

Delete conflicting outputs before building

Building from source

git clone <repo-url>
cd flutter-dev-mcp
npm install
npm run build
node dist/index.js

License

MIT

Available Tools

15 tools
flutter_analyzeA

Run static analysis on a Flutter project. Returns all errors, warnings, and info-level issues with file locations and rule names.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_dirYesPath to the Flutter project directory

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the disclosure burden. It clearly describes the behavior: static analysis is run and all errors, warnings, and info-level issues are returned with file locations and rule names. It does not mention side effects or prerequisites, but for a static analysis tool non-mutation is reasonably inferable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences deliver the core purpose and output details with no filler. The main action is front-loaded and every word contributes value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple one-parameter tool with no output schema, and the description adequately covers both what the tool does and what it returns. Nothing essential is missing for an agent to decide whether to invoke it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: project_dir is already documented as 'Path to the Flutter project directory'. The description does not add additional parameter nuance, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Run static analysis'), a specific resource ('a Flutter project'), and the output it produces. This clearly distinguishes it from siblings like flutter_test and flutter_run.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The purpose implies when to use it: when code quality/static analysis results are needed. However, it does not explicitly state when to choose this over alternatives or mention any exclusions or prerequisites, so the guidance is only implied rather than direct.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flutter_buildB

Build a Flutter app for a target platform (e.g. apk, ios, web, macos). Can take a long time.

ParametersJSON Schema
NameRequiredDescriptionDefault
debugNoBuild in debug mode (true) or release mode (false)
targetYesBuild target (e.g. 'apk', 'ios', 'web', 'macos', 'windows', 'linux', 'ipa', 'appbundle')
extra_argsNoAdditional flags to pass to flutter build (e.g. ['--simulator', '--flavor=dev'])
project_dirYesPath to the Flutter project directory

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full behavioral burden. It does warn that the operation 'can take a long time', which is useful, but it fails to disclose what the tool returns, where artifacts are written, whether the build runs asynchronously, or how failures surface. Given the sibling flutter_get_result and flutter_logs, this missing context is significant.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with no filler. The core action and target examples come first, followed by the practically important warning about long execution time. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite full parameter coverage, the description omits important operational context for a long-running build tool: what happens after completion, how to retrieve results, whether it is synchronous, and what prerequisites or failure modes exist. The warning about duration is helpful but not enough for an agent to fully anticipate the tool's behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3 even though the description adds no parameter-level detail. The description's platform examples overlap with the schema's target parameter, but it does not add new meaning or clarify edge cases beyond what the schema already documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Build a Flutter app for a target platform', and gives concrete examples like apk, ios, and web. It is clearly distinct from run/test/analyze tools, but it does not explicitly differentiate itself from the similarly named sibling flutter_build_runner.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool: when you want a build artifact for a target platform rather than running or testing the app. However, it gives no explicit guidance about when not to use it or which sibling should be chosen instead, such as flutter_run for execution or flutter_build_runner for code generation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flutter_build_runnerA

Run build_runner to generate code (freezed, json_serializable, drift, etc.).

ParametersJSON Schema
NameRequiredDescriptionDefault
project_dirYesPath to the Flutter project directory
delete_conflictingNoDelete conflicting outputs before building (usually what you want)

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the full burden of explaining behavior. It only states that code is generated and does not disclose that build_runner may overwrite or delete existing generated/conflicting files, which is especially relevant given the delete_conflicting parameter defaults to true. No side effects, failure modes, or file-system consequences are mentioned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that immediately states the action and purpose. The parenthetical examples add useful context without any filler or unnecessary repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter tool with no output schema, the description is mostly sufficient, but it omits usage guidance and side-effect transparency. An agent would benefit from knowing that this is for regenerating serialization/model code after source changes and that conflicting outputs are deleted by default.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and both parameters have clear descriptions in the schema: project_dir is the Flutter project path and delete_conflicting explains its destructive effect. The main description adds no parameter-specific meaning, but it does not need to because the schema already documents the parameters adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Run build_runner') and names the resource and outcome ('generate code'), with concrete examples like freezed, json_serializable, and drift. This clearly distinguishes it from siblings like flutter_build by emphasizing code generation rather than building/running the app.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for generating code from annotated model packages, so an agent can infer when it is appropriate. However, it does not explicitly state when to prefer this tool over alternatives, such as using flutter_build for actual app compilation, nor does it mention prerequisites like having build_runner configured as a dev dependency.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flutter_cleanA

Run flutter clean to delete build artifacts. Useful when builds get into a bad state.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_dirYesPath to the Flutter project directory

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the core behavior: it deletes build artifacts, which is the main thing an agent needs to know. However, with no annotations provided, it does not mention secondary effects like removing .dart_tool or requiring a subsequent pub get before rebuilding, which would make the behavior more fully transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler. The action and use case are front-loaded, and every word contributes value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter tool, the description is largely sufficient: it explains what the tool does, when to use it, and the single required argument is documented in the schema. It could be strengthened by noting the post-clean dependency refresh step, but that is not required for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so project_dir is already documented as the path to the Flutter project directory. The description adds no extra parameter details, which is acceptable because the schema covers the only parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Run flutter clean') with a clear resource ('delete build artifacts'), which distinguishes it from sibling tools like flutter_test, flutter_run, or flutter_build. The 'bad state' trigger adds concrete context for the tool's purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear use case: 'Useful when builds get into a bad state.' It does not explicitly name alternatives or exclusions, but the trigger is specific enough for an agent to decide when cleaning is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flutter_devicesA

List available Flutter devices (simulators, emulators, physical devices).

ParametersJSON Schema
NameRequiredDescriptionDefault
wirelessNoInclude wirelessly connected devices (slower, default false)

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. The verb 'List' implies a read-only operation, and the schema notes that wireless scanning is slower. However, the description does not explicitly state that the tool has no side effects or that it is safe to call repeatedly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words. The verb and resource are front-loaded, and the parenthetical adds useful specificity about what counts as a Flutter device.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity listing tool with one optional parameter and no output schema, the description is largely sufficient: it identifies the resource and categories. It could briefly note that the output contains device identifiers needed by sibling run/test commands, but that is not essential for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with the single optional boolean 'wireless' fully documented in the schema. The tool description adds no parameter-level semantics beyond what the schema already provides, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') and resource ('available Flutter devices'), and enumerates the categories: simulators, emulators, physical devices. This clearly distinguishes it from sibling tools like flutter_run or flutter_test, none of which are about listing devices.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to call this tool versus alternatives. It does not mention that it should be used before flutter_run or flutter_test to select a target device, nor does it describe any exclusions or conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flutter_gen_l10nB

Generate localization files from ARB files.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_dirYesPath to the Flutter project directory

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It reveals that files are generated but does not mention potential side effects like overwriting existing generated files, requiring l10n configuration, or needing dependencies to be present.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, direct sentence with no filler. The core action and input are stated efficiently and immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is low-complexity with a single parameter, so this is minimally adequate. However, with no annotations and no output schema, the description omits practical context such as prerequisites and the fact that generated files may be written into the project, leaving the agent to infer these details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the only parameter is clearly described as the path to the Flutter project directory. The description adds no additional parameter detail, but the schema already provides sufficient meaning, so a baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb ('Generate') with a specific resource ('localization files') and source ('ARB files'). The description distinguishes this tool from the sibling Flutter commands, none of which mention localization generation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to run this tool versus alternatives, such as before a build or after modifying ARB files. No exclusions or alternative tool references are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flutter_get_resultA

Get full error details for specific test IDs from a previous flutter_test run. Output is capped at 24KB.

ParametersJSON Schema
NameRequiredDescriptionDefault
test_idsYesArray of test_id values to get full details for
test_run_idYesThe test_run_id from a previous flutter_test call

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral disclosure burden. It does disclose the 24KB output cap, which is useful, and implies a read-only retrieval operation. However, it doesn't mention behavior for missing or invalid test IDs, truncation semantics beyond the cap, or any side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences with zero filler. The core purpose is front-loaded, and the important output-size constraint is included without unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity retrieval tool with fully documented parameters and no nested objects, the description is mostly complete. It explains the source of the data, the scope of retrieval, and the output cap. The lack of an output schema is partially mitigated by the description's mention of 'full error details'.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented in the schema. The description adds no new parameter-specific semantics beyond what the schema states, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and identifies the exact resource: full error details for specific test IDs from a previous flutter_test run. This clearly distinguishes it from sibling tools like flutter_test (which runs tests) and flutter_logs (which presumably retrieves logs).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly states the usage context: this is for retrieving error details after a flutter_test run, using specific test IDs. It does not explicitly mention alternatives or when not to use it, but the context is strong enough for an agent to understand when it applies.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flutter_hot_reloadB

Trigger a hot reload on a running Flutter app.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idYesThe run_id from a previous flutter_run call

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full responsibility for behavioral disclosure. It only names the operation without explaining side effects such as whether app state is preserved, whether the app must be in debug mode, or what happens if the run_id is invalid.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one short sentence with no filler; the objective is stated immediately. It earns every word.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, simple trigger tool, the description plus schema covers the basics. Still, with no annotations and no output schema, it leaves open what result to expect and does not distinguish hot reload from hot_restart, which are meaningful gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already fully documents run_id with 100% coverage, including its origin in a previous flutter_run call. The description adds no extra parameter semantics, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Trigger a hot reload') on a specific target ('a running Flutter app'), so an agent can tell what the tool does. It does not explicitly contrast itself with the sibling flutter_hot_restart, so sibling differentiation is left to the tool names.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'on a running Flutter app' implies the tool should be used after a flutter_run session is active, and the run_id param reinforces this. However, there is no explicit guidance about when to choose hot reload over the sibling flutter_hot_restart or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flutter_hot_restartC

Trigger a hot restart on a running Flutter app.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idYesThe run_id from a previous flutter_run call

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the full burden of behavioral disclosure. It does not explain side effects such as whether app state is reset, whether the operation returns a result, or what happens if the app is not running. It merely restates the operation name without adding observable behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one short sentence with no filler and the key action is front-loaded. Every word earns its place, and it is as concise as possible for what it says.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations and no output schema, the description needs to cover what happens when the tool is invoked, but it only names the action. An agent is left without knowledge of the tool's return value, side effects, or how the operation relates to flutter_hot_reload and flutter_kill, making it incomplete for a 1-parameter tool operating on a running app.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers 100% of the single parameter and already explains that run_id comes from a previous flutter_run call. The description adds no additional parameter-level meaning, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Trigger') and names the resource ('hot restart') and scope ('running Flutter app'), making the core purpose clear. However, it does not explicitly differentiate itself from the sibling tool flutter_hot_reload, so the distinction between restart and reload is left to the tool name and prior Flutter knowledge.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only usage cue is that the app must be running, which is already part of the purpose. The description provides no guidance about when to prefer this tool over flutter_hot_reload, when not to use it, or what conditions must be true beyond having a run_id from a previous flutter_run call.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flutter_killA

Kill a running Flutter app.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idYesThe run_id from a previous flutter_run call

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden. It does state the primary side effect—the running app is terminated—which is useful, but it does not mention failure modes, whether the operation is reversible, or what happens if the run_id is invalid or the app is already stopped. This is a moderate gap, not a contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, direct sentence with no filler or redundant phrasing. Every word earns its place, and the core action is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter kill tool with no output schema, the description plus the schema's run_id documentation is mostly sufficient. An agent knows what to kill and which run to reference. A small gap remains around expected failure behavior, but the tool is simple enough that this does not severely compromise usability.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers 100% of parameters and already documents run_id as 'The run_id from a previous flutter_run call'. Since the schema provides sufficient semantic meaning, the description does not need to add much. The description adds no new parameter detail, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Kill a running Flutter app' uses a specific verb and resource, and clearly distinguishes this tool from siblings like flutter_run and flutter_hot_reload. Even with only one sentence, an agent can identify exactly what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than explicit: the tool only makes sense after a flutter_run call, and the run_id parameter references a previous flutter_run. No explicit guidance is given about when not to use it or how it compares to alternatives such as flutter_clean or hot restart, but the lifecycle context is reasonably clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flutter_logsA

Get logs from a running Flutter app. Returns the most recent logs, capped at 24KB.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idYesThe run_id from a previous flutter_run call

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does disclose a meaningful behavioral trait: logs are capped at 24KB and only the most recent logs are returned. However, it does not mention whether retrieval is read-only, what happens with invalid run_ids, or the output format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two tight sentences with no filler. The core action is front-loaded, and the important 24KB cap is stated immediately after the purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple, low-complexity tool with one well-documented parameter and no output schema. The description covers the essential behavior and the result size cap. It could add more about when logs are available or how they are formatted, but nothing critical is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the single parameter run_id is already well documented as coming from a previous flutter_run call. The description itself adds no additional parameter semantics beyond that.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Get logs from a running Flutter app.' It clearly identifies the tool's function and is distinct from siblings like flutter_get_result, flutter_test, or flutter_hot_reload, which address different concerns.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage after a Flutter app is running and that logs are retrieved, but it provides no explicit when-to-use guidance or comparison with alternatives such as flutter_get_result. The need for a run_id from flutter_run is only in the schema, not the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flutter_pub_addB

Add one or more packages to the project's dependencies.

ParametersJSON Schema
NameRequiredDescriptionDefault
devNoAdd as dev dependency
packagesYesPackage names to add (e.g. ['http', 'provider'])
project_dirYesPath to the Flutter project directory

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavioral effects. It only states the action of adding packages, without mentioning that this modifies pubspec.yaml, triggers dependency resolution, may require network access, or can fail if a package is invalid. This is a significant transparency gap for a mutating tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, direct sentence with no redundant or extraneous content. It front-loads the action and resource clearly, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no output schema and no annotations, the description is too thin. It does not explain side effects, expected results, or error conditions, which are essential for an agent to correctly invoke the tool and interpret the outcome.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with meaningful descriptions for all three parameters (dev, packages, project_dir). The description adds minimal semantic value beyond the schema, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Add one or more packages to the project's dependencies.' This clearly distinguishes it from sibling tools like flutter_pub_get, which fetches existing dependencies rather than adding new ones.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives such as flutter_pub_get, flutter_clean, or flutter_analyze. No conditions, exclusions, or contextual hints are given, leaving the agent to infer usage solely from the tool name and general knowledge.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flutter_pub_getB

Run flutter pub get to resolve and download dependencies.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_dirYesPath to the Flutter project directory

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions resolving and downloading dependencies, but does not disclose that the operation modifies pubspec.lock and .dart_tool/package_config.json, requires network access, or may be slow. For a mutating operation this is a significant omission.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, direct sentence with no filler. It front-loads the command name and immediately states its purpose, making it easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple one-parameter tool, so the description is minimally viable. However, it lacks side-effect disclosure and usage context relative to sibling commands, which an agent would benefit from when deciding whether to invoke it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents project_dir with 100% coverage, so the baseline is 3. The description adds no additional parameter-level meaning beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Run'), resource ('flutter pub get'), and purpose ('resolve and download dependencies'), making the core function clear. It does not explicitly differentiate from sibling tools like flutter_pub_add or flutter_get_result, so it falls just short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool or when to prefer an alternative such as flutter_pub_add. The description simply states what the command does, leaving the agent to infer its place in a workflow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flutter_runA

Start a Flutter app. Returns a run_id for use with hot_reload, hot_restart, and logs tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
deviceNoTarget device ID (e.g. 'chrome', 'macos', an emulator ID). Empty for default.
is_debugNoRun in debug mode (true) or release mode (false)
extra_argsNoAdditional flags to pass to flutter run (e.g. ['--flavor=dev', '--dart-define=KEY=VALUE'])
dont_detachNoIf true, wait for the app to finish instead of returning immediately after start
project_dirYesPath to the Flutter project directory

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral burden and does disclose the key behavior of returning a run_id for subsequent development commands. However, it does not mention whether the app process stays running, how to stop it (e.g., flutter_kill), or any side effects, leaving some behavior implicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no filler. The action is stated first and the return value / integration with sibling tools is second, giving the agent the most important information up front.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no output schema and no annotations, the description covers the essential output (run_id) and its role in the sibling-tool workflow, while the input schema covers all five parameters. It could add lifecycle detail such as background execution or stopping via flutter_kill, but the core usage loop is complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter is already documented in the input schema (device, is_debug, extra_args, dont_detach, project_dir). The description adds no extra parameter semantics beyond tying run_id to the downstream tools, so it meets the baseline but does not exceed it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Start') with a clear resource ('a Flutter app') and immediately distinguishes the tool from its siblings by noting it returns a run_id for hot_reload, hot_restart, and logs. This makes it easy for an agent to separate flutter_run from flutter_test, flutter_build, or the hot-reload tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description establishes a clear workflow context: start the app first, then use the returned run_id with hot_reload, hot_restart, and logs. It does not explicitly call out when not to use it or name alternatives, but the stated downstream integration gives enough context for correct selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flutter_testA

Run flutter tests and return a summary of failed tests. Use flutter_get_result to get full error details for specific test IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
test_nameNoFilter tests by name (plain string match)
test_pathNoSpecific test file or directory to run (e.g. test/widget_test.dart)
extra_argsNoAdditional flags to pass to flutter test (e.g. ['--coverage', '--dart-define=KEY=VALUE'])
project_dirYesPath to the Flutter project directory

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Since no annotations are provided, the description carries the full burden of behavioral disclosure. It reveals that the tool executes tests and returns only a summary of failed tests, not full errors, and it implies that the summary contains test IDs that can be used with flutter_get_result. It could additionally mention side effects such as builds or generated artifacts, but the core behavior is clearly conveyed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences deliver the essential information without filler. The first sentence states the action and output, and the second sentence provides the follow-up alternative. The most important behavioral detail is front-loaded, and every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a straightforward test-runner tool, the description is reasonably complete. The output is described as a summary, and the connection to flutter_get_result covers the follow-up path for full error details. The schema handles parameter semantics, and the problem of distinguishing from siblings is mostly solved by the explicit 'flutter tests' phrasing. A fully exhaustive comparison with every sibling is not necessary for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents all four parameters (project_dir, test_name, test_path, extra_args) with meaningful descriptions. The tool description itself adds no parameter-level information beyond that, so the baseline score of 3 is appropriate. It neither obscures nor enriches the parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action and resource: 'Run flutter tests'. It also clearly identifies the output as 'a summary of failed tests' and points to flutter_get_result for full details, which distinguishes this tool from its closest sibling. This makes its purpose unambiguous within the provided sibling set.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when to use the tool: when you want to run Flutter tests and get a failure summary. It explicitly routes the agent to flutter_get_result for full error details, providing a direct alternative. It does not, however, mention when not to use this tool in favor of flutter_run or other related commands, though the phrase 'flutter tests' largely disambiguates that.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 15 tool updatesv1.2.5
    • First observedflutter_analyze
    • First observedflutter_build
    • First observedflutter_build_runner
    • First observedflutter_clean
    • First observedflutter_devices
    • First observedflutter_gen_l10n
    • First observedflutter_get_result
    • First observedflutter_hot_reload
    • First observedflutter_hot_restart
    • First observedflutter_kill
    • First observedflutter_logs
    • First observedflutter_pub_add
    • First observedflutter_pub_get
    • First observedflutter_run
    • First observedflutter_test

TDQS

A3.7/5.0

Scored across 15 tools

Disambiguation5/5

Every tool targets a distinct Flutter workflow action: testing, result retrieval, running, hot reload/restart, killing, logs, analysis, devices, cleaning, pub operations, localization generation, code generation, and building. The complementary relationship between flutter_test and flutter_get_result is clearly described and should not cause confusion. No two tools appear to do the same thing.

Naming Consistency5/5

All tools follow a consistent flutter_ prefix with lowercase snake_case naming. Most tools use an imperative verb or a recognizable Flutter CLI command, making the pattern predictable and easy to navigate. Even noun-style names like flutter_logs and flutter_devices fit the overall flutter_<command> convention.

Tool Count5/5

Fifteen tools is at the upper end of the ideal range but every tool corresponds to a meaningful, non-redundant Flutter development capability. The count is well-scoped for a comprehensive Flutter development server without feeling bloated. Each tool earns its place by covering a distinct phase of the development workflow.

Completeness4/5

The tool surface covers the main Flutter lifecycle well: testing, running, hot reload/restart, logs, analysis, dependency management, code generation, localization, and building. Minor gaps exist such as no flutter_pub_remove, flutter_clean_list, or project scaffolding tool, but these are unlikely to block common agent workflows. The core development loop is fully supported.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that provides AI agents with tools to build, deploy, and manage Flutter applications, including APK/AAB generation, keystore management, and CI/CD integration.
    9
    1
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    An MCP server that scaffolds Flutter projects from a custom clean-architecture Bitbucket template, enabling AI agents to create, list, and inspect Flutter projects via natural language.
    3
    -
  • A
    license
    B
    quality
    D
    maintenance
    An MCP server that lets AI agents see, tap, type, scroll, and assert inside live Flutter apps — no pre-written tests required.
    28
    19
    MIT
  • F
    license
    Not graded
    quality
    A
    maintenance
    An MCP server that lets AI agents drive real mobile-app automation on connected devices, enabling natural-language test tasks, test case generation, and app/build management for Android and iOS.
    -