@a1-x-tech/mcp-google-auth

中文文档
0.1.2发布于 2026/11/05MITTypeScriptES Module近 30 天下载 2580

Mcp-google- * MCP 服务器行的可再用 Google OAuth 登入: 聊天登录工具(loopback + PKCE)和每个请求的TokenProvider.

中文使用文档
文档目录6 节
  1. 使用量
  2. 注册工具
  3. 证书来源
  4. 安全变化剂(每个都由测试所支撑)
  5. 发展
  6. 许可证

@a1-x-tech/mcp-google-auth (英语)

可重用 Google OAuth 登录 mcp-google-* MCP服务器行. 一个 软件包给予每个服务器 Yandex 线的聊天登录——适应 谷歌的规则:a 打开回放收听器 127.0.0.1 + 常设专家委员会(S256) 改为 死亡的OOB流,一个 用户拥有的桌面 OAuth 客户端 (个人使用) 豁免——无核查、无小武器问题协调行动)和a set_client 路径 client_secret 从不通过聊天.

这是一个 图书馆,而不是服务器: 它在您身上注册了六个 MCP 工具 McpServer 手拿回来 TokenProvider 您的 API 客户端每个请求都呼叫 .

使用量

import { registerGoogleAuth, unconfiguredPrefix } from "@a1-x-tech/mcp-google-auth";

const options = {
  serverName: "calendar",                 // → ~/.config/mcp-google-calendar/credentials.json
  envPrefix: "GOOGLE_CALENDAR",           // → GOOGLE_CALENDAR_REFRESH_TOKEN, …
  scopes: ["https://www.googleapis.com/auth/calendar.events"],
  // verifyIdentity?: async (accessToken) => ({ email }),  // default: OIDC userinfo
  // defaultClient?: { clientId, clientSecret? },           // built-in A1 client slot
  // finishWaitMs?: 20_000,                                  // finish_login wait for the callback
  // fail?: (err) => CallToolResult,                       // your error renderer (telemetry tag); default `Error: <message>`
};

const provider = registerGoogleAuth(server, options);

// In your API client, per request:
const token = await provider.getAccessToken();
// On a 401 from the API — one re-mint + replay:
const fresh = await provider.getAccessToken(true);
// Before a tool that needs a specific scope (partial grants are stored, not rejected):
provider.assertScopes(["https://www.googleapis.com/auth/calendar.events"]);

// At startup, when provider.hasToken() is false, prepend to the initialize instructions:
const instructions = unconfiguredPrefix(options) + REGULAR_BRIEFING;

该部分总是添加 openid + 键 userinfo.email 对(非敏感) scopes - 就是这样 finish_login 连API的账户都命名 一个身份电话.

注册工具

工具提示目的
auth_status只读连接状态, 令牌源, 过期, 授予/ 丢失范围, 路径 。 没有网络, 输出中没有符号 .
setup_instructions只读GCP向导核对表(项目-API-同意屏幕-) 发布应用 – 桌面客户端 – 下载 JSON. 客户端已经存在时缩短 .
set_client写入读取已下载 client_secret_*.json 以 路径类型 installed在共享中存储 client.json (0600) (中文(简体) ). 秘密从来不进入聊天.
start_login写入, 故意不只读薄荷 PKCE + state,绑定一个一发收听器 127.0.0.1 (随机端口或 <PREFIX>_OAUTH_PORT),返回时 authorizeUrl + 键 nextStep。不打开浏览器。 只读的提示会让快速注射静静地启动OAuth流.
finish_login写入等待浏览器回调最多 20 s , 等待本地代码交换, 解剖保存符号, 验证身份( 服务器回调或用户信息), 报告 accountEmail, (中文(简体) ), grantedScopes, (中文(简体) ), missingScopes, (中文(简体) ), previousAccountEmail 账户变动.
logout破坏性已撤销 oauth2.googleapis.com/revoke,删除文件、报表 envTokenStillSet。 。 。 .

证书来源

