使用说明
flutter-dev-mcp
MCP(模型上下文协议)服务器,为AI编码代理提供一流的Flutter开发工具。
为什么?
Flutter CLI工具是为人类设计的,而不是为代理设计的。 flutter test 转储数百行输出,使上下文窗口不堪重负。 flutter run 需要交互式终端访问以进行热重新加载。 flutter analyze 生成非结构化文本。此MCP服务器将Flutter CLI封装为具有合理输出限制的结构化、对代理友好的工具。
关键设计决策:
- 测试结果分为两个阶段:
flutter_test返回故障的简明摘要。flutter_get_result获取特定测试的完整错误详细信息。这可以防止单个测试运行破坏上下文窗口。 - 所有输出的上限为24KB 以保持在典型的工具响应范围内。
flutter run已管理:服务器保存进程,将热重载/重启/日志/终止作为单独的工具公开,因此代理不需要终端访问。- 输入经过消毒:所有命令都使用基于数组的进程生成(无shell)。项目路径被规范化和验证。检查包名称和设备ID以进行标记注入。
工具一览
| 工具 | 参数 | 说明 |
|---|---|---|
flutter_test |
project_dir,[test_path],[test_name],[extra_args] | 运行测试并仅返回失败的简洁摘要。使用 flutter_get_result 深入了解具体的故障。 |
flutter_get_result |
test_run_id,test_ids | 从以前的测试中获取特定测试id的完整错误详细信息 flutter_test 跑。输出上限为24KB。 |
flutter_run |
project_dir、[device]、[is_debug]、[dont_detach]、[extra_args] | 在上启动Flutter应用程序 device (例如。 macos, chrome,仿真器ID)处于调试或发布模式。默认情况下,应用程序启动后会分离并返回 run_id. |
flutter_hot_reload |
run_id | 热重新加载正在运行的应用程序。 |
flutter_hot_restart |
run_id | 热重启正在运行的应用程序。 |
flutter_kill |
run_id | 杀死正在运行的应用程序。优雅关机,5秒后强制致死。 |
flutter_logs |
run_id | 从正在运行的应用程序获取日志。返回最新的输出,上限为24KB。 |
flutter_analyze |
project_dir | 运行静态分析。返回具有严重性、文件、行、列和规则名称的结构化问题。 |
flutter_devices |
[无线] | 列出可用设备(模拟器、仿真器、物理设备)。默认情况下跳过无线扫描。 |
flutter_clean |
project_dir | 删除构建工件。当构建进入不良状态时很有用。 |
flutter_pub_get |
project_dir | 解决并下载依赖关系。 |
flutter_pub_add |
project_dir,packages,[dev] | 添加一个或多个包。支持 dev 依赖性。 |
flutter_gen_l10n |
project_dir | 从ARB文件生成本地化文件。 |
flutter_build |
project_dir、target、[debug]、[extra_args] | 为目标平台(apk、ios、web、macos等)构建应用程序。 |
flutter_build_runner |
project_dir,[删除冲突] | 运行 build_runner 用于代码生成(freeze、jsonserialized、drift等)。 |
参数在 [brackets] 是可选的。
安装
需要在PATH上安装Node.js 18+和Flutter SDK。
npm install -g flutter-dev-mcp
或者直接使用npx运行(推荐):
npx -y flutter-dev-mcp
选项
--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.
配置
克劳德代码(CLI)
简单: claude mcp add flutter-dev -- npx -y flutter-dev-mcp
克劳德桌面版
添加 ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)或 %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"flutter-dev": {
"command": "npx",
"args": ["-y", "flutter-dev-mcp"]
}
}
}
食品法典委员会/其他代理人
任何支持MCP的代理都可以使用此服务器。将其指向stdio传输:
npx -y flutter-dev-mcp
服务器使用MCP JSON-RPC协议通过stdin/stdout进行通信。
工具
测试
flutter_test
运行测试并获取失败摘要。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
project_dir |
string | yes | Flutter项目的路径 |
test_path |
string | no | 特定的测试文件或目录 |
test_name |
string | no | 按测试名称筛选(纯字符串匹配) |
extra_args |
string[] | no | 其他标志(例如。 ["--coverage", "--dart-define=KEY=VALUE"]) |
返回a test_run_id 以及一系列失败的测试,其中包含简短的错误摘录。通过 test_run_id 到 flutter_get_result 了解全部细节。
flutter_get_result
从上次运行中获取特定测试ID的完整错误输出。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
test_run_id |
number | yes | 来自上一个 flutter_test 呼叫 |
test_ids |
number[] | yes | 要获取详细信息的测试ID |
输出总量上限为24KB。如果单个测试超过该值,则其错误将被截断。如果多个测试超过它,则只返回合适的测试。
应用程序生命周期
flutter_run
启动Flutter应用程序并获得 run_id 用于后续命令。
| 参数 | 类型 | 必填 | 默认 | 说明 |
|---|---|---|---|---|
project_dir |
string | yes | Flutter项目的路径 | |
device |
string | 否 | "" |
设备ID(例如。 chrome, macos,仿真器ID) |
is_debug |
boolean | 否 | true |
调试模式(真)或发布模式(假) |
dont_detach |
boolean | 否 | false |
等待应用程序退出,而不是在启动后返回 |
extra_args |
string[] | 否 | [] |
附加标志(例如。 ["--flavor=dev", "--dart-define=KEY=VALUE"]) |
flutter_hot_reload
在正在运行的应用程序上触发热重新加载。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
run_id |
number | yes | 来自上一个 flutter_run 呼叫 |
flutter_hot_restart
在正在运行的应用程序上触发热重启。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
run_id |
number | yes | 来自上一个 flutter_run 呼叫 |
flutter_kill
关闭一个正在运行的应用程序。发送 q 对于优雅关机,5秒后强制关闭。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
run_id |
number | yes | 来自上一个 flutter_run 呼叫 |
flutter_logs
从正在运行的应用程序获取日志。返回最新的输出,上限为24KB。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
run_id |
number | yes | 来自上一个 flutter_run 呼叫 |
分析
flutter_analyze
运行静态分析。返回具有严重性、文件位置和lint规则名称的结构化问题。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
project_dir |
string | yes | Flutter项目的路径 |
flutter_devices
列出可用设备。
| 参数 | 类型 | 必填 | 默认 | 说明 |
|---|---|---|---|---|
wireless |
boolean | 否 | false |
包括无线设备(速度较慢) |
构建
flutter_build
为目标平台构建应用程序。发布版本可能需要很长时间。
| 参数 | 类型 | 必填 | 默认 | 说明 |
|---|---|---|---|---|
project_dir |
string | yes | Flutter项目的路径 | |
target |
string | yes | 构建目标: apk, appbundle, ios, ipa, web, macos, windows, linux, aar, bundle, ios-framework, macos-framework |
|
debug |
boolean | 否 | true |
调试模式(真)或发布模式(假) |
extra_args |
string[] | 否 | [] |
附加标志(例如。 ["--simulator", "--flavor=dev"]) |
依赖关系和代码生成
flutter_pub_get
解决并下载依赖关系。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
project_dir |
string | yes | Flutter项目的路径 |
flutter_pub_add
将包添加到项目中。
| 参数 | 类型 | 必填 | 默认 | 说明 |
|---|---|---|---|---|
project_dir |
string | yes | Flutter项目的路径 | |
packages |
string[] | yes | 包名称(例如。 ["http", "provider"]) |
|
dev |
boolean | 否 | false |
添加为开发依赖项 |
flutter_clean
删除构建工件。当构建进入不良状态时很有用。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
project_dir |
string | yes | Flutter项目的路径 |
flutter_gen_l10n
从ARB文件生成本地化文件。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
project_dir |
string | yes | Flutter项目的路径 |
flutter_build_runner
跑 dart run build_runner build 用于代码生成(freeze、jsonserialized、drift等)。
| 参数 | 类型 | 必填 | 默认 | 说明 |
|---|---|---|---|---|
project_dir |
string | yes | Flutter项目的路径 | |
delete_conflicting |
boolean | 否 | true |
在构建之前删除冲突的输出 |
从源头构建
git clone <repo-url>
cd flutter-dev-mcp
npm install
npm run build
node dist/index.js
许可证
麻省理工学院
