适用于Gemini CLI/Windows的Google Drive MCP服务器
MCP(模型上下文协议)服务器,使Google Gemini CLI能够访问和读取Google Drive文档(.gdoc, .gsheet, .gslides)可通过Windows Google Drive虚拟驱动器访问。
概述
当使用Windows版Google Drive时,Google Drive和共享文件夹可以通过一个虚拟驱动器访问,该驱动器可以像本地文件系统一样进行导航。但是,Google Gemini CLI无法直接访问Google Drive文档中的内容(.gsheet, .gdoc, .gslides)就像原生格式一样(.docx, .xlsx, .pptx).
此MCP服务器通过以下方式弥合了这一差距:
- 解析文件系统路径以提取文档名称和文件夹路径
- 在Google Drive中搜索与名称和路径匹配的文档
- 使用Google Drive API获取文档内容
- 将文档转换为可读格式(markdown、文本、CSV)
- 将内容提供给Google Gemini CLI
特性
- 阅读谷歌文档 (
.gdoc):提取Google文档并将其转换为markdown/text格式 - 阅读谷歌表格 (
.gsheet):提取Google表格并将其转换为表格/文本格式 - 阅读谷歌幻灯片 (
.gslides):提取Google幻灯片并将其转换为文本格式 - 导出文档:将Google Drive文档导出为各种格式(markdown、文本、CSV)
先决条件
- Python 3.8+
- 谷歌云项目 启用了以下API:
- Google Drive API - 谷歌文档API - 谷歌网页API - 谷歌幻灯片API
- OAuth2凭据:您需要在Google Cloud控制台中创建OAuth2凭据
安装
- 安装所需的依赖项:
pip install -r requirements.txt- 设置Google OAuth2凭据:
a.转到 谷歌云控制台
b.创建新项目或选择现有项目
c.启用所需的API:
- Google Drive API - 谷歌文档API - 谷歌网页API - 谷歌幻灯片API
d.转到“证书”→ “创建凭据”→ “OAuth客户端ID”
e.选择“桌面应用程序”作为应用程序类型
f.复制 客户端ID 和 客户端密钥 (或下载凭据JSON文件)
配置
适用于Google Gemini CLI
将MCP服务器添加到Gemini CLI配置中。配置格式取决于您的设置,但通常看起来像这样:
选项1:使用OAuth客户端ID和密钥(推荐)
这是最简单的方法——只需提供您的OAuth客户端ID和密码:
{
"mcpServers": {
"google-drive-mcp": {
"command": "python",
"args": ["server.py"],
"cwd": "path/to/gemini-cli-gdrive-mcp",
"env": {
"GOOGLE_CLIENT_ID": "your-client-id.apps.googleusercontent.com",
"GOOGLE_CLIENT_SECRET": "your-client-secret",
"MCP_LOG_LEVEL": "DEBUG",
"MCP_LOG_FILE": "mcp_server.log"
},
"timeout": 30000,
"trust": true
}
}
}选项2:使用凭据JSON文件
您还可以使用凭据JSON文件:
{
"mcpServers": {
"google-drive-mcp": {
"command": "python",
"args": ["server.py"],
"cwd": "path/to/gemini-cli-gdrive-mcp",
"env": {
"GOOGLE_CREDENTIALS": "path/to/credentials.json",
"MCP_LOG_LEVEL": "DEBUG",
"MCP_LOG_FILE": "mcp_server.log"
},
"timeout": 30000,
"trust": true
}
}
}选项3:使用JSON字符串凭据
如果您更喜欢将凭据作为JSON字符串传递:
{
"mcpServers": {
"google-drive-mcp": {
"command": "python",
"args": ["server.py"],
"cwd": "path/to/gemini-cli-gdrive-mcp",
"env": {
"GOOGLE_CREDENTIALS": "{\"installed\":{\"client_id\":\"...\",\"client_secret\":\"...\",\"auth_uri\":\"...\",\"token_uri\":\"...\",\"auth_provider_x509_cert_url\":\"...\",\"redirect_uris\":[\"...\"]}}"
},
"timeout": 30000,
"trust": true
}
}
}环境变量
服务器使用以下环境变量(按优先顺序排列):
OAuth凭据(选择一种方法):
GOOGLE_CLIENT_ID和GOOGLE_CLIENT_SECRET(推荐):来自谷歌云控制台的OAuth2客户端ID和密码GOOGLE_CREDENTIALS:指向OAuth2凭据JSON文件的路径,或包含凭据的JSON字符串
其他设置:
GOOGLE_TOKEN_PATH(可选):存储OAuth2令牌的路径。违约:token.jsonMCP_LOG_LEVEL(可选):日志级别(DEBUG,INFO,WARNING,ERROR,CRITICAL).违约:INFOMCP_LOG_FILE(可选):日志文件的路径。违约:mcp_server.log
用法
配置后,MCP服务器向Google Gemini CLI提供以下工具:
工具
read_google_doc
- 从Google文档中读取内容(.gdoc)文件 - 转换为类似markdown的文本格式 - 例子: read_google_doc("G:\\My Drive\\MyDocument.gdoc")
read_google_sheets
- 从谷歌表格中读取内容(.gsheet)文件 - 转换为表格/文本格式 - 例子: read_google_sheets("G:\\My Drive\\MySpreadsheet.gsheet")
read_google_slides
- 从谷歌幻灯片中读取内容(.gslides)文件 - 转换为具有幻灯片结构的文本格式 - 例子: read_google_slides("G:\\My Drive\\MyPresentation.gslides")
export_google_document
- 将Google Drive文档导出为各种格式 - 支持: markdown, text, csv (适用于纸张) - 例子: export_google_document("G:\\My Drive\\MyDocument.gdoc", format="markdown")
首次身份验证
首次运行时,服务器将:
- 打开浏览器窗口进行OAuth2身份验证
- 要求您使用您的Google帐户登录
- 请求访问您的Google云端硬盘的权限
- 保存身份验证令牌以备将来使用
令牌保存到 token.json (或中指定的路径 GOOGLE_TOKEN_PATH).
日志记录和调试
MCP服务器包括全面的日志记录,以帮助您监视其活动和调试问题。日志会同时写入到以下两个位置:
- 标准错误 -可能在某些CLI配置中可见
- 日志文件 -始终可访问(默认值:
mcp_server.log)
查看日志
要查看服务器日志,请检查日志文件:
# View the log file
cat mcp_server.log
# Or on Windows
type mcp_server.log
# Follow logs in real-time (if tail is available)
tail -f mcp_server.log日志级别
使用 MCP_LOG_LEVEL 环境变量:
DEBUG:诊断问题的详细信息INFO:常规信息消息(默认)WARNING:潜在问题的警告信息ERROR:失败的错误消息CRITICAL:只有严重错误
日志文件将包含以下详细信息:
- 服务器启动和初始化
- 身份验证尝试和令牌管理
- 从文件中提取文档ID
- API调用Google Drive服务
- 工具执行和结果
- 全栈跟踪的错误和异常
运作原理
- 路径解析:服务器解析文件系统路径(例如。,
u:\My Drive\Projects\Project A\Document.gdoc)提取:
- 文档名称(无扩展名) - 文件夹路径 - 文档类型(来自文件扩展名)
例如, u:\My Drive\Projects\Project A\Document.gdoc 变为:
- 文件名称: Document - 文件夹路径: My Drive/Projects/Project A - 类型: .gdoc
- 谷歌云端硬盘搜索:由于无法直接读取虚拟驱动器文件,服务器:
- 在Google Drive中搜索与名称和类型匹配的文档 - 根据路径检查每个找到的具有正确名称和类型的文档,以确保它是正确的 - 检索与您电脑上Google Drive文件夹上的路径匹配的文档内容。
- API访问:使用Google Drive API使用文档ID获取实际文档内容。
- 格式转换:将文档内容转换为可读格式:
- 谷歌文档→ Markdown/文本 - 谷歌表格→ 表格/CSV格式 - 谷歌幻灯片→ 带有幻灯片结构的文本
- 内容交付:将转换后的内容返回到Google Gemini CLI,以便在对话中使用。
故障排除
身份验证问题
- “未提供Google OAuth凭据”:
- 设置其中之一 GOOGLE_CLIENT_ID 和 GOOGLE_CLIENT_SECRET 环境变量,或 - 集 GOOGLE_CREDENTIALS 带有credentials.json或json字符串路径的环境变量
- “凭据无效”:验证您的OAuth客户端ID和密钥是否正确,或者您的凭据JSON文件是否有效且格式正确
- 令牌刷新错误:删除
token.json并重新验证
文档访问问题
- “在Google Drive中找不到文档”:
- 确保路径中的文档名称完全匹配(区分大小写) - 验证文件夹路径是否正确(“我的驱动器”后的路径应与您的Google Drive文件夹结构匹配) - 检查您是否可以访问Google云端硬盘中的文档,以及您是否使用了正确的Google帐户!!!(问我怎么知道)
- “读取谷歌文档/表格/幻灯片时出错”:
- 验证您是否具有访问该文档所需的权限 - 检查您的Google Cloud项目中是否启用了所需的API - 确保您的OAuth2凭据具有正确的作用域
项目结构
.
├── server.py # Main MCP server implementation
├── requirements.txt # Python dependencies
├── README.md # This file
├── .gitignore # Git ignore file安全说明
- 永不承诺
token.json或credentials.json到版本控制 - 这
.gitignore文件被配置为排除这些文件 - 确保您的OAuth2凭据安全
- 服务器仅请求对您的Google Drive进行只读访问
许可证
本项目按原样提供,用于教育和发展目的。
