Skip to main content
Glama

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
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • 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, }, }; }
  • 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, }, }; } });
  • Input schema definition: empty object as the tool takes no parameters.
    inputSchema: { type: 'object', properties: {}, required: [] },
  • 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 } },

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/cristianoaredes/mcp-mobile-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server