小贴士:按下Ctrl+D 或 ⌘+D,一键收藏本站,方便下次快速访问!
MIT License
41
最近更新:2个月前

一个提供对 Google Workspace API 身份验证访问的模型上下文协议 (MCP) 服务器,提供集成的身份验证、Gmail、日历和驱动器功能。

Google Workspace MCP 服务器

机器人助手

这个模型上下文协议 (MCP) 服务器让你掌控你的 Google Workspace。一旦连接你的账户——一个简单且安全的过程,只需一分钟即可完成——你就可以开始使用了。在幕后,它会保持你的连接安全和活跃,这样你就可以专注于完成工作,而不是管理登录和权限。

你可以以从未想过的方式掌控你的 Gmail 收件箱。想找到上个季度的提案吗?几秒钟内就能找到。被新闻通讯淹没了吗?它们会自动分类到文件夹中。需要跟踪重要线程的回复吗?标签和过滤器会为你完成这项工作。从起草完美的电子邮件到管理与团队的对话,一切都井然有序。通过流线型的附件处理,你可以轻松查找和管理电子邮件附件,同时系统会在后台处理所有复杂的元数据。

你的日历将成为日常事务中的可靠盟友。不再有重复预订的会议或时区混淆。计划团队同步吗?它会发现最佳的时间段。举办定期研讨会吗?设置一次即可,一劳永逸。即使计划发生变化,也能快速而无痛地找到适合每个人的新时间。那些无穷无尽的“你什么时候有空?”邮件时代已经结束了。

将 Google Drive 从文件存储变成你的数字指挥中心。每个文档都能找到自己的位置,每个文件夹都讲述着一个故事。与正确的人员共享文件——不再有“谁能编辑这个?”的困惑。寻找上周会议的演示文稿吗?不仅搜索文件名,还可以搜索文件内容。无论是组织一个小项目还是管理大量的文档,一切都保持在你需要的地方。

简短安装指南

注意:对于像 Cline 这样的 AI 助手,请参阅 llms-install.md 获取专门的安装指导。

  1. 创建 Google Cloud 项目:

    bash 复制代码
    # 前往 Google Cloud 控制台
    https://console.cloud.google.com
    → 创建项目
    → 启用 Gmail API 和 Calendar API
    → 配置 OAuth 同意屏幕(外部)
    → 创建 OAuth 桌面客户端 ID 和密钥
  2. 添加到 Cline 设置中(例如,~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json):

    json 复制代码
    {
      "mcpServers": {
        "google-workspace-mcp": {
          "command": "docker",
          "args": [
            "run",
            "--rm",
            "-i",
            "-v", "/home/aaron/.mcp/google-workspace-mcp:/app/config",
            "-v", "/home/aaron/Documents/workspace-mcp-files:/app/workspace",
            "-e", "GOOGLE_CLIENT_ID",
            "-e", "GOOGLE_CLIENT_SECRET",
            "-e", "LOG_MODE=strict",
            "ghcr.io/aaronsb/google-workspace-mcp:latest"
          ],
          "env": {
            "GOOGLE_CLIENT_ID": "123456789012-abcdef3gh1jklmn2pqrs4uvw5xyz6789.apps.googleusercontent.com",
            "GOOGLE_CLIENT_SECRET": "GOCSPX-abcdefghijklmnopqrstuvwxyz1234"
          },
          "autoApprove": [],
          "disabled": false
        }
      }
    }

    日志模式:

    • normal(默认值):根据每个日志级别使用适当的控制台方法。
    • strict:将所有非 JSON-RPC 消息路由到 stderr(推荐用于 Claude 桌面)。
  3. 重启 Cline/Claude

  4. 只需让 AI 提示“添加我的 Google 账户”,它将通过对话引导你完成认证过程。

有关更多信息,请参见 详细设置指南

必备条件

在使用此 MCP 服务器之前,您必须设置自己的 Google Cloud 项目并启用 Google Workspace API:

  1. Google Cloud 控制台 中创建新项目。
  2. 启用所需的 API:
    • Gmail API
    • Google Calendar API
    • Google Drive API
  3. 配置 OAuth 同意屏幕:
    • 设置为“外部”
    • 将自己添加为测试用户
    • 添加 Gmail、日历和驱动器所需的范围
  4. 创建 OAuth 2.0 凭据:
    • 选择“桌面应用”类型
    • 记下您的客户端 ID 和客户端密钥
    • 使用“urn:ietf:wg:oauth:2.0:oob”作为重定向 URI(这启用了外带认证)

