Token导航 LogoToken导航TokenDH.com
Google Docs MCP logo
开发工具stdio官方级别未说明来源级核验

Google Docs MCP

MCP Server

@a-bonus/google-docs-mcp

Google Docs MCP is an MCP server (primarily for use in Claude Desktop) that gains full access to your google docs and allows claude to make direct edits and formatting. Use cases include writing notes, letters, resumes, creating tables, etc.

工具数

78

提示词数

0

GitHub Stars

535

资源数

0
TypeScriptClaude日程管理Claude DesktopClaudeCursor

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

a-bonus

提供方

a-bonus

最后核验

2026/5/18 04:06

运行时

Node.js

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

npx -y @a-bonus/google-docs-mcp auth

详细介绍

谷歌文档、表格、驱动器、Gmail和日历MCP服务器

Demo Animation

将Claude Desktop、Cursor或任何MCP客户端连接到您的Google文档、Google表格、Google云端硬盘、Gmail和Google日历。

______________________________________________________________________

快速开始

1.创建Google Cloud OAuth客户端

  1. 谷歌云控制台
  2. 创建或选择项目
  3. 启用 谷歌文档API, 谷歌网页API, Google Drive API, Gmail API,以及 谷歌日历API
  4. 配置 OAuth同意屏幕 (外部,将您的电子邮件添加为测试用户,并添加 gmail.modifycalendar.events 文档/表格/驱动器范围旁边的范围)
  5. 创建一个 OAuth客户端ID (桌面应用程序类型)
  6. 复制 客户端ID客户端密钥 从确认屏幕
需要更多细节吗?看 逐步说明 在本页底部。

2.授权

GOOGLE_CLIENT_ID="your-client-id" \
GOOGLE_CLIENT_SECRET="your-client-secret" \
npx -y @a-bonus/google-docs-mcp auth

这将打开您的浏览器进行谷歌授权。批准后,刷新令牌将保存到 ~/.config/google-docs-mcp/token.json.

3.添加到您的MCP客户端

克劳德桌面/光标/风帆:

{
  "mcpServers": {
    "google-docs": {
      "command": "npx",
      "args": ["-y", "@a-bonus/google-docs-mcp"],
      "env": {
        "GOOGLE_CLIENT_ID": "your-client-id",
        "GOOGLE_CLIENT_SECRET": "your-client-secret"
      }
    }
  }
}

当您的MCP客户端需要时,服务器会自动启动。

远程部署(云运行)

为您的团队部署一次,无需本地安装。服务器使用MCP OAuth 2.1,因此您的MCP客户端会自动处理身份验证。

gcloud run deploy google-docs-mcp \
  --source . \
  --region europe-west3 \
  --port 8080 \
  --allow-unauthenticated \
  --set-env-vars "^|^MCP_TRANSPORT=httpStream|BASE_URL=https://your-service.run.app|GOOGLE_CLIENT_ID=...|GOOGLE_CLIENT_SECRET=...|TOKEN_STORE=firestore|JWT_SIGNING_KEY=your-secret-key"

然后,每个用户只需将URL添加到他们的MCP客户端即可——无npx、无令牌、无本地设置:

{
  "mcpServers": {
    "google-docs": {
      "type": "streamableHttp",
      "url": "https://your-service.run.app/mcp"
    }
  }
}

您的MCP客户端将在第一次连接时提示Google登录。看 远程部署 了解详情。

______________________________________________________________________

它能做什么?

跨Google文档、表格和驱动器的工具:

谷歌文件

