组合使用 vLLM 和 MCP 工具出错 400 status code (no body) #9695
-
Beta Was this translation helpful? Give feedback.
Replies: 4 comments
-
|
👀 @xyxxxxx Thank you for raising an issue. We will investigate into the matter and get back to you as soon as possible. |
Beta Was this translation helpful? Give feedback.
-
|
你遇到的 400 错误,是因为 vLLM 部署的 Qwen3 模型在 Lobe Chat 配置中被标记为支持 function/tool call(即 abilities.functionCall: true),导致启用 MCP 工具时请求体会自动带上 tools、functions 等参数,但 vLLM 上的 Qwen3 实际并不支持这些参数,从而直接返回 400 错误。单独用 vLLM 或 OpenAI+MCP 没问题,是因为只有 vLLM+Qwen3+MCP 这个组合才会触发这个兼容性问题。 解决方法有两种:
如果你需要临时绕过,可以手动确保 payload.tools 不被设置或为 false(比如在 MCP 插件配置或调用时规避工具调用)。如果需要彻底解决,建议调整模型配置,后续升级时也能避免类似问题。 相关讨论和 workaround 也可以参考 issue 7637。 To reply, just mention @dosu. How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other |
Beta Was this translation helpful? Give feedback.
-
|
mcp 和 function call / tool use 不是一回事吧 |
Beta Was this translation helpful? Give feedback.
-
|
我们背后是通过 tools calling 来调用 mcp 的,建议检查 vllm 的 tools calling 支持情况 |
Beta Was this translation helpful? Give feedback.


你遇到的 400 错误,是因为 vLLM 部署的 Qwen3 模型在 Lobe Chat 配置中被标记为支持 function/tool call(即 abilities.functionCall: true),导致启用 MCP 工具时请求体会自动带上 tools、functions 等参数,但 vLLM 上的 Qwen3 实际并不支持这些参数,从而直接返回 400 错误。单独用 vLLM 或 OpenAI+MCP 没问题,是因为只有 vLLM+Qwen3+MCP 这个组合才会触发这个兼容性问题。
解决方法有两种:
src/config/aiModels/qwen.ts或 vLLM provider 逻辑)中,将 Qwen3 相关模型的abilities.functionCall设置为false,这样前端就不会再给 vLLM Qwen3 发送 tools/function call 相关参数,能彻底避免 400 错误。这个调整只影响 vLLM 下的 Qwen3,不影响其他支持工具调用的模型和 provider。相关代码参考 配置原理说明如果你需要临时绕过,可以手动确保 payload.tools 不被设置或为 false(比如在 MCP 插件配置或调用时规避工具调用)。如果需要彻底解决,建议调整模型配置,后续升级时也能避免类似问题。
相关讨论和 workaround 也可以参考 issue 7637。
T…