Misc. bug: Webui seems not providing api key when using `Use llama-server proxy` for MCP

当 llama-server 命令行设置了 API Key,同时在 WebUI 中为某个 MCP Server 打开 Use llama-server proxy 后,代理会把 llama-server 自身的鉴权凭据错误地转发到外部 MCP 服务,导致本来无需鉴权的 MCP 服务返回 401。优先

快速结论:当 llama-server 命令行设置了 API Key,同时在 WebUI 中为某个 MCP Server 打开 Use llama-server proxy 后,代理会把 llama-server 自身的鉴权凭据错误地转发到外部 MCP 服务,导致本来无需鉴权的 MCP 服务返回 401。优先排查代理是否错误携带了本地 API Key,而不是先去检查外部 MCP 的配置。

适用环境:Issue 已确认环境包括:llama.cpp llama-server(Linux x86_64,version 8323 / 57819b8d,Clang 21.1.8;另有 macOS version 8343 / 710878a7d,AppleClang 17.0.0.17000604 for Darwin arm64);服务器启用 SSL 时使用 -DCPPHTTPLIB_OPENSSL_SUPPORT=ON 编译,并开启 --webui-mcp-proxy。Issue 未提供 Python、CUDA、显卡信息。

最快修复方案:暂无确认的一步修复方案。Issue 关闭时未给出经过验证的修复步骤,仅明确了问题定位方向:需要把 llama-server 自身的鉴权凭据与出站代理 MCP 请求隔离,或在外发请求中剥离该 API Key。

注意事项:Issue 标签为 bug-unconfirmed,相关结论多来自日志分析与用户侧的推断。CORS proxy 日志本身提示该功能为 EXPERIMENTAL、不建议暴露在不受信任环境。不要直接关闭 llama-server 的 API Key 鉴权来绕过,那会削弱本地服务安全性。

问题场景

用户在 llama-server 命令行设置了 API Key,然后在 WebUI 的 MCP Server 配置中打开 Use llama-server proxy 开关。此时访问外部 MCP 服务(如无需鉴权的 DeepWiki https://mcp.deepwiki.com/mcp)会失败并报 401。未打开该开关时,遇到的是浏览器侧的 CORS 报错;打开代理后,CORS 问题被绕过,但暴露出代理转发凭据的问题。同一环境下无需 API Key 的 Microsoft Learn MCP(https://learn.microsoft.com/api/mcp)可正常工作,说明问题与具体外部 MCP 服务及代理鉴权转发有关。

报错原文

Streamable HTTP error: Error POSTing to endpoint: {"error":{"message":"Invalid API Key","type":"authentication_error","code":401}}

00:31:12 Creating transport for https://mcp.deepwiki.com/mcp
00:31:12 Transport ready (streamable_http)
00:31:12 Sending initialize request...
00:31:12 Connection failed: Streamable HTTP error: Error POSTing to endpoint: {"error":{"message":"Invalid API Key","type":"authentication_error","code":401}}

0.15.651.665 W Unauthorized: Invalid API Key
0.15.651.680 I srv  log_server_r: done request: GET /cors-proxy 127.0.0.1 401

原因分析

可能原因是:开启 Use llama-server proxy 后,WebUI 的 MCP 请求改由 llama-server 的 /cors-proxy 转发,该代理在向外部 MCP 服务发起出站请求时,错误地带上了 llama-server 自身的 API Key。对于 DeepWiki 这类明确无需鉴权的 MCP 服务,携带一个它不认识的 Key 反而会被判定为 “Invalid API Key” 并返回 401。服务端日志中反复出现 Unauthorized: Invalid API KeyGET /cors-proxy ... 401,与该推断一致。用户提到 PR #20167 只解决 CORS 检测与提示启用代理的体验问题,并不处理代理开启后的凭据转发问题,因此两者属于先后不同的问题。

环境排查

  • 确认 llama-server 版本(Issue 中为 8323/57819b8d 与 8343/710878a7d)、构建工具(Clang 21.1.8 / AppleClang 17.0.0.17000604)与操作系统(Linux x86_64 / macOS arm64)。
  • 确认启动 llama-server 时是否设置了 API Key。
  • 确认 WebUI 中对应 MCP Server 的 Use llama-server proxy 开关状态。
  • 确认服务器是否以 -DCPPHTTPLIB_OPENSSL_SUPPORT=ON 编译,以及是否启用 --webui-mcp-proxy
  • 确认目标 MCP 服务是否本就不需要 API Key(如 DeepWiki 官方说明为 free、no-authentication-required)。
  • 对照服务端日志中 /cors-proxy 相关请求的返回码,确认是否为 401。

解决步骤

  1. 先对照现象:打开 Use llama-server proxy 后出现 401,关闭后问题转为 CORS 报错,则可判定为代理鉴权转发问题,而不是外部 MCP 配置问题。
  2. 在 llama-server 日志中搜索 /cors-proxyInvalid API Key,确认代理转发请求是否被本机鉴权拦截并返回 401。
  3. 分别测试一个无需鉴权的 MCP(如 DeepWiki)与一个已验证可用的 MCP(如 Microsoft Learn),确认问题是否只出现在需要外部无鉴权访问的服务上。
  4. 可优先尝试:在修复版本发布前,避免在已开启 Use llama-server proxy 的同一实例上强依赖外部无需鉴权的 MCP,或改用不经过代理的连接方式(但会重新遇到 CORS 限制)。
  5. 关注 Issue #20475 与 PR #20167 的后续状态,等待针对凭据转发隔离的独立修复;如需自行处理,方向是让 /cors-proxy 出站请求剥离或隔离 llama-server 自身的鉴权信息。

验证方法

在 WebUI 中重新用开启 Use llama-server proxy 的配置访问 DeepWiki MCP,若不再返回 Invalid API Key / 401,且能正常完成 Sending initialize request...,同时 llama-server 日志中不再出现 GET /cors-proxy ... 401,即可确认问题已解决。同时应回归验证需要本地 API Key 的 llama-server 自身接口仍能正常鉴权,确保隔离改动没有破坏本地鉴权。

参考来源

ggml-org/llama.cpp #20475

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 23607

发表回复

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