MCP 服务器需要以下内容:

  1. 上述步骤中的 Google OAuth 客户端 ID 和密钥
  2. 本地目录路径以存储配置(推荐:~/.mcp/google-workspace-mcp

注意:该服务器使用外带 (OOB) 认证流程,这意味着在为每个帐户进行初始设置时,您需要手动复制粘贴授权码。

与 Cline 结合使用

在您的 Cline MCP 设置中添加以下配置:

json 复制代码
{
  "mcpServers": {
    "google-workspace-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-v", "/home/aaron/.mcp/google-workspace-mcp:/app/config",
        "-e", "GOOGLE_CLIENT_ID",
        "-e", "GOOGLE_CLIENT_SECRET",
        "-e", "LOG_MODE=strict",
        "ghcr.io/aaronsb/google-workspace-mcp:latest"
      ],
      "env": {
        "GOOGLE_CLIENT_ID": "123456789012-abcdef3gh1jklmn2pqrs4uvw5xyz6789.apps.googleusercontent.com",
        "GOOGLE_CLIENT_SECRET": "GOCSPX-abcdefghijklmnopqrstuvwxyz1234"
      },
      "autoApprove": [],
      "disabled": false
    }
  }
}

文件管理

服务器会以结构化的方式自动管理文件:

复制代码
~/Documents/workspace-mcp-files/
├── [email_1@domain.com]/
│   ├── downloads/        # 从 Drive 下载的文件
│   └── uploads/         # 准备上传的文件
├── [email_2@domain.com]/
│   ├── downloads/
│   └── uploads/
└── shared/
    └── temp/           # 临时文件(自动清理)

WorkspaceManager 自动创建并维护此结构:

  • 在下载/上传文件时按需创建目录
  • 按用户电子邮件组织文件
  • 处理临时文件清理
  • 维护适当权限

您可以自定义工作区位置,通过设置 WORKSPACE_BASE_PATH 环境变量。

手动使用

重要提示:服务器需要在挂载的配置目录中有一个 accounts.json 文件。首次设置时,在启动容器之前,请将 accounts.example.json 复制到您的配置目录中的 accounts.json

您可以直接运行容器:

bash 复制代码
docker run -i --rm \
  -v ~/.mcp/google-workspace-mcp:/app/config \
  -v ~/Documents/workspace-mcp-files:/app/workspace \
  -e GOOGLE_CLIENT_ID=123456789012-abcdef3gh1jklmn2pqrs4uvw5xyz6789.apps.googleusercontent.com \
  -e GOOGLE_CLIENT_SECRET=GOCSPX-abcdefghijklmnopqrstuvwxyz1234 \
  -e LOG_MODE=strict \
  ghcr.io/aaronsb/google-workspace-mcp:latest

服务器会自动:

  • 创建和管理所有必要的配置文件
  • 安全存储凭据和令牌
  • 维护适当的文件权限

开发构建

本地构建脚本

为了快速、类似 CI 的本地构建和 Docker 镜像创建,请使用提供的脚本:

bash 复制代码
# 运行本地构建管道(安装、检查、测试、构建和创建 Docker 镜像)
./scripts/build-local.sh
  • 默认情况下,镜像标记为 google-workspace-mcp:local
  • 要使用详细输出(将所有日志打印到控制台),请添加 --verbose
    bash 复制代码
    ./scripts/build-local.sh --verbose
  • 要更改 Docker 镜像标记:
    bash 复制代码
    ./scripts/build-local.sh --tag my-custom-tag
  • 日志文件写入 /tmp/google-workspace-mcp/ 供审查。

构建脚本使用 Dockerfile.local,它是针对本地开发优化的,没有平台特定的设置或 BuildKit 特性。这确保了不同开发环境之间的兼容性。

手动 Docker 构建

您也可以手动构建和运行容器:

bash 复制代码
# 使用标准 Dockerfile 构建镜像
docker build -t google-workspace-mcp:local .

# 或使用本地开发 Dockerfile(推荐用于本地开发)
docker build -t google-workspace-mcp:local -f Dockerfile.local .

# 使用所需环境变量运行
docker run -i --rm \
  -v ~/.mcp/google-workspace-mcp:/app/config \
  -v ~/Documents/workspace-mcp-files:/app/workspace \
  -e GOOGLE_CLIENT_ID=123456789012-abcdef3gh1jklmn2pqrs4uvw5xyz6789.apps.googleusercontent.com \
  -e GOOGLE_CLIENT_SECRET=GOCSPX-abcdefghijklmnopqrstuvwxyz1234 \
  -e LOG_MODE=strict \
  google-workspace-mcp:local

