mcp-go v0.39.1版本发布:修复工具输出Schema为空时的序列化问题
mcp-go v0.39.1虽是一个小版本更新,但通过精准修复工具输出Schema的序列化逻辑,进一步提升了框架的鲁棒性。建议所有使用工具输出Schema功能的用户升级至此版本,以确保数据交互的稳定性。
·
近日,mcp-go框架发布了v0.39.1版本,该版本主要修复了一个与工具输出Schema序列化相关的重要问题。本次更新虽仅包含一个关键修复,但对确保工具接口的稳定性和数据一致性具有重要意义。
问题背景
在之前的版本中,当工具的OutputSchema
未明确设置时(即其Type
字段为空),序列化后的JSON仍会包含一个空的outputSchema
字段。这种行为可能导致某些客户端解析时出现预期外的错误,尤其是在依赖Schema类型校验的场景中。
修复内容
本次修复的核心改动位于mcp/tools.go
文件的MarshalJSON
方法中。具体逻辑调整为:
- 如果工具同时设置了
OutputSchema
和RawOutputSchema
,仍会返回冲突错误。 - 仅当
OutputSchema.Type
不为空时,才在序列化结果中包含outputSchema
字段。 - 若未设置输出Schema(即
Type
为空),则完全省略该字段,避免返回空值。
代码示例
修复后的核心逻辑如下:
if t.RawOutputSchema != nil {
// 处理原始Schema
} else if t.OutputSchema.Type != "" { // 仅当Type非空时返回Schema
m["outputSchema"] = t.OutputSchema
}
测试覆盖
为确保修复的可靠性,本次更新还增强了测试用例(mcp/tools_test.go
),新增以下场景验证:
- 默认行为:当工具设置了输出Schema时,序列化结果应包含该Schema。
- 无输出Schema:当工具未设置输出Schema时,序列化结果不应包含
outputSchema
字段。
影响范围
该修复属于向后兼容性改动,不会破坏现有接口的行为。仅当工具未定义输出Schema时,序列化结果不再包含空字段,从而避免客户端解析异常。
总结
mcp-go v0.39.1虽是一个小版本更新,但通过精准修复工具输出Schema的序列化逻辑,进一步提升了框架的鲁棒性。建议所有使用工具输出Schema功能的用户升级至此版本,以确保数据交互的稳定性。
更多推荐
所有评论(0)