谷歌工作区mcp-go
轻量级Go实现 谷歌工作区MCP服务器 --12个谷歌服务中的137个工具,单个自包含的二进制文件,专为本地人工智能工具使用而设计。
为什么存在
这 原始Python服务器 功能齐全,可投入生产,支持多用户OAuth 2.1、HTTP传输和分布式会话存储。这是共享/托管部署的正确选择。
这种Go重写适用于不同的用例: 单用户、本地AI工具使用 --特别是在您的计算机上运行的Claude Code、Cursor和类似的MCP客户端。如果你想用最少的内存使用和没有Python运行时开销的Google Workspace集成,这是为你准备的。
| Python(原始) | Go(此仓库) | |
|---|---|---|
| 工具 | 137 | 137 |
| 二进制文件/安装大小 | Python+virtualenv+deps | 27MB单个二进制文件 |
| 启动时间 | ~3s(测量的) | ~10ms(测量的) |
| 运行时要求 | Python 3.10+,uv/pip | 无 |
| 传输 | stdio,可流式传输HTTP | stdio |
| 认证 | OAuth 2.0+OAuth 2.1 | OAuth 2.0 |
| 多用户 | 是(会话管理,Valkey) | 否(单用户) |
| HTTP服务器模式 | 是 | 否 |
如果满足以下条件,请使用Go版本:您在本地以Claude Code或类似方式运行MCP工具,希望低内存使用率,并且不需要多用户或HTTP服务器模式。
如果满足以下条件,请使用Python版本:您需要多用户支持、OAuth 2.1、HTTP传输或托管/容器化部署。
快速开始
1.谷歌云项目设置
您需要一个具有OAuth凭据的Google Cloud项目。如果您已经使用过 原始Python服务器,同样的凭据在这里也适用。
创建OAuth凭据:
- 去 Google 云控制台
- 创建新项目(或选择现有项目)
- 引导到 API和服务>OAuth同意屏幕 如果您还没有配置它,请进行配置
- 引导到 API和服务>凭据
- 点击 创建凭据>OAuth客户端ID
- 选择 桌面应用程序 作为应用程序类型
- 注意 客户端ID 和 客户端密钥
启用API 您需要(单击直接启用):
- Gmail API
- Google Drive API
- 谷歌日历API
- 谷歌文档API
- 谷歌网页API
- 谷歌幻灯片API
- 谷歌表单API
- 谷歌任务API
- 谷歌聊天API
- 人民API(联系人)
- 应用程序脚本API
- 自定义搜索API *(可选,用于网络搜索工具)*
您只需要为计划使用的服务启用API。例如,如果你只需要Gmail和日历,只需启用这两个。
2.安装
下载预构建的二进制文件 (无需Go):
去 发布 页面并下载适用于您平台的存档:
| 平台 | 文件 |
|---|---|
| Linux(x86_64) | google-workspace-mcp-go_*_linux_amd64.tar.gz |
| Linux(ARM64) | google-workspace-mcp-go_*_linux_arm64.tar.gz |
| macOS(苹果硅) | google-workspace-mcp-go_*_darwin_arm64.tar.gz |
| macOS(英特尔) | google-workspace-mcp-go_*_darwin_amd64.tar.gz |
| Windows(x86_64) | google-workspace-mcp-go_*_windows_amd64.zip |
# Example: Linux x86_64
tar xzf google-workspace-mcp-go_*_linux_amd64.tar.gz
chmod +x google-workspace-mcp-go
mv google-workspace-mcp-go ~/.local/bin/ # or anywhere on your PATH或使用Go安装 (需要Go 1.24+):
go install github.com/magks/google-workspace-mcp-go@latest这将二进制文件放入您的 $GOPATH/bin (通常 ~/go/bin).
或从源代码构建:
git clone https://github.com/magks/google-workspace-mcp-go.git
cd google-workspace-mcp-go
go build -o google-workspace-mcp-go .3.配置环境
export GOOGLE_OAUTH_CLIENT_ID="your-client-id.apps.googleusercontent.com"
export GOOGLE_OAUTH_CLIENT_SECRET="your-client-secret"
export USER_GOOGLE_EMAIL="you@gmail.com" # optional but recommended您可以将这些添加到您的shell配置文件中(~/.bashrc, ~/.zshrc等等),因此它们在会话中持续存在。
4.添加到克劳德代码
二进制文件从环境变量中读取配置。如果你已经有了 GOOGLE_OAUTH_CLIENT_ID, GOOGLE_OAUTH_CLIENT_SECRET,以及 USER_GOOGLE_EMAIL 导出到运行Claude Code的shell中,您不需要在MCP配置中重复它们——二进制文件会自动拾取它们。
最小配置 (env变量已导出到shell中):
{
"mcpServers": {
"google-workspace": {
"command": "/path/to/google-workspace-mcp-go"
}
}
}显式配置 (每个服务器设置环境变量,如果您不想全局导出,这很有用):
{
"mcpServers": {
"google-workspace": {
"command": "/path/to/google-workspace-mcp-go",
"env": {
"GOOGLE_OAUTH_CLIENT_ID": "your-client-id.apps.googleusercontent.com",
"GOOGLE_OAUTH_CLIENT_SECRET": "your-client-secret",
"USER_GOOGLE_EMAIL": "you@gmail.com"
}
}
}
}要减少加载的工具数量(有助于保持在上下文限制内),请使用 --tools 和 --tool-tier:
{
"mcpServers": {
"google-workspace": {
"command": "/path/to/google-workspace-mcp-go",
"args": ["--tools", "gmail drive calendar", "--tool-tier", "core"]
}
}
}5.首次运行--身份验证
首次使用时,您需要向Google进行身份验证:
- 让你的人工智能助手呼叫
start_google_auth工具与您的电子邮件 - 浏览器窗口打开,显示谷歌的OAuth同意屏幕
- 授权请求的权限
- 凭据保存到
~/.google_workspace_mcp/credentials/your-email.json - 后续运行会自动使用保存的凭据(令牌透明刷新)
注:start_google_auth需要gmail在你的--tools列出(或省略--tools加载所有服务)。如果您使用的是没有gmail的受限工具集,请临时添加它进行初始身份验证。
配置
CLI标志
| 标志 | 描述 | 默认值 |
|---|---|---|
--tools | 以空格分隔的服务列表(例如。 gmail drive calendar) | 全部 |
--tool-tier | 工具层: core, extended,或 complete | complete |
--read-only | 启用只读模式(禁用所有写入工具) | false |
环境变量
| 变量 | 必填 | 描述 |
|---|---|---|
GOOGLE_OAUTH_CLIENT_ID | 是 | 来自谷歌云控制台的OAuth 2.0客户端ID |
GOOGLE_OAUTH_CLIENT_SECRET | 是 | OAuth 2.0客户端密码 |
USER_GOOGLE_EMAIL | 否 | 默认电子邮件(避免每次工具调用都需要它) |
WORKSPACE_MCP_CREDENTIALS_DIR | 否 | 自定义凭据存储目录 |
GOOGLE_PSE_API_KEY | 否 | 谷歌可编程搜索引擎API密钥 |
GOOGLE_PSE_ENGINE_ID | 否 | 谷歌可编程搜索引擎ID |
工具层级
层级允许您控制注册的工具数量,这会影响AI助手中的上下文窗口使用情况:
| 层级 | 描述 | 工具数量 |
|---|---|---|
core | 每次服务的基本读/写工具 | ~45 |
extended | 核心+高级管理工具 | ~95 |
complete | 所有工具(默认) | 137 |
可用服务
gmail drive calendar docs sheets slides forms tasks chat contacts search appscript
工具
Full tool reference (137 tools across 12 services)
Gmail(15个工具)
| 工具 | 层级 | 描述 |
|---|---|---|
search_gmail_messages | core | 使用Gmail查询语法搜索邮件 |
get_gmail_message_content | core | 获取完整的消息内容 |
get_gmail_messages_content_batch | core | 批量检索最多25条消息 |
send_gmail_message | core | 发送带有可选附件的电子邮件 |
get_gmail_attachment_content | 扩展 | 下载附件内容 |
get_gmail_thread_content | extended | 获取完整的对话线索 |
modify_gmail_message_labels | extended | 添加/删除邮件标签 |
list_gmail_labels | extended | 列出所有标签 |
manage_gmail_label | extended | 创建、更新或删除标签 |
draft_gmail_message | 扩展 | 创建电子邮件草稿 |
list_gmail_filters | extended | 列出邮件筛选器 |
create_gmail_filter | extended | 创建新邮件筛选器 |
delete_gmail_filter | extended | 删除邮件筛选器 |
get_gmail_threads_content_batch | complete | 批量检索最多25个线程 |
batch_modify_gmail_message_labels | 完成 | 批量标签操作 |
系统工具 (已在gmail上注册,但并非特定于gmail):
| 工具 | 层级 | 描述 |
|---|---|---|
start_google_auth | 完成 | 触发OAuth身份验证流 |
谷歌云端硬盘(16个工具)
| 工具 | 层级 | 描述 |
|---|---|---|
search_drive_files | core | 使用驱动器查询语法搜索文件 |
get_drive_file_content | core | 下载文件内容 |
get_drive_file_download_url | core | 获取下载URL |
create_drive_file | core | 创建新文件 |
import_to_google_doc | core | 将文件导入为Google文档 |
share_drive_file | core | 与用户共享文件 |
get_drive_shareable_link | core | 生成可共享链接 |
list_drive_items | extended | 列出文件夹中的文件 |
copy_drive_file | 扩展 | 重复文件 |
update_drive_file | 扩展 | 更新文件元数据/内容 |
update_drive_permission | 扩展 | 修改共享权限 |
remove_drive_permission | 扩展 | 撤销访问 |
transfer_drive_ownership | 扩展 | 转移文件所有权 |
batch_share_drive_file | 扩展 | 批共享 |
get_drive_file_permissions | complete | 列出所有权限 |
check_drive_file_public_access | 完成 | 检查公共共享状态 |
谷歌日历(6个工具)
| 工具 | 层级 | 描述 |
|---|---|---|
list_calendars | core | 列出用户的日历 |
get_events | core | 获取具有时间范围的事件 |
create_event | core | 创建日历事件 |
modify_event | core | 更新事件详细信息 |
delete_event | extended | 删除事件 |
query_freebusy | 扩展 | 检查可用性 |
谷歌文档(19个工具)
| 工具 | 层级 | 描述 |
|---|---|---|
get_doc_content | core | 获取文档文本内容 |
create_doc | core | 创建新文档 |
modify_doc_text | core | 编辑文档文本 |
export_doc_to_pdf | 扩展 | 导出为PDF |
search_docs | 扩展 | 搜索文档 |
find_and_replace_doc | extended | 查找和替换文本 |
list_docs_in_folder | extended | 列出Drive文件夹中的文档 |
insert_doc_elements | extended | 插入格式化元素 |
update_paragraph_style | 扩展 | 更改段落格式 |
insert_doc_image | 完成 | 插入图像 |
update_doc_headers_footers | complete | 编辑页眉/页脚 |
batch_update_doc | 完成 | 批量文档操作 |
inspect_doc_structure | 完成 | 分析文档结构 |
create_table_with_data | complete | 创建并填充表 |
debug_table_structure | 完成 | 检查表格布局 |
read_document_comments | 完成 | 阅读所有评论 |
create_document_comment | 完成 | 添加评论 |
reply_to_document_comment | 完成 | 回复评论 |
resolve_document_comment | 完成 | 解决评论 |
谷歌表格(14个工具)
| 工具 | 层级 | 描述 |
|---|---|---|
create_spreadsheet | core | 创建新的电子表格 |
read_sheet_values | core | 读取单元格值 |
modify_sheet_values | core | 写入/更新单元格 |
list_spreadsheets | extended | 列出用户的电子表格 |
get_spreadsheet_info | extended | 获取电子表格元数据 |
create_sheet | 完成 | 添加工作表选项卡 |
format_sheet_range | complete | 设置单元格范围的格式 |
add_conditional_formatting | complete | 添加条件格式规则 |
update_conditional_formatting | complete | 修改格式规则 |
delete_conditional_formatting | complete | 删除格式规则 |
read_spreadsheet_comments | 完成 | 阅读所有评论 |
create_spreadsheet_comment | 完成 | 添加评论 |
reply_to_spreadsheet_comment | 完成 | 回复评论 |
resolve_spreadsheet_comment | 完成 | 解决评论 |
谷歌幻灯片(9个工具)
| 工具 | 层级 | 描述 |
|---|---|---|
create_presentation | core | 创建演示文稿 |
get_presentation | core | 获取演示文稿内容 |
batch_update_presentation | 扩展 | 批量幻灯片操作 |
get_page | 扩展 | 获取个人幻灯片 |
get_page_thumbnail | 扩展 | 获取幻灯片缩略图 |
read_presentation_comments | 完成 | 阅读所有评论 |
create_presentation_comment | 完成 | 添加评论 |
reply_to_presentation_comment | 完成 | 回复评论 |
resolve_presentation_comment | 完成 | 解决评论 |
谷歌表单(6个工具)
| 工具 | 层级 | 描述 |
|---|---|---|
create_form | core | 创建新表单 |
get_form | core | 获取表单详细信息 |
list_form_responses | extended | 列出所有回复 |
set_publish_settings | 完成 | 配置发布 |
get_form_response | 完成 | 获取个人回复 |
batch_update_form | 完成 | 批量表单更新 |
谷歌任务(12个工具)
| 工具 | 层级 | 描述 |
|---|---|---|
get_task | core | 获取任务详细信息 |
list_tasks | 核心 | 列出任务 |
create_task | core | 创建任务 |
update_task | core | 更新任务 |
delete_task | 扩展 | 删除任务 |
list_task_lists | complete | 列出任务列表 |
get_task_list | complete | 获取任务列表详细信息 |
create_task_list | 完成 | 创建任务列表 |
update_task_list | 完成 | 更新任务列表 |
delete_task_list | 完成 | 删除任务列表 |
move_task | complete | 在列表之间移动任务 |
clear_completed_tasks | complete | 清除已完成的任务 |
谷歌聊天(4工具)
| 工具 | 层级 | 描述 |
|---|---|---|
send_message | core | 发送聊天消息 |
get_messages | core | 获取消息 |
search_messages | 核心 | 搜索消息 |
list_spaces | extended | 列出空格/DM |
谷歌联系人(15个工具)
| 工具 | 层级 | 描述 |
|---|---|---|
search_contacts | 核心 | 搜索联系人 |
get_contact | core | 获取联系方式 |
list_contacts | 核心 | 列出联系人 |
create_contact | core | 创建联系人 |
update_contact | 扩展 | 更新联系人 |
delete_contact | 扩展 | 删除联系人 |
list_contact_groups | extended | 列出联系人组 |
get_contact_group | extended | 获取组详细信息 |
batch_create_contacts | 完成 | 批量创建 |
batch_update_contacts | 完成 | 批量更新 |
batch_delete_contacts | 完成 | 批量删除 |
create_contact_group | 完成 | 创建组 |
update_contact_group | 完成 | 更新组 |
delete_contact_group | 完成 | 删除组 |
modify_contact_group_members | 完成 | 管理组成员 |
谷歌自定义搜索(3个工具)
| 工具 | 层级 | 描述 |
|---|---|---|
search_custom | core | 可编程搜索引擎查询 |
search_custom_siterestrict | 扩展 | 网站限制搜索 |
get_search_engine_info | complete | 获取搜索引擎配置 |
谷歌应用脚本(17个工具)
| 工具 | 层级 | 描述 |
|---|---|---|
list_script_projects | core | 列出用户的脚本 |
get_script_project | core | 获取脚本元数据 |
get_script_content | core | 获取脚本源代码 |
create_script_project | core | 创建新脚本 |
update_script_content | core | 更新脚本代码 |
run_script_function | core | 执行脚本函数 |
generate_trigger_code | core | 生成触发代码 |
create_deployment | 扩展 | 部署脚本 |
list_deployments | 扩展 | 列出部署 |
update_deployment | 扩展 | 更新部署 |
delete_deployment | extended | 删除部署 |
delete_script_project | 扩展 | 删除脚本 |
list_versions | 扩展 | 列出版本 |
create_version | 扩展 | 创建版本 |
get_version | extended | 获取版本详细信息 |
list_script_processes | extended | 列出正在运行的进程 |
get_script_metrics | extended | 获取脚本指标 |
凭据存储
凭据以JSON文件存储在 ~/.google_workspace_mcp/credentials/ (可通过以下方式配置 WORKSPACE_MCP_CREDENTIALS_DIR).每个文件都有名称 {email}.json 并且包含OAuth2令牌。
凭据目录是通过以下方式创建的 0700 权限。个人凭据文件是通过以下方式创建的 0600 权限。
测试
# Run all tests (~1100 tests, takes ~1 second)
go test ./...
# Run with verbose output
go test -v ./...
# Run tests for a specific service
go test ./tools/ -run TestGmail
go test ./tools/ -run TestDrive
# Run integration tests against real Google APIs (requires credentials)
INTEGRATION_TEST_EMAIL="you@gmail.com" go test -tags integration ./tools/测试套件有三层,不需要网络访问(集成除外):
- 单元测试 --用于格式化、解析和辅助逻辑的纯函数测试
- 协议测试 --发送MCP
tools/call通过服务器发送消息,验证参数验证和错误路径 - 模拟API测试 --完整的处理程序管道
httptest.Server返回罐装的Google API响应
集成测试在后面进行 integration 生成标签并在以下情况下自动跳过 INTEGRATION_TEST_EMAIL 未设置。
局限性
- 仅限stdio传输 --无HTTP服务器模式(使用 Python版本 为此)
- 单用户 --无多用户会话管理或OAuth 2.1
- 无附件服务 --没有用于文件下载的HTTP端点
- 仅限本地使用 --专为本地MCP客户端设计,而非托管部署