功能

  • 简化的附件处理,具有自动元数据管理功能
  • 集中于关键信息的流线型电子邮件回复
  • 强大的附件索引和检索系统
  • 高效的 Gmail 和日历文件管理
  • 自动清理过期附件

可用工具

帐户管理

  • list_workspace_accounts(别名:list_accounts, get_accounts, show_accounts)

    • 列出所有已配置的 Google 帐户及其身份验证状态
    • 在执行其他操作之前必须先调用此命令
    • 验证所需 API 范围
    • 处理多个帐户选择
  • authenticate_workspace_account(别名:auth_account, add_account, connect_account)

    • 为 API 访问添加和认证 Google 帐户
    • 支持帐户分类(工作、个人)
    • 处理带有用户交互的 OAuth 流程
    • 自动管理令牌刷新
  • remove_workspace_account(别名:delete_account, disconnect_account, remove_account)

    • 删除 Google 帐户及其关联的令牌
    • 清理存储的凭据

Gmail 操作

消息和搜索

  • search_workspace_emails(别名:search_emails, find_emails, query_emails)

    • 高级电子邮件筛选功能:
      • 发件人/收件人筛选
      • 主题和内容搜索
      • 日期范围筛选
      • 是否包含附件
      • 基于标签的筛选
      • 支持复杂的 Gmail 查询语法
    • 常见搜索模式:
      • 会议电子邮件
      • HR/行政通信
      • 团队更新
      • 新闻通讯
  • send_workspace_email(别名:send_email, send_mail, create_email)

    • 发送带有完整格式的电子邮件
    • 支持 CC/BCC 收件人
    • 附件处理
    • 电子邮件线程支持

设置和配置

  • get_workspace_gmail_settings(别名:get_gmail_settings, gmail_settings, get_mail_settings)
    • 访问帐户设置
    • 语言偏好
    • 签名配置
    • 自动回复状态
    • 过滤器和转发规则

草稿管理

  • manage_workspace_draft(别名:manage_draft, draft_operation, handle_draft)
    • 完整的草稿 CRUD 操作:
      • 创建新草稿
      • 读取现有草稿
      • 更新草稿内容
      • 删除草稿
      • 发送草稿
    • 支持:
      • 新电子邮件草稿
      • 带有线程的回复草稿
      • 草稿修改
      • 草稿发送

标签管理

  • manage_workspace_label(别名:manage_label, label_operation, handle_label)

    • 完整的标签 CRUD 操作
    • 支持嵌套标签
    • 自定义颜色配置
    • 可见性设置
  • manage_workspace_label_assignment(别名:assign_label, modify_message_labels, change_message_labels)

    • 为消息应用/移除标签
    • 批量标签修改
    • 系统标签更新
  • manage_workspace_label_filter(别名:manage_filter, handle_filter, filter_operation)

    • 创建和管理标签过滤器
    • 复杂的过滤条件:
      • 发件人/收件人模式
      • 主题/内容匹配
      • 是否包含附件
      • 消息大小规则
    • 自动化操作:
      • 标签应用
      • 重要性标记
      • 已读状态
      • 存档

日历操作

事件管理

  • list_workspace_calendar_events(别名:list_events, get_events, show_events)

    • 带过滤的日历事件列表
    • 日期范围指定
    • 事件内的文本搜索
    • 可定制的结果限制
  • get_workspace_calendar_event(别名:get_event, view_event, show_event)

    • 详细的事件信息
    • 与会者状态
    • 事件设置
  • manage_workspace_calendar_event(别名:manage_event, update_event, respond_to_event)

    • 事件响应管理:
      • 接受/拒绝邀请
      • 标记为暂定
      • 提议新时间
      • 更新事件时间
    • 注释支持
    • 时区处理
  • create_workspace_calendar_event(别名:create_event, new_event, schedule_event)

    • 创建新的日历事件
    • 支持:
      • 单次事件
      • 循环事件(RRULE 格式)
      • 多个与会者
      • 时区指定
      • 事件描述
      • 冲突检查
  • delete_workspace_calendar_event(别名:delete_event, remove_event, cancel_event)

    • 删除日历事件
    • 与会者的通知选项

Drive 操作

文件管理

  • list_drive_files(别名:list_files, get_files, show_files)

    • 带可选过滤的文件列表
    • 按文件夹过滤
    • 自定义查询支持
    • 排序和分页
    • 字段选择
  • search_drive_files(别名:search_files, find_files, query_files)

    • 全文搜索文件内容
    • 按 MIME 类型过滤
    • 按文件夹过滤
    • 包括/排除已删除文件
    • 高级查询选项
  • upload_drive_file(别名:upload_file, create_file, add_file)

    • 上传新文件
    • 设置文件元数据
    • 指定父文件夹
    • 支持各种文件类型
  • download_drive_file(别名:download_file, get_file_content, fetch_file)

    • 下载任意类型的文件
    • 导出 Google Workspace 文件
    • 格式转换选项
    • 自动 MIME 类型处理
  • delete_drive_file(别名:delete_file, remove_file, trash_file)

    • 删除文件和文件夹
    • 从 Drive 中干净地移除

