Dart MCP翻车了!3.9.0版本无法运行,这个坑你踩过吗?

哈喽,我是老刘

你敢信吗?

开发者在升级Dart 3.9.0后,集体"翻车"了!

Google IO大会宣传的dart mcp server功能居然不能用。

使用AI助手调用dart mcp server功能,会返回如下错误:

swift 复制代码
It seems you need to update your Dart SDK. The required version is 3.9.0-163.0.dev or greater.

什么鬼?

我去github上看了下,3.9.0应该是这个系列最终的正式版,理论上版本号比3.9.0-163.0.dev要高。

正好,在github上看到还有最新的3.10.0版本,那就升级到3.10.0试试。

还是不行!

这波操作真的是把程序员们整不会了。

好家伙,这好像没经过测试就发布了。

如果你也踩过这个坑,那你绝对不是一个人在战斗。

今天老刘就来给大家扒一扒,这个让无数开发者抓狂的bug到底是怎么回事,以及如何优雅地解决它。

问题原因分析

说实话,刚开始遇到这个问题的时候,我也是一脸懵逼。

明明版本号都对了,为什么还是报错?

深入研究了GitHub上的issue后,我终于找到了问题的根源。

核心问题:URI类型搞混了!

原来,当我们给LLM传递的URI实际上是一个VM(虚拟机)服务URI,而不是DTD(Dart Tooling Daemon)URI时,就会出现这个诡异的错误。

什么意思呢?

简单来说,Dart的开发工具链中有两套不同的服务体系:

VM Service URI: 这是Dart虚拟机提供的调试接口,主要用于性能分析、内存监控等底层操作。

DTD URI: 这是Dart Tooling Daemon提供的工具链接口,专门为IDE和外部工具设计的高级API。

AI助手调用dart mcp需要的是DTD URI,但是LLM在默认情况下拿不到DTD Uri,只能获取到VM Service URI。

这就像你拿着银行卡去刷地铁,卡是真的,钱也够,但就是刷不了。

理论上来说这是Dart工具链的一个bug,没有把整个环节打通。

老刘个人猜测是为了赶发布时间没有充分测试。

更深层的问题在于错误提示的逻辑缺陷

在不同的异常处理流程下没有从底层反馈并捕获正确的异常信息,给使用者有效的提示。

所以老刘自己浪费了不少时间去测试3.10版本,但是其实这个问题和版本没有任何关系。

别慌!一招让Dart MCP重新为你打工

既然知道了问题的根源,解决方案其实很简单。

核心思路就是:获取DTD URI,然后传递给LLM

具体操作步骤如下:

第一步:启动Flutter项目并获取DTD URI

给Flutter默认的执行命令添加一个参数:

bash 复制代码
flutter run --print-dtd

注意这里的关键参数是--print-dtd,不是普通的flutter run

运行后,终端会输出类似这样的信息:

csharp 复制代码
A Dart VM Service on sdk gphone64 x86 64 is available at: http://127.0.0.1:13876/2I5k4Otig48=/
The Dart Tooling Daemon is available at: ws://127.0.0.1:13879/IkY5qdOwSQ0=

The Flutter DevTools debugger and profiler on sdk gphone64 x86 64 is available at:
http://127.0.0.1:9101?uri=http://127.0.0.1:13876/2I5k4Otig48=/

这个"ws://..."就是真正的DTD Uri了。

第二步:让LLM读取正确的Uri

这里要注意,我们需要的是DTD URI,也就是ws://127.0.0.1:9394/ws这个地址。

不要搞混了Dev Tools URL,那个是给浏览器用的。

另外这里也不需要手工的给LLM复制粘贴,只要在提示词中告诉LLM从正确的位置获取DTD URI,然后我们试一下。

看到已经成功连接到MCP了。

甚至老刘测试过,即使不加任何提示词,只要Flutter项目编译过程中打印出DTD URI,LLM大概率就会自动读取到正确的URI。

第三步:让Dart MCP工作

可以直接要求LLM获取当前的组件树,效果如下:

当然你也可以做更多的事情,比如让LLM基于这个mcp进行代码调试等等。

总结

说实话我觉得这个bug是Dart工具链的一个设计缺陷,没有从底层反馈并捕获正确的异常信息,给使用者有效的提示。

或者说是发布的太仓促,没有经过充分的测试,导致这个问题暴露出来。

好了,本文算是帮大家扫清一个障碍,下一篇文章会系统的介绍Dart MCP Server的使用方法。

如果看到这里的同学对客户端开发或者Flutter开发感兴趣,欢迎联系老刘,我们互相学习。 私信免费领老刘整理的《Flutter开发手册》,覆盖90%应用开发场景。 可以作为Flutter学习的知识地图。

------------ laoliu_dev

相关推荐
恋猫de小郭1 小时前
2026 Flutter VS React Native ,同时在 AI 时代 VS Native 开发,你没见过的版本
android·前端·flutter
乘风gg2 小时前
从 Structured Output 到企业级 AI 架构——如何把 LLM 放进可控系统
openai·ai编程·cursor
孟健4 小时前
用OpenClaw给12个AI下属定KPI,它们自己复盘、迭代、进化
ai编程
蝎子莱莱爱打怪5 小时前
OpenClaw 从零配置指南:接入飞书 + 常用命令 + 原理图解
java·后端·ai编程
MaXiaoTiao11055 小时前
OpenCode配置详细教程(Windows版)
ai编程
Kagol5 小时前
TinyVue 支持 Skills 啦!现在你可以让 AI 使用 TinyVue 组件搭建项目
前端·agent·ai编程
明君879976 小时前
Flutter 如何给图片添加多行文字水印
前端·flutter
李广坤6 小时前
使用 Skills 的技巧与规范
ai编程
哈基咪怎么可能是AI6 小时前
OpenClaw 插件系统:如何打造全能私人助理 --OpenClaw源码系列第2期
开源·ai编程