帖子说了什么
有人抱怨 Claude Code 里的 MCP 工具每隔一小时左右就要重新登录。@onlymoein 的回复很实用:这通常是服务端的问题,不是 Claude Code 的。不少 MCP server 只发短期 access token、不发 refresh token,于是过期就得重新登录;在会话里运行 /mcp 就能重新授权,不用重启会话。能正常刷新的服务器则会一直保持连接。
官方文档怎么写
对照官方 MCP 文档的认证部分:
- 能刷新就自动刷新:已登录的 OAuth 服务器返回
401时,Claude Code 会先刷新已保存的 token、重连并重试一次,只有重试也失败才在/mcp里标记它。 - refresh token 被拒才需要你出手:服务端拒绝 refresh token 时,Claude Code 会立即提示去
/mcp;在列表里选这个服务器的 Re-authenticate 重新登录即可。 - 启动时也会提醒:有服务器需要登录时,Claude Code 启动会显示提示,不用每次手动打开
/mcp去找。 - 手动配置了 Authorization 头的另算:如果你在
headers里自己写了 token,服务器拒绝时 Claude Code 只报连接失败,不会转去 OAuth。这时要检查的是你配置的那个 token。
几个场景的处理办法
- 交互会话里:看到提示就
/mcp,选 Re-authenticate,当前会话继续用。 - 在 shell 里登录:
claude mcp login <name>可以不进会话直接走 OAuth;claude mcp logout <name>清掉保存的凭据。 - SSH 到远程机器、没有浏览器:
claude mcp login会检测到没有本地浏览器,改为打印授权链接。在自己电脑上打开链接登录,再把浏览器地址栏里的完整回调地址粘回终端。粘贴这一步需要交互终端,所以 SSH 时用ssh -t;也可以加--no-browser强制走这个流程。 claude -p脚本和 Agent SDK:这些运行方式没有/mcp面板,不能临时走 OAuth。要先在交互会话里或用claude mcp login登录好,再跑脚本;否则需要登录的服务器,其工具在这次运行里不可用。- 想彻底撤销授权:在
/mcp菜单里选 Clear authentication。
小结
MCP 频繁掉登录,先别急着重装或换账号。分清是服务端不给刷新、还是自己配置的 token 失效,再用 /mcp 或 claude mcp login 处理;无人值守的任务开跑前,先确认需要的服务器都已登录。
如果你想让 Claude Code 跑在一台常开、整机独享的新加坡 Mac mini 上,可以了解 Zumac.Ai,咨询 Telegram @singatao。
