快速结论:在 host 模式下使用 RAGFlow 的 MCP 端点(/mcp 或 /sse)时,MCP 返回的 JSON 里数据集 ID 为空,导致模型不知道能调用哪些 dataset。优先排查你的 v0.24.0 镜像是否包含 PR #13123 的修复。
适用环境:RAGFlow v0.24.0(镜像),代码提交 392ec99;本地/离线(air gapped)部署,OpenShift on Linux RHEL;MCP host 模式端点为 /mcp 与 /sse,客户端以 Bearer Token 传入 API Key。
最快修复方案:更新到包含 PR #13123 的新镜像(该 PR 已于 2026-02-12 合并)。如果你的 v0.24.0 镜像构建时间早于该日期,需要换成包含该修复的较新镜像,Issue 中报告者表示会尝试 nightly 版本验证。
注意事项:Issue 中未给出可执行的固定升级命令或确切镜像 tag,因此升级方式需按你的部署流程自行确认;nightly 验证结果未在该 Issue 内明确回帖确认;如果你不是使用 host 模式 MCP,或 API Key 本身权限/关联数据集有问题,本修复不一定适用。
问题场景
在 v0.24.0 的 RAGFlow 上以 host 模式运行 MCP 服务,LLM 客户端通过 /mcp(HTTP streamable)或 /sse 连接,并把用户的 API Key 作为 Bearer Token 传入。MCP 返回的 JSON 中,本应出现在 “and IDs:” 后面(冒号右侧)的数据集 ID 为空。由于模型拿不到 dataset id,无法正确调用 RAGFlow 的检索工具,MCP 实际不可用。用户还验证了直接用同一 API Key 调用 /api 的 datasets 接口能返回正确 ID,说明 RAGFlow API 本身正常,问题出在 MCP 桥接层。
报错原文
[Bug]: MCP on host mode returns empty dataset ids
Actual behavior:
in both sse and http streamable, the mcp doesnt return the associated datasets for the given api key in the json response, and leaves the "and IDs:" part in the json empty (there are supposed to be ids right after the ':').
Because of it, the LLM cant call the ragflow retrieval tool properly, as it doesnt know what datasets to call, and the mcp becomes useless.
原因分析
根据 Issue 讨论,这是已确认的已知 bug:MCP 服务的 list_datasets() 方法在调用 /datasets API 时,把可选参数 id 和 name 以 None 值一起传了过去,导致服务端参数校验失败,从而没有返回数据集 ID。修复方式是仅在参数不为 None 时才加入请求参数(该修复见 PR #13123,2026-02-12 合并)。
环境排查
- 确认 RAGFlow 版本为 v0.24.0,且代码提交为
392ec99(Issue 报告者的环境)。 - 确认你的 v0.24.0 镜像构建时间是否早于 2026-02-12(PR #13123 合并日期);早于该日期的镜像很可能不含修复。
- 确认部署形态为 host 模式 MCP,端点为
/mcp和/sse,客户端以 Bearer Token 传入 API Key。 - 确认部署环境为 OpenShift on Linux RHEL、离线部署(air gapped)。
- 可对照验证:用同一 API Key 直接请求
/api的 datasets 接口,若返回正确 ID 而 MCP 仍为空,则问题在 MCP 桥接层。
解决步骤
- 先按上面的“环境排查”确认你当前运行的 v0.24.0 镜像构建时间与是否已包含 PR #13123。
- 若镜像构建早于 2026-02-12,更新到包含 PR #13123 的较新 RAGFlow 镜像,再重新部署 MCP 服务(Issue 报告者表示会尝试 nightly 版本验证)。
- 若你自行构建镜像,可参考修复思路核对代码:
list_datasets()中不再无条件传入id和name,而是仅在非None时加入请求参数(具体改动见 PR #13123)。 - 重新用 LLM 客户端分别通过
/mcp与/sse连接,使用原 API Key 作为 Bearer Token,观察返回 JSON 中是否已带上 dataset ids。
验证方法
在更新镜像后,重新让 LLM 客户端以 host 模式连上 MCP,检查返回 JSON 中 “and IDs:” 冒号后面是否出现了对应的数据集 ID;同时确认模型能够基于这些 ID 正常选择并调用 RAGFlow 检索工具。若仍为空,说明镜像未包含该修复或升级未生效,需要继续核对构建版本。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


