Skip to main content
Glama
Flutter Inspector MCP Server

Flutter Inspector MCP Server

Servidor MCP de Flutter Inspector para desarrollo basado en IA

Repositorio de GitHub insignia de herrería

🔍 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

  1. 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

  2. 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

🎯 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 problema

  • screenshot [Recurso|Herramienta]: Captura una captura de pantalla de la aplicación en ejecución. Configuración :

    • Habilitar con el indicador --images o la variable de entorno IMAGES_SUPPORTED=true

    • Puede 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:

  1. Verifique que el servidor de reenvío esté ejecutándose.

  2. Se abrió Devtools en el navegador.

  3. He agregado la extensión MCP a las dependencias de desarrollo de mi aplicación Flutter y la he habilitado en Devtools.

  4. 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

  5. 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 tools
dart_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

    C2.8/5.0

    Scored across 60 tools

    Disambiguation2/5

    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 Consistency4/5

    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.

    Tool Count1/5

    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.

    Completeness4/5

    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

    ActivityActive
    ResponsivenessLimited data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      C
      quality
      D
      maintenance
      A 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).
      10
      26 npm
      6
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      An 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.
      15
      17 npm
      4
      MIT
    • A
      license
      B
      quality
      D
      maintenance
      An MCP server that lets AI agents see, tap, type, scroll, and assert inside live Flutter apps — no pre-written tests required.
      28
      18 npm
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      MCP server for FlutterFlow that uses a command-palette model to manage projects, inspect UI, and apply safe edits via transactional ChangeSets.
      18 npm
      10
      MIT