工具说明
readDocument以纯文本、JSON或markdown格式读取内容
appendText在文档中添加文本
insertText在特定位置插入文本
deleteRange按索引范围删除内容
modifyText替换、添加或转换文档中的文本
findAndReplace在文档中查找和替换文本
listTabs列出多选项卡文档中的所有选项卡
addTab向文档添加新选项卡
renameTab重命名文档选项卡
replaceDocumentWithMarkdown替换markdown中的整个文档内容
replaceRangeWithMarkdown用降价内容替换特定范围
appendMarkdown附加markdown格式的内容
applyTextStyle粗体、斜体、颜色、字体大小、链接
applyParagraphStyle对齐、间距、压痕
insertTable创建空表
insertTableWithData创建预先填充数据的表
insertPageBreak插入分页符
insertSectionBreak插入分节符(NEXT_PAGE或CONTINUOUS)
updateSectionStyle更新剖面样式:翻转方向、边距
insertImage从URL或本地文件插入图像

评论

工具说明
listComments查看所有带有作者和日期的评论
getComment获取带有回复的特定评论
addComment创建锚定到文本的评论
replyToComment对现有评论的回复
resolveComment将评论标记为已解决
deleteComment删除评论

谷歌表格

工具说明
readSpreadsheet从范围读取数据(A1表示法)
writeSpreadsheet将数据写入范围
batchWrite在一次调用中写入多个范围
appendRows向工作表添加行
clearRange清除单元格值
createSpreadsheet创建新的电子表格
addSheet添加工作表/选项卡
deleteSheet删除工作表/选项卡
duplicateSheet在同一电子表格中复制工作表
copySheetTo将工作表复制到另一个电子表格中
renameSheet重命名图纸/选项卡
getSpreadsheetInfo获取元数据和工作表列表
listSpreadsheets查找电子表格
formatCells粗体、颜色、对齐、垂直对齐、范围包裹策略
copyFormatting将格式从一个区域复制到另一个区域
readCellFormat读取单元格区域的格式详细信息
setCellBorders按样式和颜色设置每侧边框(顶部/底部/左侧/右侧/内部)
freezeRowsAndColumns引脚标题行/列
setDropdownValidation在单元格上添加/删除下拉列表
setColumnWidths以像素为单位设置列宽
setRowHeights设置行高(像素)
autoResizeColumns根据内容自动调整列宽
autoResizeRows根据内容自动调整行高
protectRange锁定一个范围或整个工作表(仅警告或完全锁定)
addConditionalFormatting添加条件格式规则
getConditionalFormatting列出条件格式规则及其索引(JSON)
deleteConditionalFormatting按索引删除条件格式规则
groupRows将可折叠部分的行分组
ungroupAllRows删除所有行分组
insertChart从数据创建图表
deleteChart删除图表

谷歌表格

工具说明
createTable使用列类型创建新的命名表
listTables列出电子表格或工作表中的所有表
getTable按名称或ID获取详细的表元数据
deleteTable删除表(可选清除数据)
updateTableRange修改表维度(添加/删除行/列)
appendTableRows将行追加到表中(表感知插入)

Google 云端硬盘

工具说明
listDocuments列出文档,可选择按日期筛选
searchDocuments按名称或内容搜索
getDocumentInfo获取文档元数据
createDocument创建新文档
createDocumentFromTemplate从现有模板创建
createFolder创建文件夹
listFolderContents列出文件夹内容
getFolderInfo获取文件夹元数据
moveFile将文件移动到另一个文件夹
copyFile复制文件
renameFile重命名文件
deleteFile移至垃圾箱或永久删除
listDriveFiles使用筛选器列出驱动器中的任何文件类型
searchDriveFiles按名称或内容搜索所有驱动器文件
downloadFile下载文件内容

Gmail

工具说明
listMessages使用Gmail查询语法列出或搜索邮件(is:unread, from:, newer_than:等等)
getMessage获取具有解码标头、纯文本正文、HTML正文和附件元数据的单个邮件
sendEmail发送一封纯文本电子邮件。支持cc/bcc和线程回复 replyToMessageId
trashMessage将邮件移动到废纸篓(可逆,与在Gmail UI中单击“删除”相同)
modifyMessageLabels添加或删除邮件上的标签——用于加星、存档(删除 INBOX),标记为已读(删除 UNREAD)
listLabels列出所有系统和自定义标签及其ID
createDraft撰写草稿而不是立即发送——用于撰写/审阅/发送工作流
listDrafts列出包含收件人、主题和片段的现有草稿
getDraft获取一个包含完整页眉和正文的草稿
updateDraft替换现有草稿的内容(完全替换,而不是补丁)
sendDraft按ID发送现有草稿
deleteDraft永久删除草稿(未移至废纸篓--已删除)
triageInbox混合成的: 获取包含内容和启发式标记(新闻稿、会议、行动)的未读邮件,以便进行一次性收件箱分类

