Doramagic 项目包 · 项目说明书

google_workspace_mcp 项目

google_workspace_mcp 是一个面向「工具连接与集成」的开源项目,重点覆盖 MCP 工具、知识库问答;Doramagic 已整理安装入口、说明书、上下文包和风险边界,方便先判断再试用。

项目概览与系统架构

googleworkspacemcp 是一个基于 Model Context Protocol (MCP) 的服务器项目,旨在让 AI 智能体(例如 Claude Desktop)能够以工具调用(tool call)的形式操作 Google Workspace 套件。系统通过统一的 FastMCP 服务器暴露 Gmail、Calendar、Drive、Docs、Sheets...

章节 相关页面

继续阅读本节完整说明和来源证据。

项目简介与定位

google_workspace_mcp 是一个基于 Model Context Protocol (MCP) 的服务器项目,旨在让 AI 智能体(例如 Claude Desktop)能够以工具调用(tool call)的形式操作 Google Workspace 套件。系统通过统一的 FastMCP 服务器暴露 Gmail、Calendar、Drive、Docs、Sheets、Slides、Forms、Chat、Tasks 以及 Apps Script 等多个服务下的具体工具,覆盖企业级自动化场景 资料来源:[gappsscript/README.md:1-15]。

项目的核心目标可以归纳为三点:

  • 跨应用编排:通过 Apps Script 等复合入口,把多个 Workspace 服务串联成完整工作流。
  • 自然语言驱动:让 AI 代理依据自然语言指令读取、修改和创建文档、电子表格、邮件等。
  • 可分级的工具集:根据使用者的授权范围动态启用或裁剪工具集合,避免暴露未授权能力。

系统整体架构

服务器在启动时会构造一个 FastMCP 实例,并通过若干中间件和依赖组件完成 OAuth 2.1 鉴权、会话管理、工具注册与日志格式化等任务 资料来源:[core/server.py:1-39]。整体架构如下:

flowchart TD
    A[AI 客户端<br/>例如 Claude Desktop] -->|MCP 协议| B[FastMCP 服务器<br/>core/server.py]
    B --> C[工具注册表<br/>core/tool_registry.py]
    C --> D{工具层级<br/>tool_tiers.yaml}
    B --> E[鉴权中间件<br/>AuthInfo / MCPSession]
    E --> F[OAuth 2.1 会话<br/>auth/oauth21_session_store]
    B --> G[服务模块<br/>gmail/calendar/drive/...]
    G --> H[Google API 客户端]
    H --> I[Google Workspace]
    B --> J[增强日志<br/>core/log_formatter.py]

从上至下,体系可分为四层:

  1. 协议接入层:由 FastMCP 提供 MCP 传输(stdio / streamable HTTP),并承载 OAuth 回调端点 资料来源:[core/server.py:21-39]。
  2. 核心控制层core/tool_registry.py 中的 conditional_tool 装饰器根据启用的工具集合决定是否注册;core/tool_tier_loader.py 负责从 YAML 解析层级配置 资料来源:[core/tool_registry.py:38-58] 资料来源:[core/tool_tier_loader.py:14-37]。
  3. 服务实现层:每个 Google 服务(gmail、drive、forms 等)通过 require_google_service 装饰器注入对应的已认证服务对象,并注册到 MCP 服务器上 资料来源:[core/comments.py:15-25]。
  4. 基础设施层:包含统一的 HTTP 错误处理、PDF/Office 文本提取、Base64 图像编码等通用工具 资料来源:[core/utils.py:96-180]。

工具层级与注册机制

工具是否被注册到 MCP 服务器,取决于三个维度的状态:

  • 层级(Tier)core/tool_tiers.yaml 把每个服务下的工具划分为 core / extended / complete 三级;解析时只加载到指定层级为止 资料来源:[core/tool_tiers.yaml:1-60] 资料来源:[core/tool_tier_loader.py:78-110]。
  • 作用域(Scope)is_oauth21_enabledis_read_only_modeget_allowed_scopes_set 共同决定当前用户可调用的工具集 资料来源:[core/tool_registry.py:12-25]。
  • 权限模式(Permissions)is_permissions_mode 提供更细粒度的黑白名单。

