Flutter开发工具服务器

一个为AI编程代理提供结构化Flutter开发工具的服务,优化了Flutter CLI的输出,使其更适合代理使用。

  • by zafnz
  • TypeScript
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 zafnz/flutter-dev-mcp

使用说明

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

许可证

麻省理工学院