[Bug]: MCP on host mode returns empty dataset ids

在 host 模式下使用 RAGFlow 的 MCP 端点(/mcp 或 /sse)时,MCP 返回的 JSON 里数据集 ID 为空,导致模型不知道能调用哪些 dataset。优先排查你的 v0.24.0 镜像是否包含 PR #13123 的修复。

快速结论:在 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 时,把可选参数 idnameNone 值一起传了过去,导致服务端参数校验失败,从而没有返回数据集 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 桥接层。

解决步骤

  1. 先按上面的“环境排查”确认你当前运行的 v0.24.0 镜像构建时间与是否已包含 PR #13123。
  2. 若镜像构建早于 2026-02-12,更新到包含 PR #13123 的较新 RAGFlow 镜像,再重新部署 MCP 服务(Issue 报告者表示会尝试 nightly 版本验证)。
  3. 若你自行构建镜像,可参考修复思路核对代码:list_datasets() 中不再无条件传入 idname,而是仅在非 None 时加入请求参数(具体改动见 PR #13123)。
  4. 重新用 LLM 客户端分别通过 /mcp/sse 连接,使用原 API Key 作为 Bearer Token,观察返回 JSON 中是否已带上 dataset ids。

验证方法

在更新镜像后,重新让 LLM 客户端以 host 模式连上 MCP,检查返回 JSON 中 “and IDs:” 冒号后面是否出现了对应的数据集 ID;同时确认模型能够基于这些 ID 正常选择并调用 RAGFlow 检索工具。若仍为空,说明镜像未包含该修复或升级未生效,需要继续核对构建版本。

参考来源

infiniflow/ragflow #13183

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 25112

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注