Flutter驱动MCP服务

一个为Flutter Driver提供的自定义MCP服务器,用于解决Flutter Driver命令中的类型转换错误。

  • by nannantown
  • Dart
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 nannantown/flutter-driver-mcp

使用说明

Flutter驱动程序MCP服务器

Flutter驱动程序的自定义MCP(模型上下文协议)服务器 达郎/sdk#62265.

背景

内置 dart mcp-server 存在Flutter驱动程序命令失败的错误:

type 'int' is not a subtype of type 'String?' in type cast

此软件包提供了一个独立的MCP服务器,可以正确处理Flutter驱动程序操作。

安装

# Clone the repository
git clone https://github.com/nannantown/flutter-driver-mcp.git

# Install globally
cd flutter-driver-mcp
dart pub global activate --source path .

或添加到您的 pubspec.yaml:

dev_dependencies:
  flutter_driver_mcp:
    git:
      url: https://github.com/nannantown/flutter-driver-mcp.git

MCP配置

添加到您的MCP设置中(例如。, ~/.config/claude/settings.json):

{
  "mcpServers": {
    "flutter-driver": {
      "command": "flutter_driver_mcp",
      "args": []
    }
  }
}

或者,如果从源代码运行:

{
  "mcpServers": {
    "flutter-driver": {
      "command": "dart",
      "args": ["run", "--enable-vm-service", "/path/to/flutter-driver-mcp/bin/server.dart"]
    }
  }
}

准备Flutter应用程序

您的Flutter应用程序必须启用Flutter驱动程序扩展。添加到您的 main.dart:

import 'package:flutter_driver/driver_extension.dart';

void main() {
  enableFlutterDriverExtension();
  runApp(const MyApp());
}

或者创建单独的测试入口点(例如。, test_driver/app.dart):

import 'package:flutter_driver/driver_extension.dart';
import 'package:your_app/main.dart' as app;

void main() {
  enableFlutterDriverExtension();
  app.main();
}

使用以下命令运行您的应用程序:

flutter run --target=test_driver/app.dart

注意控制台输出中的VM服务URI(例如。, http://127.0.0.1:50300/xxxxx=/).

可用工具

连接

通过VM服务URI连接到Flutter应用程序。

{
  "uri": "ws://127.0.0.1:50300/xxxxx=/ws"
}

断开

断开与Flutter应用程序的连接。

轻敲

点击小部件。

{
  "finder_type": "ByText",
  "text": "Login"
}

查找器类型:

  • ByText -按显示的文本查找
  • ByValueKey -按小部件键查找
  • ByType -按小部件类型查找
  • ByTooltipMessage -通过工具提示查找

输入文本

在焦点文本字段中输入文本。

{
  "text": "Hello World"
}

get_text

从小部件获取文本。

{
  "finder_type": "ByValueKey",
  "key": "username_field"
}

等待

等待小部件出现。

{
  "finder_type": "ByText",
  "text": "Welcome",
  "timeout_ms": 10000
}

等待等待

等待小部件消失。

{
  "finder_type": "ByType",
  "type": "CircularProgressIndicator",
  "timeout_ms": 10000
}

截图

截取应用程序的屏幕截图。返回base64编码的PNG图像。

获取健康

检查Flutter驱动程序扩展是否响应。

滚动

滚动可滚动的小部件。

{
  "finder_type": "ByType",
  "type": "ListView",
  "dx": 0,
  "dy": -300,
  "duration_ms": 500
}

调试

启用文件日志记录:

flutter_driver_mcp --log-file=/tmp/flutter_driver_mcp.log

许可证

MIT许可证

相关问题