谷歌日历

工具说明
listEvents列出或搜索事件 q, timeMin, timeMax, maxResults (默认为主日历)
createEvent创建一个包含标题、开始/结束、描述、位置、与会者、可选谷歌会议链接的活动
updateEventPATCH样式更新——只有您传递的字段会更改。用于重新安排、重新命名、更改与会者
deleteEvent永久删除事件。可选的 sendUpdates 向与会者发送取消电子邮件
quickAddEvent自然语言事件创建: "Lunch with Sarah tomorrow 12pm" --谷歌解析其余部分

______________________________________________________________________

使用示例

谷歌文件

"Read document ABC123 as markdown"
"Append 'Meeting notes for today' to document ABC123"
"Make the text 'Important' bold and red in document ABC123"
"Replace the entire document with this markdown: # Title\n\nNew content here"
"Insert a 3x4 table at index 50 in document ABC123"

谷歌表格

"Read range A1:D10 from spreadsheet XYZ789"
"Write [[Name, Score], [Alice, 95], [Bob, 87]] to range A1 in spreadsheet XYZ789"
"Create a new spreadsheet titled 'Q1 Report'"
"Format row 1 as bold with a light blue background in spreadsheet XYZ789"
"Freeze the first row in spreadsheet XYZ789"
"Add a dropdown with options [Open, In Progress, Done] to range C2:C100"
"Create a table named 'Tasks' in range A1:D10 with columns: Task (TEXT), Status (DROPDOWN: 'Not Started','In Progress','Done'), Priority (NUMBER)"
"Add a medium solid border around A1:D10 in spreadsheet XYZ789"
"Protect the header row so collaborators can't accidentally edit it"
"Auto-fit row heights for rows 2–50 after wrapping text"

Google 云端硬盘

"List my 10 most recent Google Docs"
"Search for documents containing 'project proposal'"
"Create a folder called 'Meeting Notes' and move document ABC123 into it"

Gmail

"Show me my 20 most recent unread emails"
"Search Gmail for messages from alice@example.com in the last 7 days"
"Read the full body of message ID 18c3f4a2b1d9"
"Send an email to bob@example.com with the subject 'Weekly update' and this body..."
"Reply to message 18c3f4a2b1d9 with 'Thanks, confirmed.'"
"Star message 18c3f4a2b1d9 and archive it"
"Move message 18c3f4a2b1d9 to Trash"
"List all my Gmail labels"
"Draft a reply to that email but don't send it yet — let me review first"
"Show me my drafts, then send the one to bob@"
"Triage my unread inbox: tell me which 20 emails need attention and which are noise"

谷歌日历

"What's on my calendar this week?"
"Create an event titled 'Project review' tomorrow from 2pm to 3pm Pacific time"
"Quick add: lunch with Alex Friday 12:30"
"Reschedule event abc123 to next Monday at 10am"
"Delete the 'Standup' event tomorrow"
"List all events on my calendar between April 15 and April 22"
"Schedule a 30-minute meeting with bob@example.com next Wednesday at 11am with a Google Meet link"

Markdown工作流

服务器支持完整的往返降价工作流:

  1. 以markdown方式阅读文档: readDocument 随着 format='markdown'
  2. 在本地编辑标记
  3. 将更改推回: replaceDocumentWithMarkdown

支持:标题、粗体、斜体、删除线、链接、项目符号/编号列表、水平规则。

实时文档验证

该存储库包括一个选择加入的实时集成测试 cloneTable 与真正的谷歌文档API相比。默认情况下会跳过它。

