Google Drive文档访问服务

一个MCP服务器,使Google Gemini CLI能够通过Windows Google Drive虚拟驱动器访问和读取Google Drive文档(.gdoc, .gsheet, .gslides)。

  • by pkarstaedt
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 pkarstaedt/gemini-cli-gdrive-mcp

使用说明

适用于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)

先决条件

  1. Python 3.8+
  2. 谷歌云项目 启用了以下API:
    • Google Drive API
    • 谷歌文档API
    • 谷歌网页API
    • 谷歌幻灯片API
  3. OAuth2凭据:您需要在Google Cloud控制台中创建OAuth2凭据

安装

  1. 安装所需的依赖项:
pip install -r requirements.txt
  1. 设置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.json
  • MCP_LOG_LEVEL (可选):日志级别(DEBUG, INFO, WARNING, ERROR, CRITICAL).违约: INFO
  • MCP_LOG_FILE (可选):日志文件的路径。违约: mcp_server.log

用法

配置后,MCP服务器向Google Gemini CLI提供以下工具:

工具

  1. read_google_doc

    • 从Google文档中读取内容(.gdoc)文件
    • 转换为类似markdown的文本格式
    • 例子: read_google_doc("G:\\My Drive\\MyDocument.gdoc")
  2. read_google_sheets

    • 从谷歌表格中读取内容(.gsheet)文件
    • 转换为表格/文本格式
    • 例子: read_google_sheets("G:\\My Drive\\MySpreadsheet.gsheet")
  3. read_google_slides

    • 从谷歌幻灯片中读取内容(.gslides)文件
    • 转换为具有幻灯片结构的文本格式
    • 例子: read_google_slides("G:\\My Drive\\MyPresentation.gslides")
  4. export_google_document

    • 将Google Drive文档导出为各种格式
    • 支持: markdown, text, csv (适用于纸张)
    • 例子: export_google_document("G:\\My Drive\\MyDocument.gdoc", format="markdown")

首次身份验证

首次运行时,服务器将:

  1. 打开浏览器窗口进行OAuth2身份验证
  2. 要求您使用您的Google帐户登录
  3. 请求访问您的Google云端硬盘的权限
  4. 保存身份验证令牌以备将来使用

令牌保存到 token.json (或中指定的路径 GOOGLE_TOKEN_PATH).

日志记录和调试

MCP服务器包括全面的日志记录,以帮助您监视其活动和调试问题。日志会同时写入到以下两个位置:

  1. 标准错误 -可能在某些CLI配置中可见
  2. 日志文件 -始终可访问(默认值: 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服务
  • 工具执行和结果
  • 全栈跟踪的错误和异常

运作原理

  1. 路径解析:服务器解析文件系统路径(例如。, u:\My Drive\Projects\Project A\Document.gdoc)提取:

    • 文档名称(无扩展名)
    • 文件夹路径
    • 文档类型(来自文件扩展名)

    例如, u:\My Drive\Projects\Project A\Document.gdoc 变为:

    • 文件名称: Document
    • 文件夹路径: My Drive/Projects/Project A
    • 类型: .gdoc
  2. 谷歌云端硬盘搜索:由于无法直接读取虚拟驱动器文件,服务器:

    • 在Google Drive中搜索与名称和类型匹配的文档
    • 根据路径检查每个找到的具有正确名称和类型的文档,以确保它是正确的
    • 检索与您电脑上Google Drive文件夹上的路径匹配的文档内容。
  3. API访问:使用Google Drive API使用文档ID获取实际文档内容。

  4. 格式转换:将文档内容转换为可读格式:

    • 谷歌文档→ Markdown/文本
    • 谷歌表格→ 表格/CSV格式
    • 谷歌幻灯片→ 带有幻灯片结构的文本
  5. 内容交付:将转换后的内容返回到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进行只读访问

许可证

本项目按原样提供,用于教育和发展目的。

参考文献