
Misc. bug: WebUI MCP panel breakage
快速结论:该问题发生在 llama-server 启动 WebUI 并启用 MCP(Model Context Protocol)代理(--ui-mcp-proxy)时,MCP 设置界面出现多个交互故障,包括复选框缺失、禁用作变成删除、以及 MCP 服务器无响应时锁定长达 500 秒。优先排查是否使用的是包含提交 38fd5c99931576bdf57263fc934bbbb4fd5a5513 的版本。
问题场景
用户在 Linux aarch64 系统上运行 llama-server,使用 --ui-mcp-proxy 参数启动 WebUI 并连接 MCP 服务器,同时开启了 draft 模型、多模态、Jinja 模板等高级功能。在 WebUI 的 MCP 设置页面中操作时,遇到了三个独立但相关的错误。
报错原文
# Bug 1: MCP "Add New Server" 页面缺少 "llama-proxy" 复选框
# Bug 2: MCP 服务器连接超时锁定 500 秒(开发者确认:IT'S FIVE. HUNDER. SECONDS.)
# Bug 3: 点击 MCP 服务器的 toggle 开关禁用服务器时,实际行为是删除服务器
原因分析
三个 Bug 均与提交 38fd5c99931576bdf57263fc934bbbb4fd5a5513 引入的 WebUI MCP 面板重构有关。可能原因包括:
- Bug 1:“Add New Server”页面的 UI 代码更新后遗漏了 llama-proxy 复选框的渲染逻辑,导致添加新服务器时无法勾选代理选项。
- Bug 2:MCP 服务器连接的超时机制在代码调整后,默认超时被错误地设定或重置为 500 秒,而非合理的短超时。
- Bug 3:toggle 开关的点击事件处理错误,将“禁用/启用”操作与“删除”操作的代码路径混淆,导致触发禁用时实际上调用了删除接口。
环境排查
- 确认 llama.cpp 版本:包含提交
38fd5c99931576bdf57263fc934bbbb4fd5a5513或更早的版本。 - 确认构建信息:built with GNU 16.1.1 for Linux aarch64(系统架构与编译器版本)。
- 确认启动参数中包含
--ui-mcp-proxy。 - 确认 WebUI 版本与 llama-server 匹配(预编译 UI 文件与当前服务器代码对应)。
解决步骤
- 升级到修复版本:拉取
ggml-org/llama.cpp的最新代码,包含 PR #25630 及后续的修复提交。作者已确认在个人分支上修复了全部 3 个 Bug。 - 临时规避 Bug 1:如需添加新 MCP 服务器并启用 proxy,先通过“Add New Server”添加,再在服务器的编辑菜单(edit menu)中找到并勾选 llama-proxy 选项。
- 临时规避 Bug 2:避免等待 MCP 服务器超时(500 秒),建议在客户端准备重试前手动刷新页面或关闭 MCP 连接。开发者提到超时实际存在,但时间过长,全局超时设置已在修复中调整。
- 临时规避 Bug 3:不要通过 toggle 开关禁用 MCP 服务器。如需禁用,建议直接删除后再重新添加,或等待修复。注意:禁用后刷新页面会看到服务器条目仍在但内容为空(数据不可用)。
- 验证修复 PR:检查 #25630 是否已包含你需要的所有修复,特别是超时逻辑、toggle 语义、以及 UI 复选框的回归。
验证方法
更新到修复版本后,在 WebUI 中执行以下操作确认问题已修复:
- 打开 MCP 设置 → “Add New Server”,查看是否出现 llama-proxy 复选框。
- 连接一个不可达的 MCP 服务器地址,观察超时时间是否缩短为合理值(建议 ≤30 秒)。
- 点击 toggle 开关禁用已连接的 MCP 服务器,确认服务器不会被删除,且刷新页面后依然保持禁用状态并有数据展示。
参考来源
相关修复 PR:#25630



