快速结论:该报错通常出现在自托管 Docker 部署的 LobeChat 中,当用户以无 Cookie 的新会话浏览 MCP 市场或按 tokenUsage 等动态字段排序时触发。优先排查客户端是否已登录并获取市场访问令牌,以及排序字段是否被服务端校验规则拒绝。
适用环境:LobeChat v1.143.3,自托管 Docker 部署,Windows 系统,Firefox 浏览器(Web 桌面端)。未确认 Python、CUDA、显卡等依赖环境信息。
最快修复方案:暂无确认的一步修复方案。对于 Bearer Token 问题,可优先尝试通过「设置 → 凭据」(/settings/creds)登录市场以建立会话;若使用 http:// 非 HTTPS 访问,需配置 HTTPS 反向代理或设置 MARKET_TRUSTED_CLIENT_ID / MARKET_TRUSTED_CLIENT_SECRET 环境变量绕过。
注意事项:上述修复方案仅为临时绕过,官方代码中缺少服务器端 M2M Token 回退逻辑,问题在源码层面尚未被官方验证修复;tokenUsage 排序字段被服务端 Zod 校验拒绝,需要等待官方更新或自行修改枚举。
问题场景
在自托管 Docker 部署的 LobeChat 中,打开新的隐私窗口(无既有会话 Cookie),登录实例后点击侧边栏「探索 / 市场」,浏览、筛选或搜索 MCP 插件时,页面触发 HTTP 500 或 400 错误,市场数据无法加载。
报错原文
Uncaught TRPCError: Failed to fetch mcp list
Error [ZodError]: Invalid enum value. Expected 'createdAt' | 'installCount' | 'isFeatured' | 'isValidated' | 'ratingCount' | 'updatedAt', received 'tokenUsage'
{"error":"unauthorized","error_description":"Missing bearer token"}
原因分析
可能原因有两处:
第一,客户端在调用 market.getMcpList 前未注入市场访问令牌,导致向 market.lobehub.com 发起的请求缺少 Bearer Token,服务端无法校验身份而返回 401;同时服务器端缺少自动获取并缓存 M2M 令牌的回退逻辑,当客户端 Cookie 缺失时直接传递 undefined 给 SDK,进而触发未捕获的 TRPCError。
第二,getMcpList 的 tRPC 参数校验器严格使用 z.nativeEnum(McpSorts) 枚举,但该枚举不包含前端实际发送的 tokenUsage 等排序字段,导致 Zod 校验失败。
环境排查
- 确认 LobeChat 版本是否为 1.143.3 或相近版本;
- 确认是否为自托管 Docker 部署,并检查 Docker 日志中的具体报错堆栈;
- 确认浏览器是否为 Firefox,并检查隐私模式下是否清除了站点 Cookie 与 localStorage;
- 确认访问协议:如果使用
http://而非https://,PKCE 授权流程可能因缺少安全上下文而失效。
解决步骤
- 临时绕过 Bearer Token 问题(可优先尝试):打开「设置 → 凭据」(
/settings/creds),手动登录 Marketplace 以建立会话 Cookie,然后返回市场页面确认能否正常加载。 - 检查访问协议:如果当前使用
http://访问实例,请配置 HTTPS 反向代理(如 Nginx、Caddy),确保crypto.subtle在安全上下文中可用。 - 配置环境变量绕过(可选):在 Docker 部署中设置
MARKET_TRUSTED_CLIENT_ID和MARKET_TRUSTED_CLIENT_SECRET,绕过 PKCE 登录流程;配置后重启容器并重新加载页面。 - 等待官方修复或自行修改源码:监听
lobehub/lobe-chat的 Issue 与 PR 动态,或自行修改src/server/routers/lambda/market.ts中的 Zod 校验,将z.nativeEnum(McpSorts)放宽为z.string().optional(),并在客户端src/services/discover.ts的getMcpList方法中补上await this.injectMPToken()。
验证方法
清除站点 Cookie 与 localStorage 后,在隐私窗口中重新打开 LobeChat,进入「探索 / 市场」页面,确认 MCP 插件列表能正常加载;再按 tokenUsage 排序,确认不再出现 Zod 校验错误与 HTTP 500/400 响应。同时检查 Docker 日志,确认不再出现 Missing bearer token 与 Unhandled TRPCError 相关堆栈。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。
![[Bug]: service_tier=priority silently billed at default rate for gpt-4o/gpt-4.1 family (missing pricing keys on dated-snapshot model entries](https://www.chat-gpts.plus/wp-content/uploads/2026/08/37046-f77ad6e1-768x403.jpg)
![[Bug]: CheckBatchCost stale sweep excludes completed statuses that its own job selection includes, so a completed unprocessed row is never s](https://www.chat-gpts.plus/wp-content/uploads/2026/08/37153-cc613eab-768x403.jpg)