conditional_tool 装饰器在导入时即判断该工具是否应被注册,从而避免运行时再进行分支判断 资料来源:[core/tool_registry.py:38-58]。

下表展示了常用层级的含义:

层级含义典型工具示例
core启动时默认加载,覆盖高频场景send_messagecreate_docread_sheet_values
extended在 core 之上按需加载list_deploymentsexport_doc_to_pdf
complete全量工具集(含内部/实验性能力)debug_table_structureinspect_doc_structure

鉴权与会话管理

服务器同时支持传统的 OAuth 2.0 桌面流程与新的 FastMCP 2.12.0 GoogleProvider 原生代理,社区正在跟进 #190 议题以替换自研的 OAuth 代理逻辑 资料来源:[core/server.py:21-39] 资料来源:[gappsscript/README.md:107-145]。鉴权成功后,oauth21_session_store 会保存用户凭据与会话状态,由 AuthInfoMiddlewareMCPSessionMiddleware 注入到后续请求中 资料来源:[core/server.py:22-25]。

需要注意的失败模式:

  • 孤儿进程占用回调端口:当宿主应用重启时,前一次 python main.py 可能未退出,继续占用硬编码的 OAuth 回调端口,导致后续鉴权返回 invalid state 错误(社区议题 #667)。
  • API 未启用core/api_enablement.py 会解析 HttpError 详情并生成带控制台启用链接的友好提示 资料来源:[core/api_enablement.py:8-42]。

运行模式与日志

core/config.py 中的 get_transport_mode 决定运行在 stdio 还是可流式 HTTP 模式,影响 OAuth 重定向 URI 与回调端口。EnhancedLogFormatter 会在 INFO 级别日志上添加颜色与图标,并通过 SuppressStatelessTransportTerminationFilter 屏蔽无状态传输结束时的冗余记录 资料来源:[core/log_formatter.py:12-30] 资料来源:[core/log_formatter.py:54-92]。

已知问题与社区反馈

  • #190 升级原生 OAuth 代理:在 FastMCP 2.12.0 引入 GoogleProvider 后,将逐步下线自研的 OAuth 中转代码。
  • #69 增加 Google Tasks 支持:呼声较高的扩展能力,目前尚未合并。
  • #667 孤儿进程冲突:需在宿主端增加进程回收或动态端口策略。

See Also

  • 工具层级与权限控制
  • OAuth 鉴权与多用户会话
  • 服务模块清单
  • 部署与运行模式

来源:https://github.com/taylorwilsdon/google_workspace_mcp / 项目说明书

OAuth 2.0/2.1 认证与安全机制

Google Workspace MCP 服务器同时支持 OAuth 2.0(传统本地回环流程) 与 OAuth 2.1(基于 FastMCP GoogleProvider 的现代授权协议) 两种认证形态。认证层是所有 Google 服务工具(Gmail、Drive、Calendar、Sheets、Apps Script 等)调用 Google API 之前必须经过的关卡,...

章节 相关页面

继续阅读本节完整说明和来源证据。

概述与作用范围

Google Workspace MCP 服务器同时支持 OAuth 2.0(传统本地回环流程)OAuth 2.1(基于 FastMCP GoogleProvider 的现代授权协议) 两种认证形态。认证层是所有 Google 服务工具(Gmail、Drive、Calendar、Sheets、Apps Script 等)调用 Google API 之前必须经过的关卡,它负责颁发与缓存用户凭证、注入请求级上下文,以及在 HTTP 传输下强制执行 Origin 校验与发现端点缓存策略。社区提案 #190("Implement FastMCP 2.12.0 Native OAuth Proxy & GoogleProvider")正是围绕让服务器原生适配 FastMCP 上游 OAuth 代理而展开,说明 OAuth 是该项目的核心集成点。

资料来源:core/server.py:1-50,core/config.py:1-30

协议模式与切换

服务器通过环境变量 MCP_ENABLE_OAUTH21 决定使用哪一种协议。当 OAuth 2.1 启用时,传统的 start_google_auth 工具会被自动禁用,工具注册表会调用 is_oauth21_enabled() 判断后再决定是否保留该工具。资料来源:core/tool_registry.py:1-50

模式入口凭证来源适用场景
OAuth 2.0(legacy)start_google_auth 工具本地回环回调 + client_secret.json单机、CLI、Helm 单用户模式
OAuth 2.1 标准FastMCP GoogleProvider浏览器跳转 + DCR 动态注册MCP 客户端 + streamable-http
OAuth 2.1 外部ExternalOAuthProvider调用方在 Authorization 头中传入 ya29.* Bearer Token已持有 Google 访问令牌的网关/代理

core/server.py 中通过 is_external_oauth21_provider() 区分外部模式与标准模式,外部模式下受保护资源元数据会指向 Google 自身的授权服务器,服务器仅校验调用方传递的 Bearer Token 是否合法。资料来源:core/server.py:100-200

flowchart LR
    A[MCP 客户端] -->|请求工具调用| B[Workspace MCP]
    B -->|缺少凭证| C{OAuth 模式}
    C -->|2.0| D[本地回环 + start_google_auth]
    C -->|2.1 标准| E[GoogleProvider + DCR]
    C -->|2.1 外部| F[校验 Authorization 头]
    D --> G[Google API]
    E --> G
    F --> G

凭证注入与会话上下文

core/context.py 定义了两个 contextvars_injected_oauth_credentials_fastmcp_session_id,分别用于在单次请求生命周期内传递 OAuth 凭证与会话 ID。请求开始时由服务装饰器写入,业务层通过 get_injected_oauth_credentials() 取出,使凭证不会泄漏到其他并发请求。资料来源:core/context.py:1-30

CLI 客户端 core/cli.py 复用项目自带的 FileTreeStoreFernetEncryptionWrapper,在 ~/.workspace-mcp/cli-tokens 目录下缓存访问令牌,并将 Fernet 密钥文件权限收紧为 0o600,避免每次执行 workspace-cli list/call 都重新走完整浏览器 OAuth 流程。资料来源:core/cli.py:1-60

存储后端与密钥派生

OAuth 2.1 流程中,服务器为 FastMCP OAuth 代理维护 client_storage,根据 WORKSPACE_MCP_OAUTH_PROXY_STORAGE_BACKEND 选择后端:

  • memory:进程内 MemoryStore,无持久化。资料来源:core/server.py:200-260
  • disk:默认目录为 ${FASTMCP_HOME}/oauth-proxy~/.fastmcp/oauth-proxy,通过 make_sanitized_file_store 创建。资料来源:core/server.py:200-260
  • valkey:需要安装 workspace-mcp[valkey] 额外依赖;连接通过 FernetEncryptionWrapper 加密。资料来源:core/server.py:260-340

JWT 签名密钥由 validate_and_derive_jwt_key 派生:若设置了 FASTMCP_SERVER_AUTH_GOOGLE_JWT_SIGNING_KEY 则使用该值(不少于 12 字符),否则回退到 GOOGLE_OAUTH_CLIENT_SECRET。派生出的密钥再经过 derive_jwt_key(... salt="fastmcp-storage-encryption-key") 得到 Fernet 加密密钥,用于保护上述任何后端中存储的客户端资料。资料来源:core/server.py:120-200

HTTP 安全中间件

core/server.py 暴露了若干 ASGI 中间件:

  • OriginValidationMiddleware:解析 Origin 头,与 _get_allowed_http_origins() 返回的集合进行比对,环回地址(loopback)始终放行;非白名单来源直接返回 403。该函数从 auth.oauth_config 读取 get_allowed_origins()external_url,并做归一化处理。资料来源:core/server.py:1-100
  • WellKnownCacheControlMiddleware:为 .well-known/* OAuth 发现端点附加 Cache-Control: no-cache 头,确保客户端始终拿到最新的元数据。资料来源:core/server.py:100-150
  • origin_validation_middleware:通过 Starlette Middleware 包装,将上述检查挂入 streamable-http 传输栈。资料来源:core/server.py:50-100

工具注册与作用域过滤

core/tool_registry.pyis_tool_enabled() 之外实现了多重过滤:

  1. 显式启用集合:通过 set_enabled_tools() 限定子集。资料来源:core/tool_registry.py:1-50
  2. OAuth 2.1 过滤:启用 2.1 后从可用集合中移除 start_google_auth。资料来源:core/tool_registry.py:50-100
  3. 只读模式过滤:通过 @require_google_service 装饰器上的 _required_google_scopesget_all_read_only_scopes() 取交集,剔除任何依赖写入作用域的工具。资料来源:core/tool_registry.py:50-100
  4. 细粒度权限模式:调用 get_allowed_scopes_set(),仅保留工具所需作用域完全落在允许集合内的工具,避免层级展开(如 gmail.modify 不会自动覆盖 gmail.send 的策略)。资料来源:core/tool_registry.py:50-100

工具层级(core / extended / complete)由 core/tool_tier_loader.py 中的 ToolTierLoadercore/tool_tiers.yaml 加载,结合 --tools CLI 参数与 Helm Chart 的 tools.enabled 列表生效。资料来源:core/tool_tier_loader.py:1-50

部署与配置参考

Helm Chart 暴露了与 OAuth 相关的常用键值:

用途默认值
secrets.googleOAuth.clientIdGoogle OAuth Client ID""
secrets.googleOAuth.clientSecretGoogle OAuth Client Secret""
secrets.googleOAuth.userEmail单用户模式下的默认邮箱""
env.MCP_ENABLE_OAUTH21是否启用 OAuth 2.1"true"
singleUserMode单用户传统模式false

资料来源:helm-chart/workspace-mcp/README.md:1-50

回环 URI 必须配置为 http://your-domain:8000/oauth2callback,且 Helm Chart 明确指出单用户模式与 OAuth 2.1 不兼容,在 Kubernetes 部署中推荐使用默认 OAuth 2.1 模式。资料来源:helm-chart/workspace-mcp/README.md:1-50

常见故障与社区反馈

Issue #667 报告了"Orphaned python instance holds port 8000, causing OAuth 'invalid state'":当客户端(如 Claude Desktop)重启或崩溃恢复时,旧 python main.py 进程可能仍在占用 8000 端口,导致 OAuth 回环回调被劫持、状态校验失败。规避方式包括:

  • 在重启前显式 pkill -f "python main.py"
  • 通过环境变量 WORKSPACE_MCP_PORT 调整端口并让 auth.port_resolver.resolve_port 重新解析(core/config.py 通过 PEP 562 __getattr__ 懒解析端口,保证读到的是最新值)。资料来源:core/config.py:1-30
  • 部署到 Kubernetes,由 Service/Ingress 统一管理端口生命周期。资料来源:helm-chart/workspace-mcp/README.md:1-50

Apps Script 子模块要求额外的脚本项目与部署作用域(script.projectsscript.deploymentsscript.processes 等),这些作用域会随所选工具层级(appscript)自动添加到授权请求中;若脚本被设计为跨服务访问(如读取 Sheets、发送 Gmail),还需在 OAuth 同意屏幕中额外授予对应服务的作用域。资料来源:gappsscript/README.md:1-80

参见

  • 工具注册与作用域过滤
  • Helm Chart 部署指南
  • Google Apps Script 工具集

资料来源:core/server.py:1-50,core/config.py:1-30

Google Workspace 服务、工具集与 CLI

googleworkspacemcp 是一个基于 FastMCP 的 Model Context Protocol(MCP)服务器,为 AI Agent 提供对 Google Workspace 全家桶的"工具化"访问能力。项目的核心目标是把 Gmail、Calendar、Drive、Docs、Sheets、Slides、Forms、Tasks、Chat 等 Google ...

章节 相关页面

继续阅读本节完整说明和来源证据。

一、项目定位与覆盖范围

google_workspace_mcp 是一个基于 FastMCP 的 Model Context Protocol(MCP)服务器,为 AI Agent 提供对 Google Workspace 全家桶的"工具化"访问能力。项目的核心目标是把 Gmail、Calendar、Drive、Docs、Sheets、Slides、Forms、Tasks、Chat 等 Google 服务以及 Apps Script 自动化,统一封装成可由 LLM 调用的 MCP 工具,并附带 CLI 启动方式与 Kubernetes 部署形态。

服务器入口在 core/server.py 中构建,使用 SecureFastMCP(name="google_workspace", ...) 初始化 MCP 实例,并在 OAuth 2.1 模式下通过 FastMCPGoogleProvider 完成 Google 账户身份注入 资料来源:[core/server.py]。单用户模式(USER_GOOGLE_EMAIL 环境变量)下,服务器会自动将 user_google_email 参数注入到工具调用上下文,避免上层 Agent 重复传入 资料来源:[core/server.py]。

服务域典型工具示例工具定义文件
Gmailsearch_gmail_messagessend_gmail_messagegmail/gmail_tools.py(社区上下文引用)
Calendarcreate_calendarquery_freebusymanage_out_of_officegcalendar/calendar_tools.py(社区上下文引用)
Drive / Docs / Sheets / Slidesget_doc_contentread_sheet_valueslist_docs_in_foldergdrive/gdocs/gsheets/gslides/(社区上下文引用)
Apps Scriptget_script_projectrun_script_functionmanage_deploymentgappsscript/README.md 内列举
Chat / Forms / Taskssend_messagecreate_form、Tasks 系列gchat/gforms/gtasks/(社区上下文引用)
社区反馈:Tasks 是用户呼声较高的扩展方向,issue #69 中多位用户希望 AI 能直接创建 / 列出 / 完成任务,目前 Tasks 模块在 core/tool_tiers.yaml 的工具分级体系外仍持续被讨论。

来源:https://github.com/taylorwilsdon/google_workspace_mcp / 项目说明书

部署、运维与扩展指南

本指南系统介绍 googleworkspacemcp 项目的部署形态、运维要点与扩展机制。项目以 FastMCP 2.x 为核心,通过工具分层(Tier)系统按需暴露 Google Workspace 各服务(Calendar、Docs、Sheets、Chat、Forms、Apps Script 等)的 MCP 工具,并支持本地运行、容器化与 Kubernetes 集群三种...

章节 相关页面

继续阅读本节完整说明和来源证据。

章节 Helm Chart 部署

继续阅读本节完整说明和来源证据。

章节 本地与容器化运行

继续阅读本节完整说明和来源证据。

章节 日志格式化

继续阅读本节完整说明和来源证据。

本指南系统介绍 google_workspace_mcp 项目的部署形态、运维要点与扩展机制。项目以 FastMCP 2.x 为核心,通过工具分层(Tier)系统按需暴露 Google Workspace 各服务(Calendar、Docs、Sheets、Chat、Forms、Apps Script 等)的 MCP 工具,并支持本地运行、容器化与 Kubernetes 集群三种部署场景。

部署方式

Helm Chart 部署

官方提供了 Helm Chart 用于在 Kubernetes 集群中部署。Chart 的先决条件包括 Kubernetes 1.19+、Helm 3.2.0+、启用了相关 API 的 Google Cloud 项目以及 OAuth 2.0 凭据 资料来源:helm-chart/workspace-mcp/README.md:5-10。

安装命令示例:

helm install workspace-mcp ./helm-chart/workspace-mcp \
  --set secrets.googleOAuth.clientId="your-client-id.apps.googleusercontent.com" \
  --set secrets.googleOAuth.clientSecret="your-client-secret"

资料来源:helm-chart/workspace-mcp/README.md:13-19。

参数描述默认值
replicaCount副本数1
image.repository镜像仓库workspace-mcp
image.pullPolicy拉取策略IfNotPresent
secrets.googleOAuth.clientIdOAuth 客户端 ID""(必填)
secrets.googleOAuth.clientSecretOAuth 客户端密钥""(必填)

资料来源:helm-chart/workspace-mcp/README.md:21-31。

本地与容器化运行

core/server.py 在启动时强制先安装启动期警告过滤器,再加载 FastMCP 与 Authlib 依赖,并按传输模式(stdio / streamable-http)构建应用 资料来源:core/server.py:1-15。Helm Chart 与本地部署共用同一份传输模式配置 get_transport_mode(),便于本地与集群行为一致。GoogleProviderset_auth_provider 用于将 OAuth 2.1 会话存储挂接到 FastMCP 鉴权链路 资料来源:core/server.py:35-44。

运维与监控

日志格式化

core/log_formatter.py 提供 EnhancedLogFormatterSuppressStatlessTransportTerminationFilter,分别用于彩色日志输出与抑制 mcp.server.streamable_httpTerminating session: None 的噪声日志 资料来源:core/log_formatter.py:25-39。日志等级颜色映射包括 DEBUG(青)、INFO(绿)、WARNING(黄)、ERROR(红)、CRITICAL(品红) 资料来源:core/log_formatter.py:48-55。

工具加载阶段会输出格式化的层级摘要,例如 Tool tier 'core' loaded: 12 tools across 4 services [...] 资料来源:core/log_formatter.py:60-75。

OAuth 回调与端口冲突

社区报告(Issue #667)显示,当 Claude Desktop 重新加载扩展时,旧 python main.py 进程有时不会被回收,仍占用硬编码的 OAuth 回调端口(如 8000),导致后续授权出现 invalid state 错误 资料来源:community issue #667。建议在重启前显式终止旧进程,或将回调端口改为可配置项,并在部署脚本中加入进程清理或端口复用检测。

API 启用错误处理

core/api_enablement.py 通过正则从 Google API 的 HttpError 中提取 api_serviceproject_id,并生成带启用控制台链接的友好提示 资料来源:core/api_enablement.py:1-25。当底层 API 尚未启用时,运维人员可直接根据日志中的链接一键跳转至 Google Cloud Console 完成启用。

扩展工具集

工具分层机制

core/tool_tiers.yaml 集中声明了每个 Google 服务在 core / extended / complete 三个层级的工具白名单,例如 docs 服务在 core 暴露 3 个工具,在 extended 暴露 9 个,在 complete 暴露 7 个 资料来源:core/tool_tiers.yaml:23-44。core/tool_tier_loader.py 中的 ToolTierLoader 负责加载该 YAML 并按层级解析工具与所属服务,resolve_tools_from_tier 返回 (tools, service_names) 元组 资料来源:core/tool_tier_loader.py:25-65。

条件注册

core/tool_registry.py 通过 conditional_tool 装饰器与全局 _enabled_tools 集合实现按层级开关工具 资料来源:core/tool_registry.py:25-50。当工具被禁用时,仅记录 debug 日志而不注册到 FastMCP 服务器,从而避免污染客户端的工具清单。

添加新服务

新增一个 Workspace 服务时,应在 tool_tiers.yaml 的对应层级追加工具名,并实现与 gappsscript/README.md 类似的 MCP 模块入口 资料来源:gappsscript/README.md:1-15。社区中呼声较高的 Google Tasks(Issue #69)尚待补齐,实现时可参考已有的 Chat 模块在 chat.core 中仅暴露 4 个核心工具的写法 资料来源:core/tool_tiers.yaml:51-58。

社区关注与路线

  • Issue #190:随着 FastMCP 2.12.0 发布原生 GoogleProvider 与 OAuth Proxy,项目可逐步替换早期自实现的 OAuth 逻辑,简化部署 资料来源:community issue #190。
  • Issue #69:用户希望引入 Google Tasks 服务,使 AI 能创建、列出并勾选待办 资料来源:community issue #69。
  • Issue #667:孤儿进程占用回调端口问题,提示需在部署脚本中加入进程清理或端口复用检测 资料来源:community issue #667。

See Also

  • Google Workspace MCP 总体架构
  • OAuth 2.1 认证流程
  • 工具分层与权限模型

资料来源:helm-chart/workspace-mcp/README.md:13-19。

失败模式与踩坑日记

保留 Doramagic 在发现、验证和编译中沉淀的项目专属风险,不把社区讨论只当作装饰信息。

high 来源证据:Add content replacement support to `update_drive_file` (re-import with format conversion)

可能影响升级、迁移或版本选择。

high 来源证据:Windows: workspace-mcp Python child survives ungraceful parent termination, leaks OAuth callback port (8000-8004 exhaus…

可能阻塞安装或首次运行。

medium 仓库名和安装名不一致

用户照着仓库名搜索包或照着包名找仓库时容易走错入口。

medium 来源证据:run_script_function broken after FastMCP v3 upgrade — parameters list received as JSON string

可能增加新用户试用和生产接入成本。

Pitfall Log / 踩坑日志

项目:taylorwilsdon/google_workspace_mcp

摘要:发现 14 个潜在踩坑项,其中 2 个为 high/blocking;最高优先级:安全/权限坑 - 来源证据:Add content replacement support to update_drive_file (re-import with format conversion)。

1. 安全/权限坑 · 来源证据:Add content replacement support to `update_drive_file` (re-import with format conversion)

  • 严重度:high
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:Add content replacement support to update_drive_file (re-import with format conversion)
  • 对用户的影响:可能影响升级、迁移或版本选择。
  • 证据:community_evidence:github | https://github.com/taylorwilsdon/google_workspace_mcp/issues/604 | 来源类型 github_issue 暴露的待验证使用条件。

2. 安全/权限坑 · 来源证据:Windows: workspace-mcp Python child survives ungraceful parent termination, leaks OAuth callback port (8000-8004 exhaus…

  • 严重度:high
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:Windows: workspace-mcp Python child survives ungraceful parent termination, leaks OAuth callback port (8000-8004 exhausted after 5 crashes)
  • 对用户的影响:可能阻塞安装或首次运行。
  • 证据:community_evidence:github | https://github.com/taylorwilsdon/google_workspace_mcp/issues/816 | 来源讨论提到 python 相关条件,需在安装/试用前复核。

3. 身份坑 · 仓库名和安装名不一致

  • 严重度:medium
  • 证据强度:runtime_trace
  • 发现:仓库名 google_workspace_mcp 与安装入口 workspace-mcp 不完全一致。
  • 对用户的影响:用户照着仓库名搜索包或照着包名找仓库时容易走错入口。
  • 复现命令:uvx workspace-mcp
  • 证据:identity.distribution | github_repo:973788136 | https://github.com/taylorwilsdon/google_workspace_mcp | repo=google_workspace_mcp; install=workspace-mcp

4. 配置坑 · 来源证据:run_script_function broken after FastMCP v3 upgrade — parameters list received as JSON string

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个配置相关的待验证问题:run_script_function broken after FastMCP v3 upgrade — parameters list received as JSON string
  • 对用户的影响:可能增加新用户试用和生产接入成本。
  • 证据:community_evidence:github | https://github.com/taylorwilsdon/google_workspace_mcp/issues/712 | 来源讨论提到 python 相关条件,需在安装/试用前复核。

5. 能力坑 · 能力判断依赖假设

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:README/documentation is current enough for a first validation pass.
  • 对用户的影响:假设不成立时,用户拿不到承诺的能力。
  • 证据:capability.assumptions | github_repo:973788136 | https://github.com/taylorwilsdon/google_workspace_mcp | README/documentation is current enough for a first validation pass.

6. 维护坑 · 来源证据:feat(drive): Office→Google conversion on upload (pptx→Slides, xlsx→Sheets) — target mimeType ≠ media mimeType

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个维护/版本相关的待验证问题:feat(drive): Office→Google conversion on upload (pptx→Slides, xlsx→Sheets) — target mimeType ≠ media mimeType
  • 对用户的影响:可能增加新用户试用和生产接入成本。
  • 证据:community_evidence:github | https://github.com/taylorwilsdon/google_workspace_mcp/issues/820 | 来源类型 github_issue 暴露的待验证使用条件。

7. 维护坑 · 维护活跃度未知

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:未记录 last_activity_observed。
  • 对用户的影响:新项目、停更项目和活跃项目会被混在一起,推荐信任度下降。
  • 证据:evidence.maintainer_signals | github_repo:973788136 | https://github.com/taylorwilsdon/google_workspace_mcp | last_activity_observed missing
  • 严重度:medium
  • 证据强度:source_linked
  • 发现:no_demo
  • 证据:downstream_validation.risk_items | github_repo:973788136 | https://github.com/taylorwilsdon/google_workspace_mcp | no_demo; severity=medium

9. 安全/权限坑 · 存在评分风险

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:no_demo
  • 对用户的影响:风险会影响是否适合普通用户安装。
  • 证据:risks.scoring_risks | github_repo:973788136 | https://github.com/taylorwilsdon/google_workspace_mcp | no_demo; severity=medium

10. 安全/权限坑 · 来源证据:Add unit tests for gtasks/tasks_tools.py

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:Add unit tests for gtasks/tasks_tools.py
  • 对用户的影响:可能影响授权、密钥配置或安全边界。
  • 证据:community_evidence:github | https://github.com/taylorwilsdon/google_workspace_mcp/issues/827 | 来源讨论提到 python 相关条件,需在安装/试用前复核。

11. 安全/权限坑 · 来源证据:Re-auth loop: OAuth callback stores credentials under `google-<state>` session, never bound to the live MCP session — e…

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:Re-auth loop: OAuth callback stores credentials under google-<state> session, never bound to the live MCP session — every tool call after re-auth re-prompts
  • 对用户的影响:可能影响授权、密钥配置或安全边界。
  • 证据:community_evidence:github | https://github.com/taylorwilsdon/google_workspace_mcp/issues/810 | 来源讨论提到 python 相关条件,需在安装/试用前复核。

12. 安全/权限坑 · 来源证据:Unregistered scope aliases `drive_full` and `script_full` cause permanent auth-failure on `delete_script_project` and `…

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:Unregistered scope aliases drive_full and script_full cause permanent auth-failure on delete_script_project and create_version
  • 对用户的影响:可能影响授权、密钥配置或安全边界。
  • 证据:community_evidence:github | https://github.com/taylorwilsdon/google_workspace_mcp/issues/809 | 来源讨论提到 python 相关条件,需在安装/试用前复核。

13. 维护坑 · issue/PR 响应质量未知

  • 严重度:low
  • 证据强度:source_linked
  • 发现:issue_or_pr_quality=unknown。
  • 对用户的影响:用户无法判断遇到问题后是否有人维护。
  • 证据:evidence.maintainer_signals | github_repo:973788136 | https://github.com/taylorwilsdon/google_workspace_mcp | issue_or_pr_quality=unknown

14. 维护坑 · 发布节奏不明确

  • 严重度:low
  • 证据强度:source_linked
  • 发现:release_recency=unknown。
  • 对用户的影响:安装命令和文档可能落后于代码,用户踩坑概率升高。
  • 证据:evidence.maintainer_signals | github_repo:973788136 | https://github.com/taylorwilsdon/google_workspace_mcp | release_recency=unknown

来源:Doramagic 发现、验证与编译记录