Google Drive服务器工具

一个维护中的Google Drive服务器工具,提供OAuth令牌自动刷新、文件读写、搜索下载等功能。

  • by dylancaponi
  • JavaScript
  • 本地部署
  • 22 星标
  • 更新于
在 GitHub 查看 dylancaponi/gdrive-mcp-server

使用说明

Google Drive MCP服务器

Anthropic档案的一个积极维护的分支 @modelcontextprotocol/server-gdrive,修复了OAuth令牌自动刷新的关键错误。

为什么是这个叉子?

原始服务器是 存档于2025年5月29日 并且不再被维护。它还有一个错误,导致OAuth访问令牌在1小时后过期,没有自动刷新,需要手动令牌轮换和服务器重启。

bug: 原创作品 new google.auth.OAuth2() 未通过 client_id 和 client_secret,所以 google-auth-library 无法使用 refresh_token 以获取新的访问令牌。一行修复,但存档的仓库不接受PR。

什么是固定的

  • 自动刷新令牌:OAuth2客户端已初始化为 client_id 和 client_secret 从OAuth密钥文件中,使Google身份验证库能够自动刷新过期的访问令牌
  • 令牌持久性:刷新的令牌会写回凭据文件,因此重新启动也会获取有效的令牌
  • 输入验证:添加了对资源URI、搜索查询和文件ID的验证
  • 搜索结果包括文件ID:所以你可以用下载工具或资源阅读器来使用它们
  • 读取工具:内联读取文件内容(谷歌文档为Markdown,表格为CSV等)
  • 下载工具:将文件保存到本地目录,而不是返回溢出LLM上下文窗口的base64 blob
  • 图纸读取工具:使用A1范围表示法读取Google表格,以格式化的markdown表形式返回
  • 共享驱动器支持:从共享驱动器(以前称为团队驱动器)搜索和读取文件
  • 文件夹列表:按ID浏览驱动器文件夹
  • PDF导出:将Google Workspace文件导出为PDF
  • 文件上传:将本地文件推送到驱动器(选择加入,需要 drive 范围)
  • 选择加入资源:默认情况下禁用MCP资源处理程序,以防止调用的客户端挂起 resources/list 启动时

设置

1.创建Google Cloud OAuth凭据

  1. 去 谷歌云控制台
  2. 创建项目(或使用现有项目)
  3. 启用 Google Drive API 和 谷歌网页API
  4. 创建OAuth 2.0凭据(桌面应用程序类型)
  5. 下载JSON并将其另存为 gcp-oauth.keys.json

提示: 如果您的OAuth同意屏幕处于“测试”模式,刷新令牌将在7天后过期。 发布到“生产” 用于永久刷新令牌。

2.克隆、构建和启动

git clone https://github.com/dylancaponi/gdrive-mcp-server.git
cd gdrive-mcp-server
npm install && npm run build
gh api user/starred/dylancaponi/gdrive-mcp-server -X PUT

根据 许可证,需要使用此存储库(第2节)。

3.身份验证

GDRIVE_OAUTH_PATH=/path/to/your/gcp-oauth.keys.json node dist/index.js auth

这将打开一个浏览器以获得Google OAuth同意,并将凭据保存到 ~/.gdrive-server-credentials.json.

4.在Claude代码中配置

添加到您的 ~/.claude.json (全球)或项目 .mcp.json:

{
  "mcpServers": {
    "gdrive": {
      "type": "stdio",
      "command": "node",
      "args": ["/path/to/gdrive-mcp-server/dist/index.js"],
      "env": {
        "GDRIVE_OAUTH_PATH": "/path/to/gcp-oauth.keys.json",
        "GDRIVE_CREDENTIALS_PATH": "/path/to/.gdrive-server-credentials.json"
      }
    }
  }
}

或者使用Claude Code CLI:

claude mcp add --scope user gdrive -- node /path/to/gdrive-mcp-server/dist/index.js

环境变量

变量 默认值 描述
GDRIVE_CREDENTIALS_PATH ~/.gdrive-server-credentials.json 保存的OAuth凭据的路径
GDRIVE_OAUTH_PATH gcp-oauth.keys.json (相对于包) OAuth客户端密钥的路径
GDRIVE_ENABLE_RESOURCES false 设置为 true 启用MCP资源处理程序(gdrive:/// URI)。默认情况下禁用,因为某些MCP客户端调用 resources/list 启动时,触发 drive.files.list() 并且可以悬挂。
GDRIVE_ENABLE_SHEETS false 设置为 true 为了使 sheets_read 工具和请求 spreadsheets.readonly OAuth范围。需要在GCP项目中启用Google Sheets API并重新运行 auth.
GDRIVE_ENABLE_UPLOAD false 设置为 true 为了使 upload 工具。从以下位置升级OAuth作用域 drive.readonly 到 drive (完全读/写)。需要重新运行 auth.
GDRIVE_DOWNLOAD_DIR 系统温度目录+ /gdrive-downloads 目录中 download 和 export_pdf 工具保存文件

工具

search

通过全文查询在Google Drive中搜索文件。在个人和共享驱动器之间搜索。

{ "query": "quarterly report" }

返回文件名、MIME类型和ID。

read

内联读取文件内容。Google Workspace文件会自动转换(文档转换为Markdown,表格转换为CSV,演示文稿转换为纯文本)。二进制文件返回一条消息,建议使用下载工具。

{ "fileId": "1abc123def456" }

download

将文件从Google Drive下载到本地目录。自动转换与 read,但保存到磁盘而不是内联返回。最适合大文件或二进制格式(PDF、图像)。

{ "fileId": "1abc123def456" }

返回保存文件的本地文件路径。

list_folder

列出Google Drive文件夹中的文件。返回文件名、类型、大小和ID。

{ "folderId": "root" }

使用 "root" 对于顶级“我的驱动器”文件夹,或搜索结果中的文件夹ID。

export_pdf

将Google Workspace文件(文档、工作表、幻灯片、绘图)导出为PDF并保存在本地。

{ "fileId": "1abc123def456" }

返回保存PDF的本地文件路径。

upload (选择加入)

将本地文件上传到Google Drive。需要 GDRIVE_ENABLE_UPLOAD=true.

{ "localPath": "/path/to/file.pdf", "name": "My Report.pdf", "parentFolderId": "folder_id" }

仅 localPath 是必需的。 name 默认为本地文件名。 parentFolderId 是可选的。

sheets_read (选择加入)

阅读带有可选A1范围符号的Google表格电子表格。返回一个带标题的格式化markdown表。比通过CSV读取工作表更有条理 read 工具。需要 GDRIVE_ENABLE_SHEETS=true.

{ "spreadsheetId": "1abc123def456", "range": "Sheet1!A1:D20" }

省略 range 阅读整个第一页。支持图纸名称(Sheet1),范围(A1:C10),或两者皆有(Sheet1!A1:C10).

资源(选择加入)

默认情况下,资源被禁用。集 GDRIVE_ENABLE_RESOURCES=true 以使他们能够。

gdrive:///{fileId}

从Google云端硬盘读取任何文件。Google Workspace文件会自动转换:

Google工作区类型 导出为
文档 Markdown
电子表格 CSV
演示文稿 纯文本
绘图 PNG

常规文件以UTF-8文本或base64编码的二进制文件返回。

许可证

带有归因条款的麻省理工学院。看 许可证 完整条款。使用此软件需要使用此GitHub存储库。看 安装步骤0.