dart_mcp项目v0.2.0版本发布:多模态通信协议的重大升级
dart_mcp是一个基于Dart语言实现的多模态通信协议(Multimodal Communication Protocol,简称MCP)库。该项目为开发者提供了在Dart生态系统中实现MCP协议的能力,支持客户端和服务器端的双向通信,特别适合需要处理多种数据类型的应用场景。
协议版本2025-03-26支持
本次v0.2.0版本最重要的更新是新增了对协议版本2025-03-26的支持。这一更新带来了三项关键功能:
-
音频内容支持:新增了
AudioContent
类型,使协议能够处理音频数据,扩展了多模态通信的能力。开发者现在可以通过MCP协议传输和处理音频内容,为语音交互、音频流等应用场景提供了基础支持。 -
工具注释支持:新增了
ToolAnnotations
功能,允许在通信过程中附加工具相关的元数据和注释信息。这一特性特别适合需要与外部工具集成的应用,能够更丰富地描述和传递工具使用上下文。 -
进度通知消息:新增了
ProgressNotification
消息类型,使得长时间运行的任务可以实时向客户端报告进度。这对于需要显示进度条或任务状态的应用程序非常有用。
协议版本协商机制优化
新版本改进了协议版本协商机制,增加了默认的版本协商逻辑:
- 自动保存协商后的
ProtocolVersion
到MCPServer
和ServerConnection
类的protocolVersion
字段中 - 当版本协商失败时自动断开与服务器的连接
- 将
protocolVersion
从字符串类型改为ProtocolVersion
枚举类型,包含所有支持的版本及其支持状态信息
这些改进使得版本管理更加健壮和类型安全,减少了因版本不匹配导致的运行时错误。
资源模板管理
v0.2.0版本新增了对ResourceTemplate
的支持,开发者现在可以:
- 添加资源模板
- 列出已有资源模板
- 通过自定义处理程序实现模板匹配逻辑
这一功能为资源管理提供了更大的灵活性,特别是在需要动态创建和管理资源模板的场景中。
服务器功能增强
新版本引入了几个重要的服务器端改进:
-
根节点跟踪支持:新增了
RootsTrackingSupport
服务器mixin,可以自动维护客户端设置的根节点列表,简化了根节点管理。 -
通知节流机制:为
ResourceListChangedNotification
和ResourceUpdatedNotification
添加了默认的500ms节流延迟,防止高频通知导致的性能问题。开发者可以通过重写ResourcesSupport.resourceUpdateThrottleDelay
来调整这一延迟。 -
连接状态感知:现在只在客户端仍保持连接时发送通知,解决了因节流延迟导致的通知发送给已断开客户端的问题。
调试与日志记录
为了便于调试,新版本增加了协议日志记录功能:
- 在服务器构造函数和客户端连接方法中添加了
protocolLogSink
参数 - 开发者可以通过这个参数捕获协议消息用于调试目的
- 这一功能对于诊断通信问题和理解协议交互过程非常有帮助
其他改进与破坏性变更
v0.2.0版本还包含了一些其他改进和必要的破坏性变更:
-
分页结果类型修正:将分页结果子类型中的
cursor
键改为nextCursor
,使其更准确地反映其用途。 -
进度通知类型变更:将
ProgressNotification.progress
和ProgressNotification.total
的类型从int
改为num
,以支持更广泛的数值范围。 -
初始化请求/结果改进:将
InitializeRequest
和InitializeResult
的参数从字符串改为ProtocolVersion
类型,提高了类型安全性。同时将InitializeResult
的instructions
改为可空类型,以反映实际使用场景。 -
底层通信重构:将
MCPBase
改为接受StreamChannel<String>
而不是Peer
,并自行构造Peer
实例。这一变更提供了更大的灵活性,允许开发者使用不同的通道实现。 -
API一致性改进:将
MCPServer
构造函数中的channel
参数改为位置参数,提高了API一致性。
总结
dart_mcp v0.2.0版本是一次重要的功能升级,不仅增加了对最新协议版本的支持,还改进了版本协商、资源管理和通知机制等核心功能。这些改进使得库更加健壮、灵活和易于调试,为构建复杂的多模态通信应用提供了更好的基础。开发者现在可以更轻松地处理音频内容、管理资源模板,并通过改进的日志功能更好地理解和调试协议交互。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考