Releases: Arenukvern/mcp_flutter
v2.3.0
2.3.0
- perf: added more checks for [MCPCallEntry.resourceUri] for MCPToolkit package (MCPToolkit updated to v0.2.3)
mcp_server_dart
-
feat: Added support for saving captured screenshots as files instead of returning them as base64 data, with automatic cleanup of old screenshots. Use (
--save-images
) flag to enable it. -
fix: Fixed various issues with dynamic registry, made logs level error by default.
-
added section for RooCode in QUICK_START.md
-
disabled resources support by default for RooCode and Cline setups (for unknown reason it doesn't work)
-
Huge thank you to cosystudio for raising, researching and (describing issues)[https://github.com//issues/53] with RooCode MCP server.
v2.2.2
-
Added
--await-dnd
flag to wait until DND connection is established. By default--no-await-dnd
will be applied.
There will be 5 seconds timeout for DND connection and then server will start without DND connection.This is workaround for MCP Clients which don't support tools updates.
Important: some clients doesn't support it. Use with caution. (disable for Windsurf, works with Cursor)
Thank you @rednikisfun for raising issue for Windsurf.
v2.2.0 - Dynamic Client Side Tools
🎉 Dart Server + Dynamic Tools Registration
🔄 BREAKING CHANGES.
- Server Migration: The main server is now
mcp_server_dart
(Dart-based), replacing the previous TypeScript server (mcp_server
) - Configuration Changes: Updated command-line arguments and removed environment variables
- Package Version: Updated
mcp_toolkit
to^0.2.0
✨ New Features
-
🆕 Dynamic Tools Registration
Flutter apps can now register custom tools at runtime.
See video of how it works and how to use it. -
MCP Tools for Dynamic Registry (part of Dynamic Tools Registration)
listClientToolsAndResources
- Discover all dynamically registered tools and resources if they are not listed in the AI Assistant (Cursor, Cline, Copilot, Roo Code etc..)runClientTool
- Execute custom tools registered by Flutter applicationsrunClientResource
- Read custom resources registered by Flutter applicationsgetRegistryStats
- Get statistics about the dynamic registry (debug mode only)
📦 Migration Guide
- Update AI Assistant Configuration:
If supports resources (Cline, Claude Code etc..)
{
"mcpServers": {
"flutter-inspector": {
"command": "/path/to/mcp_flutter/mcp_server_dart/build/flutter_inspector_mcp",
"args": [
"--dart-vm-host=localhost",
"--dart-vm-port=8181",
"--resources",
"--images",
"--dynamics"
],
"env": {}
}
}
}
If doesn’t support resources:
{
"mcpServers": {
"flutter-inspector": {
"command": "/path/to/mcp_flutter/mcp_server_dart/build/flutter_inspector_mcp",
"args": [
"--dart-vm-host=localhost",
"--dart-vm-port=8181",
"--no-resources",
"--images",
"--dynamics"
],
"env": {}
}
}
}
- Update Flutter App Dependencies:
dependencies: mcp_toolkit: ^0.2.0
For New Users
Follow the updated Quick Start Guide for complete setup instructions.
🔧 Technical Changes
- Command Line Interface
- Instead of environment variables, now you can use command-line flags:
--resources
,--no-resources
,--images
,--dumps
,--dynamics
- Improved logging with
--log-level
option
- MCPToolkit API Updates
- New
addEntries()
method to register tools and resources from Flutter app. - New
MCPCallEntry.tool()
andMCPCallEntry.resource()
constructors - Improved error handling with
MCPCallResult
🐛 Bug Fixes
- Fixed connection stability issues
- Improved error handling for VM service disconnections
- Enhanced port scanning reliability
- Better resource cleanup on app restart
🙏 Acknowledgments
Special thanks to the community for feedback and testing, and to the Flutter team for the new Dart MCP Server which made Dart MCP Server possible.
Code Rabbit Poem :)
In the warren of code, new features appear,
Dynamic tools hop in—now discovery is clear!
Registries and managers with event-driven flair,
Flutter and MCP, a seamless new pair.
With docs and examples, the future looks bright—
This bunny approves: the registry's just right!
🐇✨
v.2.1.0 - Dart MCP Server
This release adds experimental Dart MCP Server.
In future I want to replace Typescript server with Dart one.
The reason is simple: Dart has more tooling for Flutter, and it's easier to develop with it.
The reason why I didn't do it earlier - because I started earlier and at the start there was no Dart MCP Server at all, so only when I already developed first version (with autogenerated tools based on Dart VM methods), I asked question on Flutter Discord server and got reply that there is MCP server fo Dart tooling in development which sounds so amazing, so at the moment I thought that I don't need to do it myself and stop the project completely.
Then I figured out, that's it was fun time to develop it, and I would happy to try to complete at least one version.
At the same time I've tried Dart MCP Server and it was not working with Cline at all, so I decided to keep the project alive and try to fine tune it instead, while Dart MCP Server was in development.
Now Dart MCP Server mostly works, and I'm happy to migrate to it. However, in the same time, I found new idea of how MCP Server can be used - and it's not only using Dart VM methods, but just other way of thinking of MCP servers.
The current way to write MCP server tools and resources is to have to write server and all the code is on the server side.
However, I found, that it's not ideal, because if you need to secure what information is sent to the server, or just add new tools / resources for specific project it is not great way to do it.
So after experimenting with some ideas (the most of work is on branch feat/mcp-registry-try3), first:
- Removed extension and moved all logic for tools and resources to the client. (it's released alread as Dart MCPToolkit package)
- Added ability to register new tools and resources on server from client side. (WIP).
Hopefully, the idea will work and will be useful (but maybe not:))
If you want to try dart server - please check README for more details.
For dynamic registry of client tools and resources, please check issue - will update it during the work.
Have a nice day!
v2.0.0
This release removes the forwarding server, devtools extension and refactors all communication to use Dart VM.
Note that setup is changed - see new Quick Start and Configuration docs.
The major change, is that now you can control what MCP Server will receive from your Flutter app.
This is made, by introducing new package - mcp_toolkit.
This package working on the same principle as WidgetBinding - it collects information from your Flutter app and sends it to Dart VM when MCP Server requests it.
You can override or add only tools you need.
For example, if you want to add Flutter tools, you can use initializeFlutterToolkit()
method like one below.
MCPToolkitBinding.instance
..initialize()
..initializeFlutterToolkit();
Hopefully it will be more secure and customizable.
Poem
Thanks Code Rabbit for poem:
A hop, a leap, the server's gone,
Now all through Dart VM, requests are drawn.
No more forwarding, no more relay,
Errors and screenshots come straight our way!
Toolkit in the app, so neat and spry,
Flutter views and details—oh my!
🐇✨
New Contributors
- @punkpeye made their first contribution in #2
- @calclavia made their first contribution in #1
- @lwsinclair made their first contribution in #28
Full Changelog: https://github.com/Arenukvern/mcp_flutter/commits/2.0.0