🚀 Google Workspace MCP Server
这是功能最齐全的 Google Workspace MCP 服务器,现在支持一键安装 Claude。通过所有 MCP 客户端、AI 助手和开发工具,可对 Google Calendar、Drive、Gmail、Docs、Sheets、Slides、Forms、Tasks 和 Chat 进行全自然语言控制。支持所有免费 Google 账户(Gmail、Docs、Drive 等)和 Google Workspace 计划(Starter、Standard、Plus、Enterprise、Non Profit 等)及其扩展应用选项,如 Chat 和 Spaces。
项目演示
AI 辅助编写说明
为何使用 AI 辅助?
本 README 由 AI 辅助编写,原因如下:作为一名独立开发者,开发的开源工具可能鲜有人使用,若没有 AI 帮助,全面的文档往往难以完成。使用像 Roo 和 Claude Code 这类能理解整个代码库的智能开发工具,AI 并非只是生成通用内容,而是提取实际的实现细节,创建准确、具体的文档。在这个案例中,Sonnet 4 参与编写,人类(即我)于 2025 年 7 月 10 日进行了审核。
🚀 快速开始
1. 一键安装 Claude Desktop(推荐)
- 下载:从“Releases”页面获取最新的
google_workspace_mcp.dxt
文件。
- 安装:双击该文件,Claude Desktop 会打开并提示你点击“安装”。
- 配置:在 Claude Desktop 中,依次点击 Settings → Extensions → Google Workspace MCP,粘贴你的 Google OAuth 凭证。
- 使用:开启一个新的 Claude 聊天窗口,即可调用任何 Google Workspace 工具。
⚠️ 重要提示
为何使用 DXT 文件?桌面扩展(.dxt
)将服务器、依赖项和清单文件打包在一起,用户只需一键操作,即可从下载完成到让 MCP 正常运行,无需使用终端、编辑 JSON 文件,也不会出现版本冲突问题。
必要配置
环境配置 - 你将在 Claude 中进行配置,详见截图:
变量 |
用途 |
GOOGLE_OAUTH_CLIENT_ID |
从 Google Cloud 获取的 OAuth 客户端 ID |
GOOGLE_OAUTH_CLIENT_SECRET |
OAuth 客户端密钥 |
USER_GOOGLE_EMAIL (可选) |
单用户认证的默认电子邮件 |
OAUTHLIB_INSECURE_TRANSPORT=1 |
仅用于开发环境(允许 http:// 重定向) |
Claude Desktop 会将这些信息安全地存储在操作系统的钥匙串中,你只需在扩展面板中设置一次即可。
2. 高级/跨平台安装
如果你是进行开发、部署到服务器,或者使用其他支持 MCP 的客户端,请继续阅读以下内容。
即时命令行安装(uvx)
export GOOGLE_OAUTH_CLIENT_ID="xxx"
export GOOGLE_OAUTH_CLIENT_SECRET="yyy"
uvx workspace-mcp --tools gmail drive calendar
⚠️ 重要提示
使用 uvx 时可立即运行,无需手动安装,但你必须配置 OAuth 凭证。你可以使用环境变量(推荐用于生产环境),也可以设置 GOOGLE_CLIENT_SECRET_PATH
(或旧版的 GOOGLE_CLIENT_SECRETS
)环境变量,指向你的 client_secret.json
文件。
export GOOGLE_OAUTH_CLIENT_ID="your-client-id.apps.googleusercontent.com"
export GOOGLE_OAUTH_CLIENT_SECRET="your-client-secret"
uvx workspace-mcp
uvx workspace-mcp --tools gmail drive calendar tasks
uvx workspace-mcp --transport streamable-http
此安装方式需要 Python 3.11+ 和 uvx。该软件包可在 PyPI 上获取。
开发环境安装
若你需要进行开发或定制:
git clone https://github.com/taylorwilsdon/google_workspace_mcp.git
cd google_workspace_mcp
uv run main.py
前提条件
- Python 3.11+
- uvx(用于即时安装)或 uv(用于开发)
- 拥有 OAuth 2.0 凭证的 Google Cloud 项目
配置
Google Cloud 设置
- 在 Google Cloud Console 中创建 OAuth 2.0 凭证(Web 应用程序)。
- 启用以下 API:Calendar、Drive、Gmail、Docs、Sheets、Slides、Forms、Tasks、Chat。
- 添加重定向 URI:
http://localhost:8000/oauth2callback
。
- 可使用以下方法之一配置凭证:
选项 A:环境变量(推荐用于生产环境)
export GOOGLE_OAUTH_CLIENT_ID="your-client-id.apps.googleusercontent.com"
export GOOGLE_OAUTH_CLIENT_SECRET="your-client-secret"
export GOOGLE_OAUTH_REDIRECT_URI="http://localhost:8000/oauth2callback"
选项 B:基于文件(传统方式)
- 将凭证下载为
client_secret.json
文件,放在项目根目录下。
- 若要使用其他位置的文件,可设置
GOOGLE_CLIENT_SECRET_PATH
(或旧版的 GOOGLE_CLIENT_SECRETS
)环境变量,指定文件路径。
凭证加载优先级:
- 环境变量(
GOOGLE_OAUTH_CLIENT_ID
、GOOGLE_OAUTH_CLIENT_SECRET
)
GOOGLE_CLIENT_SECRET_PATH
或 GOOGLE_CLIENT_SECRETS
环境变量指定的文件
- 默认文件(项目根目录下的
client_secret.json
)
💡 使用建议
为何推荐使用环境变量?
- ✅ 适用于容器化部署(Docker、Kubernetes)
- ✅ 适用于云平台(Heroku、Railway 等)
- ✅ 适用于 CI/CD 管道
- ✅ 不会将机密信息存储在版本控制系统中
- ✅ 便于凭证轮换
环境配置
export OAUTHLIB_INSECURE_TRANSPORT=1
export USER_GOOGLE_EMAIL=your.email@gmail.com
服务器配置
可使用环境变量自定义服务器的基本 URL 和端口:
WORKSPACE_MCP_BASE_URI
:设置服务器的基本 URI(默认:http://localhost)。如果未设置 GOOGLE_OAUTH_REDIRECT_URI
,此设置将影响用于构建默认 OAUTH_REDIRECT_URI
的 server_url
。
WORKSPACE_MCP_PORT
:设置服务器监听的端口(默认:8000)。此设置将影响 server_url
、端口和 OAUTH_REDIRECT_URI
。
USER_GOOGLE_EMAIL
:可选的认证流程默认电子邮件。如果设置了此选项,大语言模型在调用 start_google_auth
时无需指定你的电子邮件。
GOOGLE_OAUTH_REDIRECT_URI
:专门为 OAuth 重定向设置覆盖值,必须包含完整地址(如有必要,需包含端口)。仅在非常特殊的情况下推荐使用此选项,用于将 OAuth 重定向与 MCP 分开运行。
启动服务器
uv run main.py
uv run main.py --transport streamable-http
uv run main.py --single-user
uv run main.py --tools gmail drive calendar tasks
uv run main.py --tools sheets docs
uv run main.py --single-user --tools gmail
docker build -t workspace-mcp .
docker run -p 8000:8000 -v $(pwd):/app workspace-mcp --transport streamable-http
--tools
标志可用工具:gmail
、drive
、calendar
、docs
、sheets
、forms
、tasks
、chat
连接到 Claude Desktop
服务器支持两种传输模式:
标准输入输出模式(默认 - 推荐用于 Claude Desktop)
引导式设置(若不使用 DXT,推荐此方式)
python install_claude.py
此脚本会自动执行以下操作:
- 提示你输入 Google OAuth 凭证(客户端 ID 和密钥)
- 在正确的位置创建 Claude Desktop 配置文件
- 设置所有必要的环境变量
- 无需手动编辑文件!
运行脚本后,重启 Claude Desktop 即可使用。
手动配置 Claude(替代方法)
- 打开 Claude Desktop 设置 → 开发者 → 编辑配置
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
- 添加服务器配置:
{
"mcpServers": {
"google_workspace": {
"command": "uvx",
"args": ["workspace-mcp"],
"env": {
"GOOGLE_OAUTH_CLIENT_ID": "your-client-id.apps.googleusercontent.com",
"GOOGLE_OAUTH_CLIENT_SECRET": "your-client-secret",
"OAUTHLIB_INSECURE_TRANSPORT": "1"
}
}
}
}
获取 Google OAuth 凭证(若你没有):
- 访问 Google Cloud Console
- 创建一个新项目并启用以下 API:Calendar、Drive、Gmail、Docs、Sheets、Slides、Forms、Tasks、Chat
- 创建 OAuth 2.0 客户端 ID(Web 应用程序),重定向 URI 为:
http://localhost:8000/oauth2callback
开发环境安装(适用于贡献者):
{
"mcpServers": {
"google_workspace": {
"command": "uv",
"args": [
"run",
"--directory",
"/path/to/repo/google_workspace_mcp",
"main.py"
],
"env": {
"GOOGLE_OAUTH_CLIENT_ID": "your-client-id.apps.googleusercontent.com",
"GOOGLE_OAUTH_CLIENT_SECRET": "your-client-secret",
"OAUTHLIB_INSECURE_TRANSPORT": "1"
}
}
}
}
HTTP 模式(用于调试或 Web 界面)
若你需要在 Claude Desktop 中使用 HTTP 模式:
{
"mcpServers": {
"google_workspace": {
"command": "npx",
"args": ["mcp-remote", "http://localhost:8000/mcp"]
}
}
}
⚠️ 重要提示
使用 HTTP 模式时,务必使用 --transport streamable-http
启动服务器。
首次认证
服务器具备传输感知的 OAuth 回调处理功能:
- 标准输入输出模式:自动在端口 8000 上启动一个最小的 HTTP 服务器,用于 OAuth 回调。
- HTTP 模式:使用现有的 FastAPI 服务器进行 OAuth 回调。
- 相同的 OAuth 流程:两种模式均使用
http://localhost:8000/oauth2callback
以保持一致性。
调用工具时:
- 服务器返回授权 URL。
- 在浏览器中打开该 URL 并授权。
- 服务器会自动处理 OAuth 回调(两种模式均在端口 8000 上)。
- 重试原始请求。
✨ 主要特性
- 🔐 高级 OAuth 2.0:安全认证,具备自动令牌刷新、传输感知回调处理、会话管理和集中式范围管理功能。
- 📅 Google Calendar:完整的日历管理,支持事件的创建、读取、更新和删除操作。
- 📁 Google Drive:文件操作,支持原生 Microsoft Office 格式(
.docx
、.xlsx
)。
- 📧 Gmail:完整的电子邮件管理,具备搜索、发送和草稿功能。
- 📄 Google Docs:文档操作,包括内容提取、创建和评论管理。
- 📊 Google Sheets:全面的电子表格管理,支持灵活的单元格操作和评论管理。
- 🖼️ Google Slides:演示文稿管理,支持幻灯片创建、更新、内容操作和评论管理。
- 📝 Google Forms:表单创建、检索、发布设置和响应管理。
- ✓ Google Tasks:完整的任务和任务列表管理,支持层次结构、截止日期和状态跟踪。
- 💬 Google Chat:空间管理和消息传递功能。
- 🔄 全传输方式支持:标准输入输出、可流式传输的 HTTP 和 Server-Sent Events(SSE),通过
mcpo
实现 OpenAPI 兼容性。
- ⚡ 高性能:服务缓存、线程安全会话、集成 FastMCP。
- 🧩 开发者友好:最少的样板代码、自动服务注入、集中式配置。
🧰 可用工具
⚠️ 重要提示
所有工具都支持通过 @require_google_service()
装饰器进行自动认证,并具备 30 分钟的服务缓存。
工具 |
描述 |
list_calendars |
列出可访问的日历 |
get_events |
按时间范围过滤检索事件 |
get_event |
通过 ID 获取单个事件的详细信息 |
create_event |
创建事件(全天或定时),可选择附加 Drive 文件 |
modify_event |
更新现有事件 |
delete_event |
删除事件 |
工具 |
描述 |
search_drive_files |
使用查询语法搜索文件 |
get_drive_file_content |
读取文件内容(支持 Office 格式) |
list_drive_items |
列出文件夹内容 |
create_drive_file |
创建新文件或从公共 URL 获取内容 |
工具 |
描述 |
search_gmail_messages |
使用 Gmail 操作符搜索邮件 |
get_gmail_message_content |
检索邮件内容 |
send_gmail_message |
发送邮件 |
draft_gmail_message |
创建草稿 |
工具 |
描述 |
search_docs |
按名称查找文档 |
get_doc_content |
提取文档文本 |
list_docs_in_folder |
列出文件夹中的文档 |
create_doc |
创建新文档 |
read_doc_comments |
读取所有评论和回复 |
create_doc_comment |
创建新评论 |
reply_to_comment |
回复现有评论 |
resolve_comment |
解决评论 |
工具 |
描述 |
list_spreadsheets |
列出可访问的电子表格 |
get_spreadsheet_info |
获取电子表格元数据 |
read_sheet_values |
读取单元格范围 |
modify_sheet_values |
写入/更新/清除单元格 |
create_spreadsheet |
创建新电子表格 |
create_sheet |
向现有文件中添加工作表 |
read_sheet_comments |
读取所有评论和回复 |
create_sheet_comment |
创建新评论 |
reply_to_sheet_comment |
回复现有评论 |
resolve_sheet_comment |
解决评论 |
工具 |
描述 |
create_presentation |
创建新演示文稿 |
get_presentation |
检索演示文稿详细信息 |
batch_update_presentation |
一次性应用多个更新 |
get_page |
获取特定幻灯片信息 |
get_page_thumbnail |
生成幻灯片缩略图 |
read_presentation_comments |
读取所有评论和回复 |
create_presentation_comment |
创建新评论 |
reply_to_presentation_comment |
回复现有评论 |
resolve_presentation_comment |
解决评论 |
工具 |
描述 |
create_form |
创建带有标题和描述的新表单 |
get_form |
检索表单详细信息、问题和 URL |
set_publish_settings |
配置表单模板和认证设置 |
get_form_response |
获取单个表单响应的详细信息 |
list_form_responses |
分页列出表单的所有响应 |
工具 |
描述 |
list_task_lists |
分页列出所有任务列表 |
get_task_list |
检索特定任务列表的详细信息 |
create_task_list |
创建带有自定义标题的新任务列表 |
update_task_list |
修改现有任务列表的标题 |
delete_task_list |
删除任务列表及其中包含的所有任务 |
list_tasks |
按过滤选项列出特定列表中的任务 |
get_task |
检索特定任务的详细信息 |
create_task |
创建带有标题、备注、截止日期和层次结构的新任务 |
update_task |
修改任务属性,包括标题、备注、状态和截止日期 |
delete_task |
从任务列表中删除任务 |
move_task |
在列表中重新定位任务或在列表之间移动任务 |
clear_completed_tasks |
隐藏列表中所有已完成的任务 |
工具 |
描述 |
list_spaces |
列出聊天空间/房间 |
get_messages |
检索空间消息 |
send_message |
向空间发送消息 |
search_messages |
在聊天历史记录中搜索 |
🛠️ 开发
项目结构
google_workspace_mcp/
├── auth/ # 带有装饰器的认证系统
├── core/ # MCP 服务器和实用工具
├── g{service}/ # 特定服务的工具
├── main.py # 服务器入口点
├── client_secret.json # OAuth 凭证(不提交到版本控制)
└── pyproject.toml # 依赖项
添加新工具
from auth.service_decorator import require_google_service
@require_google_service("drive", "drive_read")
async def your_new_tool(service, param1: str, param2: int = 10):
"""工具描述"""
result = service.files().list().execute()
return result
架构亮点
- 服务缓存:30 分钟的 TTL 可减少认证开销。
- 范围管理:集中在
SCOPE_GROUPS
中,便于维护。
- 错误处理:使用原生异常,而非手动构建错误。
- 多服务支持:
@require_multiple_services()
适用于复杂工具。
🔧 技术细节
这是一个生产就绪的 MCP 服务器,将所有主要的 Google Workspace 服务与 AI 助手集成。使用 FastMCP 构建以实现最佳性能,具备高级认证处理、服务缓存和简化的开发模式。
🔒 安全
- 凭证管理:切勿将
client_secret.json
或 .credentials/
目录提交到版本控制中。
- OAuth 回调:开发环境使用
http://localhost:8000/oauth2callback
(需要 OAUTHLIB_INSECURE_TRANSPORT=1
)。
- 传输感知回调:标准输入输出模式仅为 OAuth 启动一个最小的 HTTP 服务器,确保在所有模式下回调都能正常工作。
- 生产环境:回调 URI 使用 HTTPS 并进行相应配置。
- 网络暴露:通过网络使用
mcpo
时,需考虑认证问题。
- 范围最小化:工具仅请求必要的权限。
🌐 与 Open WebUI 集成
若要在 Open WebUI 中使用此服务器作为工具提供者:
即时启动(无需配置)
只需复制粘贴以下内容,设置好值即可开始使用!
GOOGLE_OAUTH_CLIENT_ID="your_client_id" GOOGLE_OAUTH_CLIENT_SECRET="your_client_secret" uvx mcpo --port 8000 --api-key "top-secret" -- uvx workspace-mcp
手动配置步骤
1. 创建 MCPO 配置
创建一个名为 config.json
的文件,使用以下结构,使 mcpo
将可流式传输的 HTTP 端点作为 OpenAPI 规范工具提供:
{
"mcpServers": {
"google_workspace": {
"type": "streamablehttp",
"url": "http://localhost:8000/mcp"
}
}
}
2. 启动 MCPO 服务器
mcpo --port 8001 --config config.json --api-key "your-optional-secret-key"
此命令将启动 mcpo
代理,在端口 8001 上提供你的 Google Workspace MCP 服务(假设端口 8000 上的服务已启动)。
3. 配置 Open WebUI
- 导航到你的 Open WebUI 设置。
- 转到 "连接" → "工具"。
- 点击 "添加工具"。
- 输入 服务器 URL:
http://localhost:8001/google_workspace
(与 config.json
中的 mcpo
基本 URL 和服务器名称匹配)。
- 若你在
mcpo
中使用了 --api-key
,请将其作为 API 密钥输入。
- 保存配置。
配置完成后,在 Open WebUI 中与模型交互时,Google Workspace 工具应即可使用。
📄 许可证
本项目采用 MIT 许可证,详情请参阅 LICENSE
文件。