🔍 A powerful Model Context Protocol (MCP) server that connects your Flutter apps with AI coding assistants like Cursor, Claude, and Cline.
Currently Flutter works with MCP server via forwarding server. Please see Architecture for more details.
Some of other methods are not tested - they may work or not. Please use with caution. It is possible that the most methods will be removed from the MCP server later to focus solely on Flutter applications and maybe Jaspr.
Dump RPC methods (like dump_render_tree
), may cause huge amount of tokens usage or overload context. Therefore now they are disabled by default, but can be enabled via environment variable DUMPS_SUPPORTED=true
.
See more details about environment variables in .env.example.
- Open issue: #23
What works: ✅ macOS, ✅ iOS (getting errors works, screenshots doesn't)
Should work, in testing: 🚧 Android (some methods works, some not, investigating)
Should work, not tested yet, don't have access to OS: 🤔 Windows 🤔 Linux
❌ Web - doesn't work currently, not sure why.
- Quick Start is available in QUICK_START.md
- Configuration options are available in CONFIGURATION.md
- [Resource|Tool] Analyse errors: get precise and condensed errors of your app. Why it is better then console message: it contains precisely only what Agent need, not the whole list of traced widgets and duplicate information. This works best to give Agent understanding of the error.
- [Resource|Tool] Screenshot: get screenshot of the app. Works only with Claude (untested). Cursor and Cline doesn't support image type in the response.
- [Tool] Hot reload: hot reload app.
-
[Resource|Tool] App info: size of screen, pixel ratio. Unlocks ability for an Agent to use widget selection. [WIP]
-
[Resource|Tool] Selection tool: [WIP] Current idea:
- Enable widget selection in Flutter Inspector.
- Select widget by logical pixel position.
- Get detailed information about your Flutter app's structure based on logical pixel position.
-
Hot restart
- Inspect Current Route: See current navigation state
- Extensions: Flutter Provider/Riverpod states: Get state of Provider/Riverpod instances.
- Extensions: Jaspr: ?
- Extensions: Jaspr Provider: ?
- Extensions: Flame: ?
All tools default to using port 8181 if no port is specified. You can override this by providing a specific port number.
Most tools described in MCP_RPC_DESCRIPTION
todo: add more details about useful methods
Make sure you:
-
Verify that forwarding server is running.
-
Opened Devtools in Browser.
-
Have added MCP extension to your Flutter app dev dependencies and enabled it in Devtools.
-
Connection Issues
- Ensure your Flutter app is running in debug mode
- Verify the port matches in both Flutter app and inspector
- Check if the port is not being used by another process
-
AI Tool Not Detecting Inspector
- Restart the AI tool after configuration changes
- Verify the configuration JSON syntax
- Check the tool's logs for connection errors
The Flutter Inspector is registered with Smithery's registry, making it discoverable and usable by other AI tools through a standardized interface.
┌─────────────────┐ ┌──────────────┐ ┌──────────────┐ ┌─────────────────┐ ┌─────────────┐
│ │ │ │ │ │ │ │ │ │
│ Flutter App │<--->│ DevTools │<--->│ Forwarding │<--->│ MCP Server │<--->│ Smithery │
│ (Debug Mode) │ │ Extension │ │ Server │ │ (Registered) │ │ Registry │
│ │ │ │ │ │ │ │ │ │
└─────────────────┘ └──────────────┘ └──────────────┘ └─────────────────┘ └─────────────┘
Contributions are welcome! Please feel free to submit pull requests or report issues on the GitHub repository.
- Flutter DevTools Documentation
- Dart VM Service Protocol
- Flutter DevTools RPC Constants (I guess and hope they are correct:))
MIT - Feel free to use in your projects!
Flutter and Dart are trademarks of Google LLC.