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
cd flutter-dev-mcp
npm install
npm run build
node dist/index.js许可证
麻省理工学院