文件夹操作

  • create_drive_folder(别名:create_folder, new_folder, add_folder)
    • 创建新文件夹
    • 支持嵌套文件夹
    • 指定父文件夹
    • 文件夹元数据

权限

  • update_drive_permissions(别名:share_file, update_sharing, modify_permissions)
    • 更新共享设置
    • 多种权限类型:
      • 用户权限
      • 组权限
      • 域共享
      • 公开访问
    • 各种访问角色:
      • 所有者
      • 组织者
      • 文件组织者
      • 编辑者
      • 评论者
      • 读者
    • 公共文件的发现设置

有关详细用法,请参见 API 文档

即将推出

未来服务

  • Admin SDK 支持
  • 其他 Google 服务

测试策略

单元测试方法

  1. 简化模拟

    • 使用静态模拟响应进行可预测的测试
    • 在单元测试中避免复杂的端到端模拟
    • 一次只测试一个功能模块
    • 对外部依赖(OAuth、文件系统)使用简单的实现进行模拟
  2. 测试组织

    • 按功能分组测试(例如,帐户操作、文件操作)
    • 使用清晰、描述性的测试名称
    • 保持测试专注和隔离
    • 在每次测试之间重置模拟和模块
  3. 模拟管理

    • 使用 jest.resetModules() 确保干净的状态
    • 修改模拟后重新加载模块
    • 明确跟踪模拟函数的调用
    • 验证函数调用和结果
  4. 文件系统测试

    • 使用简单的 JSON 结构
    • 关注数据正确性而非格式
    • 测试错误场景(缺失文件、无效 JSON)
    • 验证文件操作而不涉及实现细节
  5. 令牌处理

    • 使用静态响应模拟令牌验证
    • 分别测试成功和失败场景
    • 验证令牌操作而不涉及 OAuth 复杂性
    • 关注帐户管理器的令牌处理逻辑

运行测试

bash 复制代码
# 运行所有测试
npm test

# 运行特定测试文件
npm test path/to/test.ts

# 运行带有覆盖率的测试
npm test -- --coverage

# CI 构建运行所有测试并报告覆盖率
npm run test:ci

最佳实践

  1. 认证

    • 在 MCP 设置中安全存储凭据
    • 使用最小所需的范围
    • 正确处理令牌刷新
  2. 错误处理

    • 检查响应状态
    • 适当地处理认证错误
    • 实现适当的重试机制
  3. 配置与安全性

    • 每个用户维护自己的 Google Cloud 项目
    • 在 MCP 设置中配置 OAuth 凭据
    • 在 ~/.mcp/google-workspace-mcp 中安全存储令牌
    • 定期轮换令牌
    • 不要将敏感文件提交到 git
    • 为配置目录设置适当的文件权限
  4. 本地开发设置

    • 在 MCP 设置中配置 OAuth 凭据
    • 创建 ~/.mcp/google-workspace-mcp 目录
    • 将敏感令牌从版本控制中移除
    • 为每个帐户运行认证脚本

故障排除

常见设置问题

  1. 缺少配置

    • 错误:“GOOGLE_CLIENT_ID 环境变量是必需的”
    • 解决方案:在您的 MCP 设置文件中配置 OAuth 凭据(详见 docs/API.md)
  2. 认证错误

    • 错误:“无效的 OAuth 凭据”
    • 解决方案:
      • 确认您的 Google Cloud 项目已正确配置
      • 确保您已在 OAuth 同意屏幕上添加自己为测试用户
      • 检查是否已启用 Gmail API 和 Google Calendar API
      • 确认 MCP 设置中的凭据与 OAuth 客户端配置一致
  3. 令牌问题

    • 错误:“令牌刷新失败”
    • 解决方案:使用 remove_workspace_account 删除帐户并重新认证
    • 检查您的 Google Cloud 项目是否启用了必要的 API 范围
  4. 目录结构

    • 错误:“目录未找到”
    • 解决方案:确保 ~/.mcp/google-workspace-mcp 存在并具有适当权限
    • 验证 Docker 是否可以挂载配置目录

如有更多帮助需求,请查阅 错误处理 文档。

许可证

MIT 许可证 - 请查看 LICENSE 文件以获取详细信息