MCP get only NULL for parentFolderId but postgreSQL got it right

该报错表明 n8n 的 MCP 工具 `get_workflow_details` 在返回工作流详情时,没有加载 `parentFolderId` 关联关系,导致即使 PostgreSQL 中已正确存储文件夹 ID,MCP 输出仍为 `null`。优先排查 MCP 工作流详情路径的数据加载配置,确认

快速结论:该报错表明 n8n 的 MCP 工具 `get_workflow_details` 在返回工作流详情时,没有加载 `parentFolderId` 关联关系,导致即使 PostgreSQL 中已正确存储文件夹 ID,MCP 输出仍为 `null`。优先排查 MCP 工作流详情路径的数据加载配置,确认是否请求了 `includeParentFolder` 选项。

适用环境:n8n 2.34.4(Docker 自托管);操作系统 Ubuntu 22.04.5 LTS;数据库 PostgreSQL;Node.js 24.18.0;执行模式 main(默认);通过 MCP OAuth 连接 ChatGPT 插件。

最快修复方案:暂无确认的一步修复方案。Issue 中已定位到根因,但尚未给出对应补丁或升级版本验证结果。可优先尝试升级到包含修复的 n8n 版本(如有),或等待官方发布包含 `includeParentFolder` 加载修复的版本。

注意事项:该问题并非工作流存储或文件夹分配故障,而是 MCP 详情路径的数据加载遗漏。在官方修复前,不建议修改数据库中的文件夹关联数据,否则可能引入新的不一致问题。

问题场景

用户在 n8n 2.34.4 中使用 MCP(OAuth)连接 ChatGPT 插件,当工作流存放在项目下的子文件夹中时,通过 MCP 工具(如 `get_workflow_details`)查询工作流详情,返回的 `parentFolderId` 字段为 `null`,即使这些工作流实际位于非根目录的文件夹内。同时使用 PostgreSQL 直接查询 `workflow_entity` 表,可以确认 `parentFolderId` 字段值已正确存储。

报错原文

MCP get only NULL for parentFolderId but postgreSQL got it right
{
  "id": "s9nawXP7YH4i1Jfw",
  "name": "FS-030 Content Agent – AP-01 Draft",
  "parentFolderId": null
}

原因分析

根据 Issue 中的代码追踪,根因已定位到 MCP 工作流详情路径的数据加载遗漏:

在 `get_workflow_details` 中,`parentFolderId` 字段从关联关系序列化而来:parentFolderId: workflow.parentFolder?.id ?? null。但 MCP 的加载器调用 getMcpWorkflow(..., { includeActiveVersion: true, includeTags: true }),该函数仅将这两个选项转发给 `WorkflowFinderService.findWorkflowForUser`。虽然查找器已支持 `includeParentFolder?: boolean` 选项,但此路径从未请求该选项,导致 `workflow.parentFolder` 关联未被加载,映射器只能输出显式的 `null`。

这与观测到的现象完全吻合:数据库标量字段已填充、公共 REST API 未暴露该字段、MCP 响应中关联未加载而输出 `null`。

环境排查

  • 确认 n8n 版本为 2.34.4(或检查当前版本是否已包含修复)。
  • 确认数据库为 PostgreSQL,且 `workflow_entity.parentFolderId` 字段确实非空。
  • 使用公共 API(GET /api/v1/workflows/{id})对比响应,确认该版本是否同样缺少 `parentFolderId` 字段。
  • 使用编辑器内部路由(GET /rest/workflows/{id})进一步区分:若该路由返回真实值,则可确认问题仅在 MCP 路径。
  • 参考同类问题 #31825:`get_workflow_details` 在存在标签时也返回空数组,表明 MCP 详情路径存在关联数据加载不完整的问题。

解决步骤

  1. 确认问题复现路径:确保工作流按 Issue 中步骤存放在项目子文件夹内,并通过 MCP 调用 `get_workflow_details` 验证 `parentFolderId` 是否为 `null`。
  2. 使用 PostgreSQL 直接查询确认底层数据正确:
    SELECT w.id, w."parentFolderId" FROM workflow_entity w WHERE w.id = '工作流ID';
  3. 对比公共 API 响应(GET /api/v1/workflows/{id}),确认该字段是否完全缺失或为 `null`。
  4. 如条件允许,使用编辑器内部路由(GET /rest/workflows/{id})进一步定位问题层级。
  5. 检查 n8n 当前版本是否有修复补丁;如无,关注上游 Issue #36119 或相关 Linear 工单 GHC-9273 的进展。
  6. 等待官方发布修复后,升级 n8n 并重新测试 MCP 返回结果。

验证方法

升级或应用修复后,对同一工作流 ID 通过 MCP 调用 `get_workflow_details`,检查返回对象中的 parentFolderId 是否与 PostgreSQL 中存储的实际文件夹 ID 一致(非 `null`)。同时对比 UI 中工作流实际存放位置,确保三者一致。

参考来源

n8n-io/n8n #36119

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 18388

发表回复

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