Flutter Inspector MCP Server
Servidor MCP de Flutter Inspector para desarrollo basado en IA
🔍 Servidor de Protocolo de Contexto de Modelo (MCP) que conecta sus aplicaciones Flutter con asistentes de codificación de IA como Cursor, Claude, Cline, Windsurf, RooCode o cualquier otro asistente de IA que admita el servidor MCP
Vea un pequeño video tutorial sobre cómo configurar el servidor mcp en macOS con Cursor: https://www.youtube.com/watch?v=NBY2p7XIass
[!NOTA] Dado que hay un nuevo paquete experimental en desarrollo que expone las acciones de la herramienta de desarrollo de herramientas Dart a los clientes, es posible que en el futuro este proyecto no sea tan necesario.
Por lo tanto, mi enfoque actual es
Para estabilizar y pulir sólo estas herramientas que serán útiles en el desarrollo (para que sea más plug & play) ver más en MCP_RPC_DESCRIPTION.md
Encuentra una solución para no utilizar el servidor de reenvío.
Espero que te sea útil.
¡Que tenga un lindo día!
Actualmente, Flutter funciona con el servidor MCP mediante un servidor de reenvío. Consulta la sección "Arquitectura" para obtener más información.
⚠️ ADVERTENCIA ⚠️
Los métodos de volcado de RPC (como dump_render_tree ) pueden causar un uso excesivo de tokens o sobrecargar el contexto. Por lo tanto, ahora están deshabilitados por defecto, pero se pueden habilitar mediante la variable de entorno DUMPS_SUPPORTED=true .
Vea más detalles sobre las variables de entorno en .env.example .
Related MCP server: flutter-dev-mcp
🚀 Primeros pasos
Las opciones de configuración están disponibles en CONFIGURATION.md
🎯 Herramientas disponibles para agentes de IA
Análisis de errores
get_app_errors[Recurso|Herramienta] - Recupera información de errores precisa y condensada de tu aplicación Flutter. Uso :Utiliza solo una breve descripción del error. Debe filtrar los errores duplicados para evitar saturar la ventana de contexto del agente con los mismos errores.
Utiliza el Monitor de Errores para capturar errores de la máquina virtual Dart. Esto significa: primero, inicie el servidor mcp, el servidor de reenvío, inicie la aplicación, abra DevTools y la extensión, y luego recargue la aplicación para capturar errores. Todos los errores se capturarán en la extensión DevTools (mcp_bridge).
Probado en : ✅ macOS, ✅ iOS No probado en : 🚧 Android, 🤔 Windows, 🤔 Linux, ❌ Web Ver problema
Herramientas de desarrollo
hot_reload[Herramienta] - Realiza una recarga en caliente de la aplicación Flutter Probado en : ✅ macOS, ✅ iOS, ✅ Android No probado en : 🤔 Windows, 🤔 Linux, ❌ Web Ver problemascreenshot[Recurso|Herramienta]: Captura una captura de pantalla de la aplicación en ejecución. Configuración :Habilitar con el indicador
--imageso la variable de entornoIMAGES_SUPPORTED=truePuede utilizar compresión para optimizar el tamaño de la imagen.
Probado en : ✅ macOS, ✅ iOS No probado en : 🚧 Android, 🤔 Windows, 🤔 Linux, ❌ Web Ver problema
Todas las herramientas usan el puerto 8181 de forma predeterminada si no se especifica ningún puerto. Puede anular esta configuración proporcionando un número de puerto específico.
📚 Ver más en MCP_RPC_DESCRIPTION
🔧 Solución de problemas
get_app_errors : dado que los errores se capturan en la extensión DevTools, debe asegurarse de haber reiniciado o vuelto a cargar la aplicación Flutter después de iniciar el servidor MCP, el servidor de reenvío y la extensión mcp_bridge de DevTools.
Asegúrese también de:
Verifique que el servidor de reenvío esté ejecutándose.
Se abrió Devtools en el navegador.
He agregado la extensión MCP a las dependencias de desarrollo de mi aplicación Flutter y la he habilitado en Devtools.
Problemas de conexión
Asegúrese de que su aplicación Flutter se esté ejecutando en modo de depuración
Verifique que los puertos coincidan tanto en la aplicación Flutter como en el inspector
Compruebe si el puerto no está siendo utilizado por otro proceso
La herramienta de IA no detecta el inspector
Reiniciar la herramienta de IA después de los cambios de configuración
Verificar la sintaxis JSON de configuración
Verifique los registros de la herramienta para detectar errores de conexión
🚧 Integración de herrería 🚧 (trabajo en progreso)
Flutter Inspector está registrado en el registro de Smithery, lo que lo hace detectable y utilizable por otras herramientas de IA a través de una interfaz estandarizada.
Arquitectura de integración
┌─────────────────┐ ┌──────────────┐ ┌──────────────┐ ┌─────────────────┐ ┌─────────────┐
│ │ │ │ │ │ │ │ │ │
│ Flutter App │<--->│ DevTools │<--->│ Forwarding │<--->│ MCP Server │<--->│ Smithery │
│ (Debug Mode) │ │ Extension │ │ Server │ │ (Registered) │ │ Registry │
│ │ │ │ │ │ │ │ │ │
└─────────────────┘ └──────────────┘ └──────────────┘ └─────────────────┘ └─────────────┘🤝 Contribuyendo
¡Agradecemos sus contribuciones! No dude en enviar solicitudes de incorporación de cambios o reportar problemas en el repositorio de GitHub .
📖 Más información
📄 Licencia
MIT – ¡Siéntete libre de usarlo en tus proyectos!
Flutter y Dart son marcas comerciales de Google LLC.
Available Tools
60 toolsdart_io_get_http_profile_requestC
RPC: Get details of a specific HTTP request from the profile
Inputs: requestId (required), port.
dart_io_get_open_file_by_idC
RPC: Get details of a specific open file by its ID
Inputs: fileId (required), port.
dart_io_get_open_filesC
RPC: Get list of currently open files in the Flutter app
Inputs: port.
dart_io_get_versionC
RPC: Get Flutter version information (ext.dart.io.getVersion)
Inputs: port.
dart_io_http_enable_timeline_loggingB
RPC: Enable or disable HTTP timeline logging. Connects to the default Flutter debug port (8181) unless specified otherwise.
Inputs: enabled (required), port.
dart_io_socket_profiling_enabledB
RPC: Enable or disable socket profiling. Connects to the default Flutter debug port (8181) unless specified otherwise.
Inputs: enabled (required), port.
debug_allow_bannerC
RPC: Toggle the debug banner in the Flutter app
Inputs: enabled (required), port.
debug_disable_clip_layersC
RPC: Toggle disabling of clip layers in the Flutter app
Inputs: enabled (required), port.
debug_disable_opacity_layersB
RPC: Toggle opacity layers debugging (ext.flutter.debugDisableOpacityLayers). Connects to the default Flutter debug port (8181) unless specified otherwise.
Inputs: enabled (required), port.
debug_disable_physical_shape_layersC
RPC: Toggle physical shape layers debugging (ext.flutter.debugDisablePhysicalShapeLayers)
Inputs: enabled (required), port.
debug_dump_focus_treeB
RPC: Dump the focus tree (ext.flutter.debugDumpFocusTree)
Inputs: port.
debug_dump_layer_treeB
RPC: Dump the layer tree (ext.flutter.debugDumpLayerTree). Connects to the default Flutter debug port (8181) unless specified otherwise.
Inputs: port.
debug_dump_render_treeB
RPC: Dump the render tree (ext.flutter.debugDumpRenderTree). Connects to the default Flutter debug port (8181) unless specified otherwise.
Inputs: port.
debug_dump_semantics_treeA
RPC: Dump the semantics tree (ext.flutter.debugDumpSemanticsTreeInTraversalOrder). Connects to the default Flutter debug port (8181) unless specified otherwise.
Inputs: port.
debug_dump_semantics_tree_inverseC
RPC: Dump the semantics tree in inverse hit test order (ext.flutter.debugDumpSemanticsTreeInInverseHitTestOrder)
Inputs: port.
debug_paint_baselines_enabledB
RPC: Toggle baseline paint debugging (ext.flutter.debugPaintBaselinesEnabled). Connects to the default Flutter debug port (8181) unless specified otherwise.
Inputs: enabled (required), port.
flutter_core_brightness_overrideC
RPC: Override the brightness for the Flutter app
Inputs: brightness (required), port.
flutter_core_did_send_first_frame_eventC
RPC: Check if the first frame event has been sent
Inputs: port.
flutter_core_did_send_first_frame_rasterized_eventC
RPC: Check if the first frame has been rasterized
Inputs: port.
flutter_core_evictC
RPC: Evict an asset from the Flutter app's cache
Inputs: asset (required), port.
flutter_core_invert_oversized_imagesB
RPC: Toggle inverting of oversized images for debugging
Inputs: enabled (required), port.
flutter_core_platform_overrideC
RPC: Override the platform for the Flutter app
Inputs: platform (required), port.
flutter_core_profile_platform_channelsB
RPC: Enable or disable profiling of platform channels
Inputs: enabled (required), port.
flutter_core_time_dilationB
RPC: Set the time dilation factor for animations in the Flutter app
Inputs: dilation (required), port.
get_active_portsA
Utility: Get list of ports where Flutter/Dart processes are listening. This is a local utility, not a Flutter RPC method.
Inputs: no named parameters.
get_extension_rpcsB
Utility: List all available extension RPCs in the Flutter app. This is a helper tool for discovering available methods.
Inputs: isRawResponse, isolateId, port.
get_supported_protocolsB
Utility: Get supported protocols from a Flutter app. This is a VM service method, not a Flutter RPC. Connects to the default Flutter debug port (8181) unless specified otherwise.
Inputs: port.
get_vm_infoB
Utility: Get VM information from a Flutter app. This is a VM service method, not a Flutter RPC. Connects to the default Flutter debug port (8181) unless specified otherwise.
Inputs: port.
inspector_add_pub_root_directoriesC
RPC: Add additional root directories for pub packages (ext.flutter.inspector.addPubRootDirectories)
Inputs: directories (required), port.
inspector_dispose_all_groupsA
RPC: Dispose all inspector groups to free up memory (ext.flutter.inspector.disposeAllGroups)
Inputs: port.
inspector_dispose_groupB
RPC: Dispose a specific inspector group to free up memory (ext.flutter.inspector.disposeGroup)
Inputs: groupId (required), port.
inspector_dispose_idB
RPC: Dispose a specific widget ID to free up memory (ext.flutter.inspector.disposeId)
Inputs: id (required), port.
inspector_get_children_details_subtreeC
RPC: Get the children details subtree for a widget (ext.flutter.inspector.getChildrenDetailsSubtree)
Inputs: objectId (required), port.
inspector_get_children_summary_treeB
RPC: Get the children summary tree for a widget (ext.flutter.inspector.getChildrenSummaryTree). Connects to the default Flutter debug port (8181) unless specified otherwise.
Inputs: objectId (required), port.
inspector_get_details_subtreeB
RPC: Get the details subtree for a widget. This provides detailed information about the widget and its descendants. Connects to the default Flutter debug port (8181) unless specified otherwise.
Inputs: objectId (required), port.
inspector_get_layout_explorer_nodeB
RPC: Get layout explorer information for a widget (ext.flutter.inspector.getLayoutExplorerNode). Connects to the default Flutter debug port (8181) unless specified otherwise.
Inputs: objectId (required), port.
inspector_get_parent_chainB
RPC: Get the parent chain for a widget (ext.flutter.inspector.getParentChain). Connects to the default Flutter debug port (8181) unless specified otherwise.
Inputs: objectId (required), port.
inspector_get_pub_root_directoriesB
RPC: Get the list of root directories for pub packages (ext.flutter.inspector.getPubRootDirectories)
Inputs: port.
inspector_get_root_widget_summary_treeC
RPC: Get the root widget summary tree (ext.flutter.inspector.getRootWidgetSummaryTree)
Inputs: port.
inspector_get_root_widget_summary_tree_with_previewsC
RPC: Get the root widget summary tree with previews from the Flutter app. This provides a hierarchical view of the widget tree with preview information.
Inputs: port.
inspector_get_selected_summary_widgetB
RPC: Get summary information about the currently selected widget in the Flutter app. Connects to the default Flutter debug port (8181) unless specified otherwise.
Inputs: port.
inspector_get_selected_widgetB
RPC: Get information about the currently selected widget in the Flutter app. Connects to the default Flutter debug port (8181) unless specified otherwise.
Inputs: port.
inspector_is_widget_creation_trackedB
RPC: Check if widget creation tracking is enabled in the Flutter app.
Inputs: port.
inspector_is_widget_tree_readyA
RPC: Check if the widget tree is ready for inspection (ext.flutter.inspector.isWidgetTreeReady)
Inputs: port.
inspector_remove_pub_root_directoriesB
RPC: Remove root directories from pub packages (ext.flutter.inspector.removePubRootDirectories)
Inputs: directories (required), port.
inspector_screenshotA
RPC: Take a screenshot of the Flutter app (ext.flutter.inspector.screenshot). Connects to the default Flutter debug port (8181) unless specified otherwise.
Inputs: port.
inspector_set_pub_root_directoriesC
RPC: Set the root directories for pub packages (ext.flutter.inspector.setPubRootDirectories)
Inputs: directories (required), port.
inspector_set_selection_by_idC
RPC: Set the selected widget by ID (ext.flutter.inspector.setSelectionById). Connects to the default Flutter debug port (8181) unless specified otherwise.
Inputs: selectionId (required), port.
inspector_showC
RPC: Show specific widget details in the Flutter app inspector.
Inputs: options (required), port.
inspector_structured_errorsB
RPC: Enable or disable structured error reporting in the Flutter app.
Inputs: enabled (required), port.
inspector_track_rebuild_dirty_widgetsB
RPC: Track widget rebuilds to identify performance issues (ext.flutter.inspector.trackRebuildDirtyWidgets). Connects to the default Flutter debug port (8181) unless specified otherwise.
Inputs: enabled (required), port.
inspector_track_repaint_widgetsB
RPC: Track widget repaints to identify rendering performance issues (ext.flutter.inspector.trackRepaintWidgets)
Inputs: enabled (required), port.
inspector_widget_location_id_mapB
RPC: Get a mapping of widget IDs to their source code locations (ext.flutter.inspector.widgetLocationIdMap)
Inputs: port.
layout_set_flex_factorC
RPC: Set the flex factor of a flex child widget (ext.flutter.inspector.setFlexFactor)
Inputs: factor (required), objectId (required), port.
layout_set_flex_fitB
RPC: Set the flex fit property of a flex child widget (ext.flutter.inspector.setFlexFit)
Inputs: fit (required), objectId (required), port.
layout_set_flex_propertiesC
RPC: Set multiple flex properties of a flex child widget (ext.flutter.inspector.setFlexProperties)
Inputs: objectId (required), properties (required), port.
performance_profile_render_object_layoutsC
RPC: Enable or disable profiling of render object layout operations (ext.flutter.profileRenderObjectLayouts)
Inputs: enabled (required), port.
performance_profile_render_object_paintsA
RPC: Enable or disable profiling of render object paint operations (ext.flutter.profileRenderObjectPaints)
Inputs: enabled (required), port.
repaint_rainbowC
RPC: Toggle repaint rainbow debugging (ext.flutter.repaintRainbow)
Inputs: enabled (required), port.
stream_listenA
RPC: Subscribe to a Flutter event stream. This is a VM service method for event monitoring. Connects to the default Flutter debug port (8181) unless specified otherwise.
Inputs: streamId (required), port.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 60 tools
Many tools are distinct, but there are confusingly similar pairs such as inspector_get_root_widget_summary_tree versus inspector_get_root_widget_summary_tree_with_previews, and multiple near-identical dump/toggle variants. With 60 tools, users need deep domain knowledge to pick the right one.
Naming mostly follows snake_case with clear prefixes (debug_, inspector_, dart_io_, flutter_core_). Minor inconsistencies exist (e.g., flutter_core_invert_oversized_images vs debug_paint_baselines_enabled), but overall patterns are recognizable.
60 tools is far beyond a coherent toolkit size for an inspector surface. Many are fine-grained toggles and getters that could be consolidated, making the set unwieldy.
Covers the major Flutter inspector workflows: tree dumps, selection, layout info, debug toggles, pub roots, and HTTP profiling. Some areas like hot reload/restart or broader VM service operations are absent, but within the inspector scope it is fairly complete.
Maintenance
Related MCP Connectors
MCP server to assist with JxBrowser development.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
MCP server for progressive tool usage at any scale (see https://klavis.ai)
MCP server for AI dialogue using various LLM models via AceDataCloud
Related MCP Servers
- AlicenseCqualityDmaintenanceA distributable Model Context Protocol (MCP) server that exposes Dart SDK commands for AI-powered development. This server bridges the gap between AI coding assistants and Dart/Flutter development workflows by implementing the Model Context Protocol (MCP).1026 npm6MIT
- AlicenseAqualityDmaintenanceAn MCP server that wraps Flutter CLI tools into structured, agent-friendly tools for AI coding agents, with features like two-phase test results, output capping, and managed app lifecycle.1517 npm4MIT
- AlicenseBqualityDmaintenanceAn MCP server that lets AI agents see, tap, type, scroll, and assert inside live Flutter apps — no pre-written tests required.2818 npmMIT
- AlicenseNot gradedqualityDmaintenanceMCP server for FlutterFlow that uses a command-palette model to manage projects, inspect UI, and apply safe edits via transactional ChangeSets.18 npm10MIT