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]从上至下,体系可分为四层:
- 协议接入层:由
FastMCP提供 MCP 传输(stdio / streamable HTTP),并承载 OAuth 回调端点 资料来源:[core/server.py:21-39]。 - 核心控制层:
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]。 - 服务实现层:每个 Google 服务(gmail、drive、forms 等)通过
require_google_service装饰器注入对应的已认证服务对象,并注册到 MCP 服务器上 资料来源:[core/comments.py:15-25]。 - 基础设施层:包含统一的 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_enabled、is_read_only_mode、get_allowed_scopes_set共同决定当前用户可调用的工具集 资料来源:[core/tool_registry.py:12-25]。 - 权限模式(Permissions):
is_permissions_mode提供更细粒度的黑白名单。
conditional_tool 装饰器在导入时即判断该工具是否应被注册,从而避免运行时再进行分支判断 资料来源:[core/tool_registry.py:38-58]。
下表展示了常用层级的含义:
| 层级 | 含义 | 典型工具示例 |
|---|---|---|
| core | 启动时默认加载,覆盖高频场景 | send_message、create_doc、read_sheet_values |
| extended | 在 core 之上按需加载 | list_deployments、export_doc_to_pdf |
| complete | 全量工具集(含内部/实验性能力) | debug_table_structure、inspect_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 会保存用户凭据与会话状态,由 AuthInfoMiddleware 与 MCPSessionMiddleware 注入到后续请求中 资料来源:[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 复用项目自带的 FileTreeStore 与 FernetEncryptionWrapper,在 ~/.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-260disk:默认目录为${FASTMCP_HOME}/oauth-proxy或~/.fastmcp/oauth-proxy,通过make_sanitized_file_store创建。资料来源:core/server.py:200-260valkey:需要安装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-100WellKnownCacheControlMiddleware:为.well-known/*OAuth 发现端点附加Cache-Control: no-cache头,确保客户端始终拿到最新的元数据。资料来源:core/server.py:100-150origin_validation_middleware:通过 StarletteMiddleware包装,将上述检查挂入 streamable-http 传输栈。资料来源:core/server.py:50-100
工具注册与作用域过滤
core/tool_registry.py 在 is_tool_enabled() 之外实现了多重过滤:
- 显式启用集合:通过
set_enabled_tools()限定子集。资料来源:core/tool_registry.py:1-50 - OAuth 2.1 过滤:启用 2.1 后从可用集合中移除
start_google_auth。资料来源:core/tool_registry.py:50-100 - 只读模式过滤:通过
@require_google_service装饰器上的_required_google_scopes与get_all_read_only_scopes()取交集,剔除任何依赖写入作用域的工具。资料来源:core/tool_registry.py:50-100 - 细粒度权限模式:调用
get_allowed_scopes_set(),仅保留工具所需作用域完全落在允许集合内的工具,避免层级展开(如gmail.modify不会自动覆盖gmail.send的策略)。资料来源:core/tool_registry.py:50-100
工具层级(core / extended / complete)由 core/tool_tier_loader.py 中的 ToolTierLoader 从 core/tool_tiers.yaml 加载,结合 --tools CLI 参数与 Helm Chart 的 tools.enabled 列表生效。资料来源:core/tool_tier_loader.py:1-50
部署与配置参考
Helm Chart 暴露了与 OAuth 相关的常用键值:
| 键 | 用途 | 默认值 |
|---|---|---|
secrets.googleOAuth.clientId | Google OAuth Client ID | "" |
secrets.googleOAuth.clientSecret | Google 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.projects、script.deployments、script.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 模式下通过 FastMCP 的 GoogleProvider 完成 Google 账户身份注入 资料来源:[core/server.py]。单用户模式(USER_GOOGLE_EMAIL 环境变量)下,服务器会自动将 user_google_email 参数注入到工具调用上下文,避免上层 Agent 重复传入 资料来源:[core/server.py]。
| 服务域 | 典型工具示例 | 工具定义文件 |
|---|---|---|
| Gmail | search_gmail_messages、send_gmail_message | gmail/gmail_tools.py(社区上下文引用) |
| Calendar | create_calendar、query_freebusy、manage_out_of_office | gcalendar/calendar_tools.py(社区上下文引用) |
| Drive / Docs / Sheets / Slides | get_doc_content、read_sheet_values、list_docs_in_folder | gdrive/、gdocs/、gsheets/、gslides/(社区上下文引用) |
| Apps Script | get_script_project、run_script_function、manage_deployment | gappsscript/README.md 内列举 |
| Chat / Forms / Tasks | send_message、create_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 集群三种...
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
本指南系统介绍 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.clientId | OAuth 客户端 ID | ""(必填) |
secrets.googleOAuth.clientSecret | OAuth 客户端密钥 | ""(必填) |
资料来源: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(),便于本地与集群行为一致。GoogleProvider 与 set_auth_provider 用于将 OAuth 2.1 会话存储挂接到 FastMCP 鉴权链路 资料来源:core/server.py:35-44。
运维与监控
日志格式化
core/log_formatter.py 提供 EnhancedLogFormatter 与 SuppressStatlessTransportTerminationFilter,分别用于彩色日志输出与抑制 mcp.server.streamable_http 中 Terminating 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_service 与 project_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 在发现、验证和编译中沉淀的项目专属风险,不把社区讨论只当作装饰信息。
可能影响升级、迁移或版本选择。
可能阻塞安装或首次运行。
用户照着仓库名搜索包或照着包名找仓库时容易走错入口。
可能增加新用户试用和生产接入成本。
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_fullandscript_fullcause permanent auth-failure ondelete_script_projectandcreate_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 发现、验证与编译记录