使用说明
谷歌工作区MCP服务器
A. 模型上下文协议 (MCP)服务器提供 240工具 对于Google工作区: Gmail, 驾驶, 文档, 幻灯片, 表格, 日历, 联系人,以及 任务.
内置于 googleapis 和 @modelcontextprotocol/sdk.
特性
| 服务 | 工具 | 亮点 |
|---|---|---|
| Gmail | 75 | 发送/读取/回复/转发、草稿、标签、线程、附件、过滤器、设置、S/MIME、CSE、委托、监视、HTML链接提取 |
| 驾驶 | 47 | 搜索、CRUD、上传/下载、导出、回收、共享、权限、修订、评论、回复、共享驱动器、标签、访问建议 |
| 日历 | 30 | 事件CRUD、搜索、快速添加、导入、重复实例、忙/闲、ACL、日历管理、监视、设置 |
| 表格 | 17 | 读取、写入、创建、追加、清除、批处理操作、数据过滤器、开发人员元数据、复制表 |
| 联系人 | 22 | CRUD、批量操作、照片、联系人组、其他联系人、目录搜索 |
| 任务 | 14 | 任务和任务列表CRUD、完成、移动/重新排序、清除 |
| 文档 | 7 | 创建、读取、插入文本/表格/图像、批量更新、查找和替换 |
| 幻灯片 | 8 | 创建、阅读、添加幻灯片、获取页面、缩略图、插入文本、替换文本、批量更新 |
先决条件
- Node.js 18+
- A. 谷歌云平台 具有OAuth 2.0凭据的项目(桌面应用程序类型)
- 以下 API已启用:
- Gmail API
- Google Drive API
- 谷歌文档API
- 谷歌幻灯片API
- 谷歌网页API
- 谷歌日历API
- 人民API(联系人)
- 任务API
快速安装
git clone https://github.com/salviz/google-mcp-server.git
cd google-mcp-server
npm install
使用克劳德代码注册
CLI:
claude mcp add google-workspace -- node /path/to/google-mcp-server/index.js
或者添加到您的MCP配置中(~/.claude/claude_desktop_config.json 或 .mcp.json):
{
"mcpServers": {
"google-workspace": {
"type": "stdio",
"command": "node",
"args": ["/path/to/google-mcp-server/index.js"],
"env": {
"GOOGLE_CLIENT_ID": "your-client-id.apps.googleusercontent.com",
"GOOGLE_CLIENT_SECRET": "your-client-secret",
"GOOGLE_TOKEN_PATH": "/path/to/credentials.json"
}
}
}
}
环境变量
| 变量 | 必填 | 描述 |
|---|---|---|
GOOGLE_CLIENT_ID |
是 | OAuth 2.0客户端ID |
GOOGLE_CLIENT_SECRET |
是 | OAuth 2.0客户端密钥 |
GOOGLE_TOKEN_PATH |
否 | 令牌JSON文件的路径(默认: ~/.google-mcp/credentials.json) |
GOOGLE_TOKEN_SECRET |
否 | 用于令牌回退的Google Secret Manager秘密名称(默认值: google-mcp-oauth-tokens) |
令牌文件格式
{
"access_token": "ya29...",
"refresh_token": "1//...",
"token_type": "Bearer",
"expiry_date": 1700000000000
}
服务器会自动刷新过期的令牌并将更新持久化到磁盘。如果Google Cloud Secret Manager可用,令牌也会作为跨会话回退存储在那里。
工具(240)
Gmail(75)
| 工具 | 说明 |
|---|---|
gmail_profile |
获取Gmail个人资料信息(电子邮件、消息/线程总数、历史ID) |
gmail_send |
发送新电子邮件(纯文本或HTML) |
gmail_read |
阅读包含全文、HTML链接提取和附件信息的邮件 |
gmail_reply |
回复消息(保持线程) |
gmail_forward |
将邮件转发给其他收件人 |
gmail_list |
列出最近的消息 |
gmail_search |
使用Gmail查询语法搜索邮件 |
gmail_mark_read |
将邮件标记为已读 |
gmail_mark_unread |
将邮件标记为未读 |
gmail_modify_labels |
在邮件中添加或删除标签 |
gmail_trash |
将邮件移至垃圾箱 |
gmail_untrash |
从垃圾箱中删除邮件 |
gmail_delete |
永久删除邮件 |
gmail_batch_modify |
一次修改多封邮件上的标签 |
gmail_batch_delete |
永久删除多条消息 |
gmail_insert_message |
将邮件直接插入邮箱 |
gmail_import_message |
导入邮件(类似于通过SMTP接收) |
gmail_get_attachment |
从邮件中下载附件 |
gmail_list_threads |
列出消息线程 |
gmail_get_thread |
获取一个线程中的所有消息 |
gmail_thread_modify |
修改螺纹上的标签 |
gmail_thread_trash |
将线程移到垃圾桶 |
gmail_thread_untrash |
从回收站还原线程 |
gmail_thread_delete |
永久删除一个线程 |
gmail_create_draft |
创建新草稿 |
gmail_list_drafts |
列出所有草稿 |
gmail_get_draft |
获取特定草稿 |
gmail_update_draft |
更新现有草稿 |
gmail_delete_draft |
删除草稿 |
gmail_send_draft |
发送草稿 |
gmail_list_labels |
列出所有标签 |
gmail_get_label |
获取特定标签 |
gmail_create_label |
创建新标签 |
gmail_update_label |
更新标签 |
gmail_delete_label |
删除标签 |
gmail_list_history |
列出自历史ID以来的邮箱更改 |
gmail_get_auto_forwarding |
获取自动转发设置 |
gmail_update_auto_forwarding |
更新自动转发设置 |
gmail_get_imap |
获取IMAP设置 |
gmail_update_imap |
更新IMAP设置 |
gmail_get_pop |
获取POP设置 |
gmail_update_pop |
更新POP设置 |
gmail_get_language |
获取语言设置 |
gmail_update_language |
更新语言设置 |
gmail_get_vacation |
获取假期回复设置 |
gmail_update_vacation |
更新假期回复设置 |
gmail_list_send_as |
以别名发送列表 |
gmail_get_send_as |
获取别名发送 |
gmail_create_send_as |
创建发送别名 |
gmail_update_send_as |
更新以别名发送 |
gmail_delete_send_as |
删除以别名发送 |
gmail_verify_send_as |
以别名发送验证 |
gmail_list_filters |
列出电子邮件过滤器 |
gmail_get_filter |
获取特定筛选器 |
gmail_create_filter |
创建新筛选器 |
gmail_delete_filter |
删除筛选器 |
gmail_list_forwarding_addresses |
列出转发地址 |
gmail_get_forwarding_address |
获取转发地址 |
gmail_create_forwarding_address |
创建转发地址 |
gmail_delete_forwarding_address |
删除转发地址 |
gmail_list_delegates |
列出邮件代理 |
gmail_get_delegate |
获取邮件代理 |
gmail_create_delegate |
创建邮件代理 |
gmail_delete_delegate |
删除邮件代理 |
gmail_list_smime |
列出S/MIME证书 |
gmail_get_smime |
获取S/MIME证书 |
gmail_insert_smime |
插入S/MIME证书 |
gmail_delete_smime |
删除S/MIME证书 |
gmail_set_default_smime |
设置默认S/MIME证书 |
gmail_list_cse_identities |
列出CSE身份 |
gmail_get_cse_identity |
获取CSE身份 |
gmail_create_cse_identity |
创建CSE身份 |
gmail_patch_cse_identity |
修补CSE身份 |
gmail_delete_cse_identity |
删除CSE标识 |
gmail_list_cse_keypairs |
列出CSE密钥对 |
gmail_get_cse_keypair |
获取CSE密钥对 |
gmail_create_cse_keypair |
创建CSE密钥对 |
gmail_enable_cse_keypair |
启用CSE密钥对 |
gmail_disable_cse_keypair |
禁用CSE密钥对 |
gmail_obliterate_cse_keypair |
永久删除CSE密钥对 |
gmail_watch |
通过发布/订阅设置推送通知 |
gmail_stop_watch |
停止推送通知 |
谷歌云端硬盘(47)
| 工具 | 说明 |
|---|---|
drive_search |
使用驱动器查询语法搜索文件 |
drive_read |
读取文件内容(检测二进制文件,建议下载) |
drive_list |
列出文件夹中的文件 |
drive_file_info |
获取详细的文件元数据 |
drive_create_folder |
创建新文件夹 |
drive_create_file |
创建新的文本文件 |
drive_update_file |
更新文件名、内容或描述 |
drive_delete |
永久删除文件 |
drive_trash |
将文件移至回收站 |
drive_untrash |
从回收站还原文件 |
drive_copy |
复制文件 |
drive_move |
将文件移动到其他文件夹 |
drive_share |
共享文件(用户、组、域或任何人) |
drive_list_permissions |
列表共享权限 |
drive_get_permission |
获取特定权限 |
drive_update_permission |
更新共享权限 |
drive_remove_permission |
删除共享权限 |
drive_about |
获取存储配额和用户信息 |
drive_upload_file |
从本地文件系统上传二进制文件 |
drive_download_file |
将文件下载到本地文件系统 |
drive_get_comments |
列出文件的评论 |
drive_get_comment |
获取具体评论 |
drive_add_comment |
向文件添加注释 |
drive_update_comment |
更新评论 |
drive_delete_comment |
删除评论 |
drive_create_reply |
对评论的回复 |
drive_list_replies |
列出对评论的回复 |
drive_get_reply |
获得具体回复 |
drive_update_reply |
更新回复 |
drive_delete_reply |
删除回复 |
drive_export_file |
导出谷歌工作区文件(PDF、DOCX、CSV等) |
drive_get_revisions |
列出文件修订历史记录 |
drive_get_revision |
获取特定修订 |
drive_update_revision |
更新修订元数据 |
drive_delete_revision |
删除修订 |
drive_empty_trash |
永久清空所有垃圾 |
drive_get_changes_start_token |
获取更改的起始页标记 |
drive_list_changes |
列出自页面标记以来的文件更改 |
drive_watch_file |
监视文件的更改(webhook) |
drive_watch_changes |
注意文件更改(webhook) |
drive_stop_channel |
停止观看频道 |
drive_generate_ids |
为上传生成文件ID |
drive_list_labels |
列出文件上的标签 |
drive_modify_labels |
修改文件上的标签 |
drive_list_access_proposals |
列出文件的访问建议 |
drive_get_access_proposal |
获取特定的访问建议 |
drive_resolve_access_proposal |
接受或拒绝访问提议 |
drive_list_apps |
列出已安装的Drive应用程序 |
drive_get_app |
获取特定的Drive应用程序 |
drive_get_operation |
获取长时间运行的操作状态 |
drive_create_shared_drive |
创建共享驱动器 |
drive_list_shared_drives |
列出共享驱动器 |
drive_get_shared_drive |
获取共享驱动器 |
drive_update_shared_drive |
更新共享驱动器 |
drive_hide_shared_drive |
隐藏共享驱动器 |
drive_unhide_shared_drive |
取消隐藏共享驱动器 |
drive_delete_shared_drive |
删除共享驱动器 |
谷歌日历(30)
| 工具 | 说明 |
|---|---|
calendar_list_events |
列出即将发生的事件,并提供可选的时间范围 |
calendar_search_events |
按文本搜索事件 |
calendar_create_event |
创建活动(支持全天) |
calendar_update_event |
更新现有事件 |
calendar_delete_event |
删除事件 |
calendar_get_event |
获取详细的事件信息 |
calendar_move_event |
在日历之间移动事件 |
calendar_quick_add |
从自然语言创建事件 |
calendar_import_event |
通过iCal UID导入事件 |
calendar_recurring_instances |
列出重复事件的实例 |
calendar_freebusy |
查看日历的忙/闲时间 |
calendar_list_calendars |
列出所有可访问的日历 |
calendar_create_calendar |
创建新日历 |
calendar_get_calendar |
获取日历详细信息 |
calendar_update_calendar |
更新日历属性 |
calendar_delete_calendar |
删除日历 |
calendar_clear |
清除日历中的所有事件 |
calendar_list_get |
获取日历列表条目 |
calendar_list_update |
更新日历列表条目 |
calendar_list_insert |
订阅日历 |
calendar_list_delete |
取消订阅日历 |
calendar_acl_list |
列出日历访问控制规则 |
calendar_acl_get |
获取特定的ACL规则 |
calendar_acl_insert |
添加ACL规则 |
calendar_acl_update |
更新ACL规则 |
calendar_acl_delete |
删除ACL规则 |
calendar_get_colors |
获取可用的日历/活动颜色 |
calendar_list_settings |
列出所有用户设置 |
calendar_get_setting |
获取特定设置 |
calendar_acl_watch |
查看ACL更改(webhook) |
calendar_watch_events |
监视事件更改(webhook) |
calendar_list_watch |
查看日历列表更改(webhook) |
calendar_watch_settings |
监视设置更改(webhook) |
calendar_stop_channel |
停止观看频道 |
谷歌表格(17)
| 工具 | 说明 |
|---|---|
sheets_read |
从电子表格区域读取数据 |
sheets_write |
将数据写入范围 |
sheets_create |
创建新的电子表格 |
sheets_append |
在现有数据后追加行 |
sheets_clear |
清除某个范围内的值 |
sheets_batch_clear |
一次清除多个范围 |
sheets_batch_get |
一次读取多个范围 |
sheets_batch_update |
结构操作(添加图纸、合并单元格、图表) |
sheets_batch_update_values |
一次写入多个范围 |
sheets_get_info |
获取电子表格元数据 |
sheets_copy_sheet |
将工作表复制到另一个电子表格 |
sheets_get_by_data_filter |
使用数据过滤器获取电子表格数据 |
sheets_batch_get_by_data_filter |
使用数据过滤器获取值 |
sheets_batch_update_values_by_data_filter |
使用数据过滤器更新值 |
sheets_batch_clear_by_data_filter |
使用数据过滤器清除范围 |
sheets_developer_metadata_search |
搜索开发人员元数据 |
sheets_developer_metadata_get |
按ID获取开发人员元数据 |
谷歌联系人(22)
| 工具 | 说明 |
|---|---|
contacts_list |
使用可选搜索列出联系人 |
contacts_get |
获取特定联系人 |
contacts_create |
创建新联系人 |
contacts_update |
更新现有联系人 |
contacts_delete |
删除联系人 |
contacts_batch_create |
一次创建多个联系人 |
contacts_batch_update |
一次更新多个联系人 |
contacts_batch_get |
一次获取多个联系人 |
contacts_batch_delete |
一次删除多个联系人 |
contacts_update_photo |
上传联系人照片 |
contacts_delete_photo |
删除联系人照片 |
contacts_groups_list |
列出联系人组 |
contacts_group_create |
创建联系人组 |
contacts_group_get |
建立一个联络小组 |
contacts_group_update |
更新联系人组 |
contacts_group_delete |
删除联系人组 |
contacts_group_batch_get |
获取多个联系人组 |
contacts_group_modify_members |
在组中添加或删除成员 |
contacts_other_list |
列出“其他联系人”(自动保存) |
contacts_other_search |
搜索其他联系人 |
contacts_other_copy |
将其他联系人复制到我的联系人中 |
contacts_search_directory |
搜索组织目录(工作区) |
contacts_list_directory |
列出目录联系人(工作区) |
谷歌任务(14)
| 工具 | 说明 |
|---|---|
tasks_list |
列出所有任务列表 |
tasks_get_list |
获取特定任务列表 |
tasks_create_list |
创建新任务列表 |
tasks_delete_list |
删除任务列表 |
tasks_list_tasks |
在任务列表中列出任务 |
tasks_get |
获取特定任务 |
tasks_create |
创建新任务 |
tasks_update |
更新任务 |
tasks_complete |
将任务标记为已完成 |
tasks_delete |
删除任务 |
tasks_move |
移动或重新排序任务 |
tasks_clear |
从列表中清除已完成的任务 |
谷歌文档(7)
| 工具 | 说明 |
|---|---|
docs_create |
使用可选内容和文件夹创建新文档 |
docs_read |
以纯文本形式读取完整文档内容 |
docs_insert_text |
在某个位置插入文本 |
docs_batch_update |
应用批量更新请求 |
docs_insert_table |
插入表格 |
docs_insert_image |
从URL插入内联图像 |
docs_find_replace |
查找和替换文本 |
谷歌幻灯片(8)
| 工具 | 说明 |
|---|---|
slides_create |
创建新演示文稿 |
slides_read |
阅读所有幻灯片内容 |
slides_add_slide |
添加新幻灯片 |
slides_get_page |
获取特定幻灯片的详细信息 |
slides_get_thumbnail |
为幻灯片生成缩略图URL |
slides_insert_text |
在形状或文本框中插入文本 |
slides_replace_all_text |
查找并替换所有幻灯片中的文本 |
slides_batch_update |
应用批量更新请求 |
安装指南
1.创建谷歌云项目
去 谷歌云控制台 并创建或选择一个项目。
2.启用API
在 API和服务>库,启用:Gmail、驱动器、文档、幻灯片、表格、日历、人员和任务API。
3.创建OAuth 2.0凭据
- 导航至 API和服务>凭据
- 点击 创建凭据>OAuth客户端ID
- 选择 桌面应用
- 注意
client_id和client_secret
4.获取代币
使用附带的重新授权助手:
GOOGLE_CLIENT_ID=your-client-id GOOGLE_CLIENT_SECRET=your-client-secret node reauth.js
这将启动一个本地服务器,打开一个身份验证URL,并在您授权后保存令牌。
所需的OAuth作用域:
https://www.googleapis.com/auth/gmail.modifyhttps://www.googleapis.com/auth/gmail.settings.basichttps://www.googleapis.com/auth/gmail.settings.sharinghttps://www.googleapis.com/auth/drivehttps://www.googleapis.com/auth/calendarhttps://www.googleapis.com/auth/contactshttps://www.googleapis.com/auth/taskshttps://www.googleapis.com/auth/documentshttps://www.googleapis.com/auth/spreadsheetshttps://www.googleapis.com/auth/presentations
5.保存代币
mkdir -p ~/.google-mcp
# Tokens are automatically saved to ~/.google-mcp/credentials.json by reauth.js
测试
运行全面的测试套件(测试所有240个工具):
GOOGLE_CLIENT_ID=your-id GOOGLE_CLIENT_SECRET=your-secret node test-all.js
项目结构
google-mcp-server/
index.js # Server entry point, registers all tool modules
auth.js # OAuth 2.0 client, token management, Secret Manager fallback
reauth.js # OAuth re-authorization helper
test-all.js # Comprehensive test suite for all 240 tools
tools/
gmail.js # 75 Gmail tools
drive.js # 47 Google Drive tools
docs.js # 7 Google Docs tools
slides.js # 8 Google Slides tools
calendar.js # 30 Google Calendar tools
extras.js # 36 tools: Contacts (22), Tasks (14), Sheets (17 - in sheets section)
package.json
安全
- 没有硬编码凭据 --所有秘密都通过环境变量
- 本地存储的令牌 --除了谷歌的OAuth API,从未传输过
- 自动令牌刷新 --过期的令牌以静默方式刷新
- 秘密管理员回退 --可选择将令牌存储在Google Cloud Secret Manager中以增强弹性
- 仅限标准运输 --没有暴露的网络服务器
- 令牌文件解析 包裹在试抓中,增强韧性
依赖项
| 包装 | 用途 |
|---|---|
@modelcontextprotocol/sdk |
MCP服务器框架 |
googleapis |
官方Google API客户端 |
zod |
工具参数的模式验证 |
许可证
麻省理工学院