flutter_list_devices
Discover connected devices and emulators for Flutter development to streamline mobile app testing and debugging.
Instructions
List connected devices and emulators available for Flutter development
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- src/tools/flutter.ts:345-378 (handler)The handler function executes 'flutter devices --machine', parses JSON output, enhances with session status, and returns structured device list with counts.handler: async () => { const result = await processExecutor.execute('flutter', ['devices', '--machine']); if (result.exitCode !== 0) { throw new Error(`Failed to list Flutter devices: ${result.stderr}`); } // Parse JSON output let devices = []; try { devices = JSON.parse(result.stdout); } catch (parseError) { throw new Error(`Failed to parse devices output: ${parseError}`); } // Enhance device info with running session status const enhancedDevices = devices.map((device: any) => ({ ...device, hasRunningSession: Array.from(runningFlutterSessions.values()).some( session => session.deviceId === device.id ), })); return { success: true, data: { devices: enhancedDevices, totalCount: enhancedDevices.length, connectedCount: enhancedDevices.filter((d: any) => d.isDevice).length, simulatorCount: enhancedDevices.filter((d: any) => !d.isDevice).length, runningSessionsCount: runningFlutterSessions.size, }, }; }
- src/tools/flutter.ts:337-379 (registration)Tool registration in createFlutterTools function, defining name, description, empty inputSchema, and handler reference.tools.set('flutter_list_devices', { name: 'flutter_list_devices', description: 'List connected devices and emulators available for Flutter development', inputSchema: { type: 'object', properties: {}, required: [] }, handler: async () => { const result = await processExecutor.execute('flutter', ['devices', '--machine']); if (result.exitCode !== 0) { throw new Error(`Failed to list Flutter devices: ${result.stderr}`); } // Parse JSON output let devices = []; try { devices = JSON.parse(result.stdout); } catch (parseError) { throw new Error(`Failed to parse devices output: ${parseError}`); } // Enhance device info with running session status const enhancedDevices = devices.map((device: any) => ({ ...device, hasRunningSession: Array.from(runningFlutterSessions.values()).some( session => session.deviceId === device.id ), })); return { success: true, data: { devices: enhancedDevices, totalCount: enhancedDevices.length, connectedCount: enhancedDevices.filter((d: any) => d.isDevice).length, simulatorCount: enhancedDevices.filter((d: any) => !d.isDevice).length, runningSessionsCount: runningFlutterSessions.size, }, }; } });
- src/tools/flutter.ts:340-344 (schema)Input schema definition: empty object as the tool takes no parameters.inputSchema: { type: 'object', properties: {}, required: [] },
- src/utils/tool-categories.ts:70-78 (helper)Metadata registration in tool registry, categorizing as essential, cross-platform, requiring Flutter.'flutter_list_devices': { name: 'flutter_list_devices', category: ToolCategory.ESSENTIAL, platform: 'cross-platform', requiredTools: [RequiredTool.FLUTTER], description: 'List connected devices for Flutter development', safeForTesting: true, performance: { expectedDuration: 6000, timeout: 15000 } },