flutter-control-and-screenshot について
Flutter Driverを設定し、Dart MCPサーバー経由でFlutterアプリを操作するスキルです。アプリの起動、DTDへの接続、ウィジェット操作、スクリーンショット撮影を案内し、Webアプリ向けのブラウザ代替手順も扱います。
主な機能
- 01flutter_driver対応の設定
- 02Dart MCPサーバー経由のアプリ起動
- 03Data Tooling Daemonへの接続
- 04ウィジェットツリーの確認と操作
- 05Web向け代替手段での撮影
- 06テスト後のアプリ停止
活用シーン
- 01Flutterプロジェクトへのドライバーテスト追加
- 02対応デバイスでのテストアプリ起動
- 03ウィジェットのタップやテキスト入力
- 04ChromeでのWebアプリ画面撮影
MCP 対応
Dart MCPサーバーを使ってFlutterアプリを起動・操作し、DTDへの接続、ログ取得、アプリ停止を行います。ウィジェットツリーの確認やFlutter Driverの操作にも同サーバーのツールを使います。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ rodydavis/ skills --skill flutter-control-and-screenshotインストール後、Claude Code で/flutter-control-and-screenshotを入力して読み込まれたか確認します。
詳細
Flutter ドライバー制御とスクリーンショット
このスキルでは、Flutter アプリケーションに flutter_driver のサポートを追加し、Dart MCP サーバー経由で起動して操作(タップ、ウィジェットの検索)し、スクリーンショットを撮影する手順を説明します(Web/デスクトップ固有の制約への対処を含みます)。
前提条件
- Dart MCP サーバー:
dart-mcp-serverが起動していることを確認してください。 - Flutter プロジェクト:動作する Flutter プロジェクトが必要です。
ステップ 1:依存関係を追加する
pubspec.yaml の dev_dependencies に flutter_driver を追加してください。
dev_dependencies:
flutter_driver:
sdk: flutter
dart pub get を実行するか、mcp_dart-mcp-server_pub ツールを使用してください。
ステップ 2:ドライバーのエントリーポイントを作成する
通常は test_driver/app.dart に個別のエントリーポイントを作成し、main.dart を汚さずにドライバー拡張機能を有効にします。
重要
your_app_package_nameを、pubspec.yamlで定義されている実際のパッケージ名に置き換えてください。
// test_driver/app.dart
import 'package:flutter_driver/driver_extension.dart';
import 'package:your_app_package_name/main.dart' as app; // Import your main app
void main() {
// Enable the extension
enableFlutterDriverExtension();
// Run the app
app.main();
}
ステップ 3:MCP 経由でアプリを起動する
mcp_dart-mcp-server_launch_app ツールを使用してください。
target:test_driver/app.dartdevice:chrome(またはmacos、linux、windows)root:プロジェクトルートの絶対パス。
注:ツールから DTD URI(Data Tooling Daemon)と PID が返されます。これらを保存してください。
ステップ 4:DTD に接続する
起動手順で返された URI を指定して、mcp_dart-mcp-server_connect_dart_tooling_daemon を使用してください。
{
"uri": "ws://127.0.0.1:..."
}
ステップ 5:Web のスクリーンショット撮影方法(ブラウザーサブエージェント)
**Web(Chrome)**で実行する場合、flutter_driver のスクリーンショットコマンドは動作しないことや、すべての環境で直接サポートされていないことがあります。確実な代替手段として、browser_subagent を使用します。
- アプリの URL を取得する:アプリの PID を指定して
mcp_dart-mcp-server_get_app_logsを使用してください。A Dart VM Service on Chrome is available at: http://127.0.0.1:XXXXXのような行を探します。通常、アプリのログにローカル HTTP URL が含まれています。 - 移動してスナップショットを撮る:
browser_subagentを呼び出します。- タスク:「[URL] に移動してください。レンダリングを待ってから、スクリーンショットを撮影してください。」
ステップ 6:アプリを操作する(Flutter Driver)
アプリを操作するには、mcp_dart-mcp-server_flutter_driver を使用してください。
- ウィジェットツリーを取得する:
mcp_dart-mcp-server_get_widget_tree(キーやラベルを見つけるのに便利です)。 - タップ:
{ "command": "tap", "finderType": "ByText", "text": "Settings" } - スクロールやテキスト入力なども利用できます。
ステップ 7:後片付け
ポートやリソースを解放するため、完了したら必ずアプリを停止してください。
- PID を指定して
mcp_dart-mcp-server_stop_appを使用してください。
ワークフローの例
test_driver/app.dartを起動します。- DTD に接続します。
- ログを確認します:localhost の URL を探します。
- ブラウザーサブエージェント:移動してスクリーンショットを撮影します(ホーム/ダッシュボード)。
- Flutter Driver:「Tasks」タブをタップします。
- ブラウザーサブエージェント:スクリーンショットを撮影します(タスク)。
- Flutter Driver:「Settings」タブをタップします。
- ブラウザーサブエージェント:スクリーンショットを撮影します(設定)。
- アプリを停止します。