使用说明
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凭据
- 去 谷歌云控制台
- 创建项目(或使用现有项目)
- 启用 Google Drive API 和 谷歌网页API
- 创建OAuth 2.0凭据(桌面应用程序类型)
- 下载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编码的二进制文件返回。