OpenAI Agent Node Strict Tool Calling Mode fails on json schema validation with Custom MCP Tool

用户在 Flowise v3.0.5 中通过 Docker 部署,创建一个 Agentflow (v2) 并使用 ChatOpenAI 类型的 Agent 节点。当启用了“Strict Tool Calling”属性,并添加了一个 Custom MCP Tool(例如自定义 get_table_sc

OpenAI Agent Node Strict Tool Calling Mode fails on json schema validation with Custom MCP Tool

OpenAI Agent Node Strict Tool Calling Mode fails on json schema validation with Custom MCP Tool

快速结论:启用“Strict Tool Calling”模式时,使用 Custom MCP Tool 的 OpenAI Agent 节点会报错。优先排查是否需要关闭 Strict Tool Calling,或确认 MCP Tool 的 JSON Schema 在 Flowise 内部转换过程中是否丢失了 type 字段。

问题场景

用户在 Flowise v3.0.5 中通过 Docker 部署,创建一个 Agentflow (v2) 并使用 ChatOpenAI 类型的 Agent 节点。当启用了“Strict Tool Calling”属性,并添加了一个 Custom MCP Tool(例如自定义 get_table_schema 函数)时,运行工作流触发报错。用户尝试了多种 JSON Schema 变体,但均无法避免该错误。

报错原文

Error in Agent node: 400 Invalid schema for function 'get_table_schema': In context=('properties', 'tableName'), schema must have a 'type' key.

原因分析

根据 issue 提交者与 Claude 协助分析,根本原因在于 Flowise 内部的 JSON Schema → Zod → JSON Schema 转换管道中存在有损转换:

  • MCP Server 返回的 inputSchema(JSON Schema)先在 packages/components/nodes/tools/MCP/core.ts 中被 createSchemaModel() 处理。
  • createSchemaModel() 的第 159-175 行,所有属性被强制转换为 z.any(),导致原始 JSON Schema 中的 type 信息丢失。
  • 随后在 packages/components/nodes/agents/OpenAIAssistant/OpenAIAssistant.ts 的 1158 行附近,通过 zodToJsonSchema() 将 Zod Schema 转回 JSON Schema 时,生成的参数对象缺少 type 键,从而触发 OpenAI API 的验证错误。
  • 另外,MCP Tool 是普通 Tool 对象(非 DynamicStructuredTool),即使启用 Strict Tool Calling,其 isStrict() 方法也不会对 MCP 工具生效——该逻辑仅适用于 OpenAPI 工具。

环境排查

  • Flowise 版本:v3.0.5(确认是否影响更早或更新版本)
  • 部署方式:Docker(但问题与部署方式无关,属于代码逻辑问题)
  • Agent 节点类型:ChatOpenAI(OpenAI Assistant 模式)
  • Strict Tool Calling 属性:已启用
  • Custom MCP Tool:任何带有简单属性(如 tableName: string)的 JSON Schema
  • 操作系统:Linux(浏览器为 Chrome,不影响核心问题)

解决步骤

  1. 临时规避方案(可优先尝试):在 Agent 节点属性中,将“Strict Tool Calling”设置为禁用(关闭)。这可以绕过由于 Schema 转换导致 type 字段丢失的问题,但会牺牲严格模式带来的某些验证功能。
  2. 排查 MCP Tool 声明方式:检查 Custom MCP 工具的 inputSchema 在 Server 端是否正确。示例参考 Brave Search MCP(modelcontextprotocol/server-brave-search),该工具在非 Strict 模式下正常工作。可以先用一个已知正常的 MCP 工具测试,以排除自定义 Schema 本身的问题。
  3. 等待或提交框架修复:由于问题根源在 Flowise 核心代码中(createSchemaModel() 丢失 type 信息以及 Strict Tool Calling 未对 MCP 生效),需要 Flowise 维护者在后续版本中修复。用户可关注对应 Issue 的更新(见参考来源)。

验证方法

关闭“Strict Tool Calling”后,重新运行包含 Custom MCP Tool 的 Agent 节点。如果不再出现 schema must have a 'type' key 报错,且工具调用返回正确结果,则表明问题被临时逃避。如需验证根本修复,需等待 Flowise 发布包含修复的新版本,或自行修改 core.ts 中的 createSchemaModel() 逻辑,保留原始 JSON Schema 的 type 信息。

参考来源

FlowiseAI/Flowise #5109

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

celebrityanime
celebrityanime
文章: 7496

发表回复

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