Flutter Inspector MCP Server

by Arenukvern
Verified
missing_rpc_implementations: inspector: # Methods that need to be implemented for the inspector group method1: [] performance: # Methods that need to be implemented for the performance group refactoring_needed: - Group related RPC methods into more specific categories - Add comprehensive error handling for all RPC methods - Add input validation for all parameters - Add proper TypeScript types for all request/response objects - Add documentation for all RPC methods - Add tests for all RPC methods - Add logging for all RPC method calls - Add metrics collection for RPC method usage priority_order: high: - Inspector methods for widget tree manipulation - Core Flutter debugging methods - Performance profiling methods medium: - DartIO methods for file handling - Additional inspector methods low: - Nice-to-have features and optimizations testing_plan: setup: - Ensure Flutter app is running in debug mode - Get list of active ports using get_active_ports - Verify VM service connection using get_vm_info - Get list of available isolates - Get list of extension RPCs using get_extension_rpcs methods_to_verify: # Methods that need verification for isolate requirements inspector_methods: - method: getLayoutExplorerNode verify: - Test without isolate context first - If fails, try with isolate context - Document actual requirement - method: setSelectionById verify: same_as_above - method: getParentChain verify: same_as_above - method: getChildrenSummaryTree verify: same_as_above - method: getDetailsSubtree verify: same_as_above - method: getSelectedWidget verify: same_as_above - method: getSelectedSummaryWidget verify: same_as_above - method: isWidgetCreationTracked verify: same_as_above - method: trackRebuildDirtyWidgets verify: same_as_above - method: structuredErrors verify: same_as_above - method: show verify: same_as_above - method: widgetLocationIdMap verify: same_as_above - method: trackRepaintWidgets verify: same_as_above - method: disposeAllGroups verify: same_as_above - method: disposeGroup verify: same_as_above - method: isWidgetTreeReady verify: same_as_above - method: disposeId verify: same_as_above - method: setPubRootDirectories verify: same_as_above - method: addPubRootDirectories verify: same_as_above - method: removePubRootDirectories verify: same_as_above - method: getPubRootDirectories verify: same_as_above layout_methods: - method: setFlexFit verify: same_as_above - method: setFlexFactor verify: same_as_above - method: setFlexProperties verify: same_as_above performance_methods: - method: profileRenderObjectPaints verify: same_as_above - method: profileRenderObjectLayouts verify: same_as_above - method: profileUserWidgets verify: same_as_above - method: profilePlatformChannels verify: same_as_above debug_methods: - method: debugDumpRenderTree verify: same_as_above - method: debugDumpLayerTree verify: same_as_above - method: debugDumpSemanticsTree verify: same_as_above - method: debugDumpSemanticsTreeInverse verify: same_as_above - method: debugPaintBaselinesEnabled verify: same_as_above - method: debugDumpFocusTree verify: same_as_above - method: debugDisablePhysicalShapeLayers verify: same_as_above - method: debugDisableOpacityLayers verify: same_as_above - method: debugAllowBanner verify: same_as_above - method: repaintRainbow verify: same_as_above core_methods: - method: platformOverride verify: same_as_above - method: brightnessOverride verify: same_as_above - method: timeDilation verify: same_as_above - method: evict verify: same_as_above - method: invertOversizedImages verify: same_as_above - method: didSendFirstFrameEvent verify: same_as_above - method: didSendFirstFrameRasterizedEvent verify: same_as_above dart_io_methods: - method: socketProfilingEnabled verify: same_as_above - method: httpEnableTimelineLogging verify: same_as_above - method: getVersion verify: same_as_above - method: getOpenFiles verify: same_as_above - method: getOpenFileById verify: same_as_above - method: getHttpProfileRequest verify: same_as_above test_execution_order: 1_setup: - Run get_active_ports to find Flutter process - Run get_vm_info to verify connection - Run get_extension_rpcs to get available methods - Store isolate IDs for later use 2_verification_process: - For each method: - Test without isolate context first - Record response/behavior - If error occurs: - Test with isolate context - Compare results - Document whether isolate context is actually required - Update method documentation with findings 3_error_cases: - Test methods with invalid parameters - Test methods with non-existent isolate IDs - Test methods when app is not in debug mode 4_cleanup: - Dispose any created resources - Clear any enabled debug flags - Reset any overridden settings test_results_tracking: format: method_name: status: working | broken | needs_investigation isolate_required: yes | no | unknown error_without_isolate: string | null error_with_isolate: string | null notes: string | null recommended_usage: string documentation_update_plan: - For each method, document: - Whether isolate context is required - Why it's required (if it is) - Best practices for usage - Example of correct usage - Common errors and solutions automation_plan: - Create automated test script that: - Connects to running Flutter app - Executes all tests in order - Records results in structured format - Generates test report - Identifies broken or problematic methods - Suggests fixes for common issues