要求:

  • 有效的 GOOGLE_CLIENT_IDGOOGLE_CLIENT_SECRET
  • 已通过存储的授权令牌 npx -y @a-bonus/google-docs-mcp auth

运行它:

GOOGLE_DOCS_LIVE_TESTS=1 npm run test:live:docs

此测试创建临时源/目标Google文档,验证 cloneTable,然后删除测试文件。

______________________________________________________________________

远程部署

将服务器集中部署在Google Cloud Run(或任何容器主机)上,这样您的团队就可以在不进行本地安装的情况下使用它。服务器使用 MCP OAuth 2.1 内置FastMCP GoogleProvider --MCP客户端自动处理身份验证流。

访问服务器根URL(/)获取设置说明和可复制的客户端配置。

环境变量

变量描述
MCP_TRANSPORT设置为 httpStream 启用远程模式(默认: stdio)
BASE_URL部署服务器的公共URL(OAuth重定向所需)
GOOGLE_CLIENT_IDOAuth客户端ID(Web应用程序类型)
GOOGLE_CLIENT_SECRETOAuth客户端密钥
MCP_TOOL_GROUPS要注册的可选逗号分隔工具组: docs, drive, sheets, utils, gmail, calendar,或 all
ALLOWED_DOMAINS允许的Google Workspace域的逗号分隔列表(可选)
PORTHTTP端口(默认值: 8080)
TOKEN_STORE设置为 firestore 用于持久令牌存储(默认:在内存中)
JWT_SIGNING_KEY修复了签名密钥,使令牌在重启后仍然有效(如果未设置,则自动生成)
REFRESH_TOKEN_TTL刷新令牌生存期(秒)(默认值: 2592000 /30天)
GCLOUD_PROJECTFirestore的GCP项目ID(需要时 TOKEN_STORE=firestore)

设置

  1. 创建GCP项目并启用文档、表格和驱动器API
  2. 创建OAuth客户端(Web应用程序 类型,而非桌面)
  3. 将授权重定向URI设置为 {BASE_URL}/oauth/callback
  4. 部署到云运行:
gcloud run deploy google-docs-mcp \
  --source . \
  --region europe-west3 \
  --port 8080 \
  --allow-unauthenticated \
  --set-env-vars "^|^MCP_TRANSPORT=httpStream|BASE_URL=https://your-service.run.app|ALLOWED_DOMAINS=yourdomain.com|GOOGLE_CLIENT_ID=...|GOOGLE_CLIENT_SECRET=...|TOKEN_STORE=firestore|JWT_SIGNING_KEY=your-secret-key"
注:^|^ 前缀更改了env-var分隔符 ,| 因为 ALLOWED_DOMAINS 包含逗号。

运作原理

  • 默认情况下,OAuth会话存储在内存中,并在重新启动时丢失
  • 对于生产,设置 TOKEN_STORE=firestoreJWT_SIGNING_KEY 用于跨部署和冷启动的持久身份验证
  • ALLOWED_DOMAINS 限制对特定Google Workspace域的访问
  • 访问令牌自动刷新;非活动会话将在30天后过期
  • 用户可以随时通过以下方式撤销访问权限 Google帐户权限

更新部署

将更改合并到 main 自动更新您的Cloud Run服务。每个部署都是独立的——当你想要新功能或修复时,你需要手动重新部署。

要更新,请执行以下操作:

  1. 提取最新代码:
   git pull origin main
  1. 重新部署到云运行:
   gcloud run deploy your-service-name --source . --region your-region

您现有的环境变量将被保留,无需传递 --set-env-vars 再一次。

何时重新部署:

  • Bug修复和安全补丁 --尽快重新部署
  • 新功能 --在您方便的时候重新部署
  • 重大变更 --重新部署前检查发行说明

您可以在 发布页面.

______________________________________________________________________

身份验证选项

OAuth(默认)

将您的Google Cloud OAuth客户端凭据作为环境变量传递:

