[Bug]: Stdio MCP not working

这个报错通常出现在 LiteLLM 里新增 Stdio 类型 MCP 服务后,MCP Tools 页面看不到任何 Available Tools,日志同时出现连接失败,而 SSE/HTTP 类型 MCP 仍然正常。优先排查运行环境中是否缺少 npx 所在的 Node/npm 组件。

快速结论:这个报错通常出现在 LiteLLM 里新增 Stdio 类型 MCP 服务后,MCP Tools 页面看不到任何 Available Tools,日志同时出现连接失败,而 SSE/HTTP 类型 MCP 仍然正常。优先排查运行环境中是否缺少 npx 所在的 Node/npm 组件。

适用环境:LiteLLM v1.77.7 Stable;Docker 镜像部署场景。评论中提到该 Docker 容器内 node/npm 实际位于 /root/.cache/prisma-python/nodeenv/bin/,另有用户反馈最新镜像完全没有 npm。Python MCP 服务配合 uvx 可以正常工作。

最快修复方案:暂无确认的一步修复方案。Issue 中多位用户验证的有效方向是在 LiteLLM 容器内补齐 npm 后,npx 类型的 Stdio MCP 才能正常连接。

注意事项:Issue 已确认根因位于主线代码:三个 proxy Dockerfile 的 runtime 阶段只安装了 nodejs 而未安装 npm,且只把 uv/uvx 复制到 builder 阶段,因此容器内缺少 npx 所需的 npm。手动安装方式属于临时绕过,容器重建后可能失效;不同镜像版本是否已包含 npm 需要自行确认。

问题场景

用户在 LiteLLM 中通过 UI 添加 Stdio 类型的 MCP 服务(例如基于 npx 启动的 @modelcontextprotocol/server-sequential-thinking)后,MCP Tools 页面不显示任何 Available Tools。相同环境下 SSE 或 HTTP 类型的 MCP 可以正常工作。该问题在 Docker 镜像部署中尤为常见,且多位用户反馈使用 Python MCP 服务配合 uvx 可以成功。

报错原文

20:02:09 - LiteLLM:WARNING: client.py:140 - MCP client connection failed: [Errno 2] No such file or directory
20:02:09 - LiteLLM:WARNING: client.py:140 - MCP client connection failed: [Errno 2] No such file or directory
20:02:09 - LiteLLM:WARNING: client.py:228 - MCP client session is not initialized

原因分析

已确认的根因是 LiteLLM 主线代码中,三个 proxy Dockerfile 的 runtime 阶段安装了 nodejs 但没有安装 npm,并且只把 uv/uvx 复制进了 builder 阶段。Stdio 类型 MCP 依赖 npx 启动服务时,进程找不到对应的可执行文件,于是出现 [Errno 2] No such file or directory,随后 MCP client session 无法初始化,Tools 列表自然为空。SSE/HTTP 类型 MCP 不需要本地启动子进程,因此不受影响。也有用户反馈在容器内 node/npm 被放在 /root/.cache/prisma-python/nodeenv/bin/ 这类非默认路径下,同样可能导致 npx 无法被直接调用。

环境排查

  • 确认 LiteLLM 版本是否为 v1.77.7 Stable 或存在相同 Dockerfile 行为的版本。
  • 确认部署方式是否为 Docker 镜像,并检查当前镜像内是否包含 npx 与 npm。
  • 检查 node/npm 是否在 PATH 中可直接执行,或仅存在于 /root/.cache/prisma-python/nodeenv/bin/ 等非默认路径。
  • 对比同环境下使用 uvx 的 Python MCP 服务是否正常,用于区分是否为 npx/Node 环境问题。
  • 确认失败日志中的 [Errno 2] No such file or directory 是否发生在启动 MCP 子进程阶段。

解决步骤

  1. 先确认镜像内是否真的缺少 npm:如果容器中 node/npm 位于 /root/.cache/prisma-python/nodeenv/bin/,说明它们不是被标准方式安装的,npx 调用可能失败。
  2. 如果确认镜像缺少 npm,可在容器内补齐 npm 组件;Issue 评论中提到的临时方式是手动安装 npm。
  3. 另一种临时思路是在 docker-compose.yaml 中通过 post_start 命令安装 Node.js 与 npm,使容器启动后具备 npx。
  4. 补齐 npm 后,重新在 LiteLLM UI 中添加或刷新对应的 Stdio MCP 服务。
  5. 如果补齐 npm 后仍失败,检查 node/npm 所在路径是否加入 PATH,使 npx 能被 LiteLLM 进程直接找到。
  6. 若上述方式仍无效,可改用验证过可工作的 Python MCP 服务(配合 uvx)作为临时替代,同时关注主线 Dockerfile 的修复进展。

验证方法

补齐 npm 后重新加载 MCP Tools 页面,确认对应 Stdio MCP 服务的 Available Tools 能够正常列出;同时观察 LiteLLM 日志中不再出现 MCP client connection failed: [Errno 2] No such file or directory 以及 MCP client session is not initialized。SSE/HTTP 类型 MCP 应继续保持正常。

参考来源

BerriAI/litellm #15560

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 26850

发表回复

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