快速结论:此问题发生在 Open WebUI 调用 memos MCP server 的搜索工具时,由于 MCP 工具返回的数据结构不符合 Open WebUI 对 CallToolResult 的验证要求,导致搜索结果显示为空。优先排查 Open WebUI 对 MCP 响应中 structuredContent 字段的处理逻辑。
问题场景
在 Open WebUI 中集成 memos MCP server 后,用户触发 memos_search_memos 工具(查询参数为 ovh),测试连接成功但实际搜索返回空结果。用户在任意浏览器中发起搜索请求均无返回。
报错原文
View Result from memos_search_memos
Input
query ovh
Output
1 validation error for CallToolResult
structuredContent
Input should be a valid dictionary [type=dict_type, input_value=[{'name': 'memos/N3eGyJtd...complete_tasks': True}}], input_type=list]
For further information visit https://errors.pydantic.dev/2.13/v/dict_type
原因分析
可能原因:Open WebUI 在处理 MCP 工具返回的 CallToolResult 对象时,期望 structuredContent 是一个字典(dict)类型,但 memos MCP server 实际返回的是一个列表(list)结构。这导致 Pydantic 验证失败,工具输出被丢弃,用户看到的结果为空。
相关联的已知缺陷可参考 #20629(MCP server 响应失败)和 #24038(MCP 工具结果中 resource content 类型被静默丢弃),这两个 Issue 也指向了 MCP 结果处理层的同一类 Schema 校验问题。
环境排查
- Open WebUI 版本:0.10.2(使用 Docker 方式部署)
- 操作系统:Debian Testing
- Ollama 版本:不适用(n/a)
- memos 版本:请确认 memos 是否使用最新版本(Issue 中提及 memos 日志无错误)
- MCP server 配置:请检查 memos MCP server 的连接配置和日志
解决步骤
- 确认 Open WebUI 版本:确保使用的是最新版 Open WebUI(Issue 提交时版本为 0.10.2,建议升级到更新版本检查是否已修复)。
- 检查 MCP server 端数据结构:在 memos MCP server 的实现中,确认
structuredContent字段返回的是字典格式还是列表格式。可优先参考 memos 的 MCP server 实现代码和 memos 相关 Issue。 - 可优先尝试:修改 memos MCP server 返回值格式(如果可自定义)——将
structuredContent从列表改为单层字典格式,或在列表外层包一层字典。 - 临时降级或绕过:如果无法修改 memos MCP server,考虑在 Open WebUI 的 MCP 结果处理逻辑中增加对列表输入的支持(参考 #24038 中的修复思路)。
- 查阅关联 Issue:仔细阅读 #20629 和 #24038 中的讨论和补丁,它们可能有直接可用的修复。
验证方法
修复后,在 Open WebUI 中再次对 memos MCP server 发起包含搜索词的查询(例如 “search for all notes related to ovh”),确认搜索工具返回了正确的笔记结果,不再产生 CallToolResult 验证错误。同时检查 Docker 容器日志中不再出现 validation error for CallToolResult 相关输出。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