OAuth 客户端 (由全行分摊),优先权顺序:

  1. <PREFIX>_CLIENT_ID 编号 : <PREFIX>_CLIENT_SECRET (env 覆盖,例如 CI)
  2. ~/.config/mcp-google-auth/client.json ——编著 set_client
  3. options.defaultClient ——已核实的A1客户端的内置槽

代码交换先运行 无 client_secret; 如果 Google 回答 "客户 机密缺失",它用这个秘密重复 当一个人在档案中, 否则失败 set_client 建议.

键 (每个服务器),优先排序 :

  1. <PREFIX>_REFRESH_TOKEN (+客户端)——以内存计价,从不写入磁盘; <PREFIX>_ACCESS_TOKEN 作为静态测试的替代品
  2. ~/.config/mcp-google-<serverName>/credentials.json ——编著 finish_login, (中文(简体) ), 每次通话都要重读 (会中登录不需要重启)

路径荣誉 $XDG_CONFIG_HOME; 在Windows上,基础是 %APPDATA% (概况) ACLs 取代 0600/0700模式, 重命名反病毒重试 EPERM) (中文(简体) ). 写作 是原子 (temp 文件 + 重命名);一个已损坏的文件读取为"没有连接".

刷新: 60 s 回旋余地, 同时刷新去复, 旋转 refresh_token 立即坚持下去.

安全变化剂(每个都由测试所支撑)

  • 没有工具输出或错误 access_token 编号 : refresh_token 编号 : client_secret 编号 : id_token (测试笔录上的sentinel grep).
  • PKCE核查员从不离开程序; state 精确比较 听者绑定 127.0.0.1 仅是一发,待登录者死亡 十分钟后 成功的一页是静止的——没有反射,没有外部的 资源.
  • 缺少证书 AuthRequiredError 在此之前 任何获取 信件名称start_login, env变量).
  • OAuth 失败映射到可采取行动的建议( E)redirect_uri_mismatch, (中文(简体) ), access_denied, (中文(简体) ), accessNotConfigured, (中文(简体) ), invalid_scope, (中文(简体) ), invalid_grant, (中文(简体) ), invalid_client, (中文(简体) ), admin_policy_enforced) (中文(简体) ).
  • 部分同意赠款被储存和报告,从未被拒绝;账户 更改取消旧的刷新符牌和上一个名称 账户.

发展

npm install
npm run typecheck   # types for src + tests
npm test            # node:test, no external network (loopback only)
npm run build       # emit dist/

@modelcontextprotocol/sdk 是一个 同伴依赖 ——主机服务器拥有 sDK 实例; 只 zod 作为运行时间的依赖.

许可证

麻省理工学院

版本与发布记录

@a1-x-tech/mcp-google-auth 共发布 3 个版本,首次发布于 2026/09/20;过去 12 个月发布了 3 个版本。

版本发布日期距今
0.1.2latest2026/11/052 天前
0.1.12026/11/016 天前
0.1.02026/09/201 个月前

关于 @a1-x-tech/mcp-google-auth 的常见问题

@a1-x-tech/mcp-google-auth 是什么?

Mcp-google- * MCP 服务器行的可再用 Google OAuth 登入: 聊天登录工具(loopback + PKCE)和每个请求的TokenProvider.

如何安装 @a1-x-tech/mcp-google-auth?

在项目目录运行 npm install @a1-x-tech/mcp-google-auth,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@modelcontextprotocol/sdk(^1.29.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@a1-x-tech/mcp-google-auth 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@a1-x-tech/mcp-google-auth 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@a1-x-tech/mcp-google-auth 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=20。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@a1-x-tech/mcp-google-auth 可以商用吗?

@a1-x-tech/mcp-google-auth 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@a1-x-tech/mcp-google-auth 的下载量有多少?

根据 npm 官方下载统计,@a1-x-tech/mcp-google-auth 在 2026/10/05 – 2026/11/03 这 30 天内被下载 2,580 次,日均约 86 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@a1-x-tech/mcp-google-auth 还在维护吗?

最新版本 0.1.2 发布于 2026/11/05(2 天前);至今共发布 3 个版本,其中过去 12 个月发布了 3 个;首次发布于 2026/09/20。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。