MCP 服务器对匿名 tools/list 返回 401,目录全部显示 0 能力

dsternlicht · reddit · 2026-09-17

作者排查发现:远程 streamable-HTTP MCP 服务器对所有无 Authorization 头的请求统一返回 401(符合规范、可触发客户端 OAuth 流程),但目录的 registry 扫描器不认证,匿名发 initialize 和 tools/list,于是 Smithery 记录为 "0 capabilities",Glama 反复在 Healthy/Unhealthy 间跳。

修复思路:按请求而非连接做鉴权——

安全边界提醒:如果服务器本来就是按 token 动态注册工具(无 token 只注册只读公共工具),401 只是形式;但如果全部工具预先注册、只靠中间件把关,这样改就是真实暴露,应先修注册逻辑。

同类坑:GET 请求应返回 405 而非 404,否则健康检查会误判服务下线。

结果:部署后 Smithery 重新扫描发现 16 个工具,质量分 28 → 52 → 80,Glama 恢复 Healthy。

十秒自查(无需 key,适用于任何远程 MCP 服务器):用 curl 匿名发 tools/list,若返回 401 而非工具列表,目录看到的就是空能力。

原文链接 →

「编程与Agent」频道最新

更多「编程与Agent」频道 AI 资讯 →