变量描述
GOOGLE_CLIENT_ID来自Google Cloud控制台的OAuth客户端ID
GOOGLE_CLIENT_SECRET来自Google Cloud控制台的OAuth客户端密钥

服务帐户(企业)

对于具有域范围委派的Google Workspace:

变量描述
SERVICE_ACCOUNT_PATH服务帐户JSON密钥文件的路径
GOOGLE_IMPERSONATE_USER要模拟的用户的电子邮件(可选)
{
  "mcpServers": {
    "google-docs": {
      "command": "npx",
      "args": ["-y", "@a-bonus/google-docs-mcp"],
      "env": {
        "SERVICE_ACCOUNT_PATH": "/path/to/service-account-key.json",
        "GOOGLE_IMPERSONATE_USER": "user@yourdomain.com"
      }
    }
  }
}

令牌存储

OAuth刷新令牌存储在 ~/.config/google-docs-mcp/token.json (尊重 XDG_CONFIG_HOME).OAuth客户端ID和客户端机密不存储在令牌文件中。要重新授权,请运行 auth 再次执行命令或删除令牌文件。

多个Google帐户

GOOGLE_MCP_PROFILE 将令牌存储在特定于配置文件的子目录中。这允许为不同的项目使用不同的Google帐户:

变量描述
GOOGLE_MCP_PROFILE隔离令牌存储的配置文件名称(可选)
{
  "mcpServers": {
    "google-docs": {
      "command": "npx",
      "args": ["-y", "@a-bonus/google-docs-mcp"],
      "env": {
        "GOOGLE_CLIENT_ID": "...",
        "GOOGLE_CLIENT_SECRET": "...",
        "GOOGLE_MCP_PROFILE": "work"
      }
    }
  }
}

令牌按配置文件存储:

~/.config/google-docs-mcp/
├── token.json              # default (no profile)
├── work/token.json         # GOOGLE_MCP_PROFILE=work
├── personal/token.json     # GOOGLE_MCP_PROFILE=personal

没有 GOOGLE_MCP_PROFILE,行为不变。

______________________________________________________________________

已知限制

  • 评论锚定: 程序化创建的评论会出现在评论列表中,但不会明显地锚定在Google Docs UI中的文本上。这是Google Drive API的限制。
  • 评论决议: 已解决状态可能不会在Google Docs UI中持续存在。
  • 转换文件: 从Word转换的文档可能不支持所有API操作。
  • Markdown表格/图片: 在markdown到Docs的转换中尚不支持。
  • 深度嵌套列表: 具有3个以上嵌套级别的列表可能会有格式怪癖。
  • Gmail硬删除: trashMessage 将邮件移动到废纸篓(可逆)。永久删除需要更广泛的 https://mail.google.com/ 在v0.1中没有公开。
  • Gmail附件: getMessage 返回附件元数据,但尚未下载附件字节。
  • Gmail HTML电子邮件发送: sendEmail 仅发送纯文本。对于HTML正文,将HTML粘贴到 body 字段——它将作为文本交付,而不是呈现。
  • 日历范围: calendar.events 允许对现有日历进行事件CRUD,但不能创建或删除整个日历本身。
  • 日历定期事件: updateEventdeleteEvent 修改整个重复序列,除非您以返回的特定实例ID为目标 listEvents 随着 singleEvents=true.

故障排除

  • 服务器无法启动:

- 验证 GOOGLE_CLIENT_IDGOOGLE_CLIENT_SECRET 设置在 env MCP配置块。 - 尝试手动运行: npx @a-bonus/google-docs-mcp 并检查stderr是否有错误。

  • 授权错误:

- 确保在Google Cloud Console中启用了文档、表格、驱动器、Gmail和日历API。 - 确认您的电子邮件在OAuth同意屏幕上被列为测试用户,并且所有必需的范围(文档、表格、驱动器、, gmail.modify, calendar.events)被添加到同意屏幕。 - 重新授权: npx @a-bonus/google-docs-mcp auth - 删除 ~/.config/google-docs-mcp/token.json 如果升级,则重新授权——Gmail和日历范围在以后的版本中添加,因此必须刷新现有的令牌。 - 远程(云运行)用户必须注销并从其MCP客户端重新登录,以便谷歌根据新的范围列表重新发出同意书。

  • 选项卡错误:

