[Bug]: MCP dataset discovery fails

用户在 RAGFlow 0.26.0 版本中使用 MCP 功能时触发。MCP 服务器在调用 /api/v1/datasets 接口进行数据集发现时,使用了 page_size=1000 的硬编码值,这与后端 REST API 的限制冲突。

[Bug]: MCP dataset discovery fails

[Bug]: MCP dataset discovery fails

快速结论:该报错发生在 RAGFlow 0.26.0 版本中,使用 MCP 工具进行数据集发现时,由于 MCP 服务器硬编码了 page_size=1000,但 REST API 强制要求 page_size <= 100,导致请求被拒绝。优先排查 MCP 服务器源码中的 _DATASET_PAGE_SIZE 常量。

问题场景

用户在 RAGFlow 0.26.0 版本中使用 MCP 功能时触发。MCP 服务器在调用 /api/v1/datasets 接口进行数据集发现时,使用了 page_size=1000 的硬编码值,这与后端 REST API 的限制冲突。

报错原文

[TextContent(type='text', text='Field: <page_size> - Message: <Value error, page_size must be less than or equal to 100> - Value: <1000>', annotations=None, meta=None)]

原因分析

根因是 MCP 服务器源码 mcp/server/server.py 第 61 行定义了一个硬编码常量 _DATASET_PAGE_SIZE = 1000,而 PR #15292 在 REST API 端引入了 REST_API_MAX_PAGE_SIZE = 100 的限制。当 MCP 的 list_datasets 方法(第 165 行)以 page_size=1000 调用 _fetch_datasets_page(第 183 行)时,REST API 拒绝了这个请求,导致 MCP 工具发现失败。

环境排查

  • RAGFlow 版本:0.26.0
  • 分支:master
  • 相关文件:mcp/server/server.py(重点关注第 61 行的 _DATASET_PAGE_SIZE 常量和第 165 行的 list_datasets 方法)
  • 底层限制:REST API 的 page_size 限制为 <= 100(来自 PR #15292)

解决步骤

  1. 定位到 mcp/server/server.py 第 61 行,将 _DATASET_PAGE_SIZE 常量的值从 1000 修改为 100(或更小,如 50)。
  2. MCP 服务器已实现分页逻辑来遍历所有页面,因此只需调整页面大小即可,不需要修改其他结构。
  3. 可优先尝试:_DATASET_PAGE_SIZE 设置为 100,重新启动 MCP 服务。
  4. 如果无法修改源码(如使用 Docker 部署),可能需要等待官方修复此 bug 并发布新版本。

验证方法

修改后重新启动 MCP 服务,再次执行数据集发现操作。如果不再出现 page_size must be less than or equal to 100 的错误,且 MCP 工具能正常发现数据集,则问题已解决。

参考来源

infiniflow/ragflow #16146

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

celebrityanime
celebrityanime
文章: 8461

发表回复

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