用途:在无浏览器的 headless 服务器上配置 Gmail API OAuth2。适用于 gmail-mcp-multiauth 的 setup 因调用浏览器、监听 localhost:3000 而失败或卡住、令牌过期后需重新授权、或向已有配置新增 Gmail 账号的场景。
前置条件:已启用 Gmail API 的 GCP 项目、OAuth 2.0 桌面应用凭据(下载的 client_secret JSON);若应用处于 Testing 状态,每个邮箱须先加入 GCP OAuth 同意屏幕的 Test users,否则会返回 403 access_denied。该设置在 GCP 控制台左侧的 Audience 而非 Clients 下。
主要步骤:将客户端凭据存到 ~/.gmail-mcp/oauth-env.json 并 chmod 600;用 urn:ietf:wg:oauth:2.0:oob 生成授权 URL(所有账号通用,区别仅在于登录哪个 Google 账号);用授权码向 https://oauth2.googleapis.com/token 换取 access_token 与 refresh_token;按账号保存到 ~/.gmail-{account}/credentials.json;调用 Gmail API profile 接口验证;最后生成设置 GMAIL_OAUTH_PATH、GMAIL_CREDENTIALS_PATH、GMAIL_ACCOUNT_NAME 的 MCP 启动脚本。令牌约 3600 秒过期,用 refresh_token 刷新,且刷新响应不含新的 refresh_token,需用 saved.update(new_tokens) 保留原值。
限制与注意:授权码单次有效,换取失败须重新授权;execute_code 沙箱在轮次间会重置,应在同一代码块内完成换取;切勿把 client_id/client_secret 硬编码进仓库,否则会被 GitHub push protection 拦截,GitGuardian 仍可能从本地 git 历史中发现;OOB 重定向自 2022 年对新应用弃用,但对桌面应用凭据仍可用,失效则改用 localhost 重定向加后台 HTTP 服务;scope 按次授权,后续需要 Drive 须重新授权。资料另提及 himalaya v1.2.0 的重复键解析错误与 -a 标志位置问题。