- 使用 listTabs 查看可用的选项卡ID。 - 省略 tabId 对于单选项卡文档。

  • OAuth登录期间claude.ai上的“找不到页面”(远程部署):

- 症状:在自定义MCP连接器上单击“连接”会显示在Claude“找不到页面”页面上,而不是谷歌登录屏幕上。 - 原因:云跑冷启动。在容器完成旋转之前,对空闲服务的第一个请求超时,Claude将失败的重定向路由到其404页面。 - 解决方法:硬刷新页面(Cmd+Shift+R 在macOS上, Ctrl+Shift+R 在Windows/Linux上)。第二个请求碰到一个现在很热的实例,OAuth流程正常进行。 - 永久修复:设置 --min-instances=1 在您的Cloud Run服务上保持一个实例始终温暖(gcloud run services update --region --min-instances=1).内存预留费用约为每月2-3美元。

  • 重新部署后意外重新验证(远程部署):

- 原因: JWT_SIGNING_KEY 每次容器启动时都会自动生成,因此重新部署会使所有以前发出的会话无效。 - 修复:设置一个稳定 JWT_SIGNING_KEY Cloud Run服务上的env var,使其在重启后仍能存活: gcloud run services update --region --update-env-vars JWT_SIGNING_KEY=$(openssl rand -hex 32)。此更改后创建的会话将在未来重新部署后继续存在。

  • 具有多个MCP会话的高CPU: 一些客户致电 tools/list 经常。否则,FastMCP会为每个请求上的每个工具重新计算JSON模式,这可以为每个进程固定一个CPU核心。此服务器在stdio启动之前预计算一次有效负载,并替换 tools/list 带有缓存快照的处理程序。如果你仍然看到持续的负载,用 `sample

1 10 (macOS)或 node --cpu-prof` 并报告。

______________________________________________________________________

谷歌云设置详细信息

Step-by-step Google Cloud Console instructions

对于 远程部署,创建类型为的OAuth客户端 Web应用程序 (不是桌面应用程序)。仅将桌面应用程序用于本地stdio使用。
  1. 转到谷歌云控制台: 打开 console.cloud.google.com
  2. 创建或选择项目: 点击项目下拉菜单>“新建项目”。命名它(例如“MCP文档服务器”),然后单击“创建”。
  3. 启用API:

- 导航到“API和服务”>“库” - 搜索并启用: 谷歌文档API, 谷歌网页API, Google Drive API, Gmail API, 谷歌日历API

  1. 配置OAuth同意屏幕:

- 转到“API和服务”>“OAuth同意屏幕” - 选择“外部”并单击“创建” - 填写:应用程序名称、用户支持电子邮件、开发人员联系电子邮件 - 点击“保存并继续” - 添加作用域: documents, spreadsheets, drive, gmail.modify, calendar.events - 点击“保存并继续” - 将您的Google电子邮件添加为测试用户 - 点击“保存并继续”

  1. 创建凭据:

- 转到“API和服务”>“凭据” - 点击“+创建证书”>“OAuth客户端ID” - 应用程序类型:“桌面应用程序” - 点击“创建” - 复制 客户端ID客户端密钥

______________________________________________________________________

贡献

欢迎投稿!看 贡献.md 用于开发设置、架构概述和指南。

许可证

麻省理工学院——见 许可证 了解详情。

目录标签

目录标签

TypeScriptClaude日程管理developer-tools文档编辑混合部署表格管理邮件处理日程安排API集成文档管理

支持客户端

Claude DesktopClaudeCursor

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Node.js

部署方式(deploymentType,部署类型)

remote-capable

来源包(packageName,安装包名)

@a-bonus/google-docs-mcp

工具数量(toolCount,工具数)

78

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiononeremote-capable

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP