Google Drive集成服务

该服务提供与Google Drive的深度集成,支持文件列表、读写、搜索,以及Google Sheets、Google Docs和Google Slides的读写操作。

  • by konashevich
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 konashevich/mcp-gdrive

使用说明

谷歌云端硬盘服务器

此MCP服务器与Google Drive集成,允许列出、读取和搜索文件,以及读取和写入Google表格、Google文档和Google幻灯片。

该项目包括最初由Anthropic,PBC开发的代码,根据MIT许可证从 此回购.

组件

工具

  • gdrive_search

    • 描述:在Google Drive中搜索文件。
    • 输入:
      • query (string):搜索查询。
      • pageToken (字符串,可选):下一页结果的标记。
      • pageSize (数字,可选):每页结果数(最多100个)。
    • 输出:返回匹配文件的文件名和MIME类型。
  • gdrive_read_file

    • 描述:从Google云端硬盘读取文件内容。
    • 输入:
      • fileId (string):要读取的文件的ID。
    • 输出:返回指定文件的内容。
  • gdrive_find_cleanup_dates

    • 描述:在云端硬盘中查找Google文档和Google表格清理候选项,包括根级别、无标题和空文件。
    • 输入:
      • rootOnly (布尔值,可选):将结果限制为驱动器根目录中的文件。默认为 true.
      • fileTypes (字符串数组,可选):按以下条件筛选 docs 或 sheets.
      • untitledOnly (boolean,可选):仅返回无标题的文件。
      • emptyOnly (boolean,可选):仅返回空文件。
      • inspectEmpty (布尔值,可选):使用文档和表格API检测空性。默认为 true.
      • pageToken (字符串,可选):下一页结果的标记。
      • pageSize (数字,可选):每页的结果数。
    • 输出:返回具有无标题和空标志的结构化清理候选对象。
  • gdrive_trash_files

    • 描述:将一个或多个Google Drive文件移到垃圾箱。
    • 输入:
      • fileIds (字符串数组):要移动到回收站的文件ID。
      • dryRun (boolean,可选):预览哪些文件将被丢弃。
    • 输出:返回每个文件的回收结果摘要。
  • gdrive_move_files

    • 描述:将一个或多个Google Drive文件移动到目标文件夹中。
    • 输入:
      • fileIds (字符串数组):要移动的文件ID。
      • destinationFolderId (string):目标Google Drive文件夹ID。
      • dryRun (布尔值,可选):预览移动而不更改任何内容。
    • 输出:返回每个文件的移动结果摘要。
  • gdrive_organize_root

    • 描述:将云端硬盘根目录中的Google文档和Google表格批量组织到专用文件夹中。
    • 输入:
      • docsFolderId (字符串,可选):文档的现有目标文件夹ID。
      • sheetsFolderId (字符串,可选):图纸的现有目标文件夹ID。
      • docsFolderName (字符串,可选):用于查找或为文档创建的文件夹名称。默认为 Google Docs.
      • sheetsFolderName (字符串,可选):用于查找或为图纸创建的文件夹名称。默认为 Google Sheets.
      • dryRun (布尔值,可选):预览组织计划。默认为 true.
    • 输出:返回计划或已完成的根组织摘要。
  • gdrive_upload_local_file

    • 描述:将本地文件上传到Google Drive文件夹中。适用于从导入的笔记链接的附件。
    • 输入:
      • filePath (string):本地文件的绝对路径。
      • folderId (string):目标Google Drive文件夹ID。
      • fileName (字符串,可选):可选的文件名覆盖。
      • reuseIfExists (布尔值,可选):重用目标文件夹中已存在的同名文件。默认为 true.
    • 输出:返回上传或重用文件的驱动器文件ID和web链接。
  • gdrive_import_oplin.export

    • 描述:通过重新创建文件夹、为笔记创建谷歌文档、上传链接附件和重写本地链接,将乔普林Markdown导出导入谷歌云端硬盘。
    • 输入:
      • sourceRootPath (string):导出Joplin根文件夹的绝对路径。
      • driveRootFolderName (字符串,可选):要创建或重用的顶级驱动器文件夹。默认为 Joplin.
      • resourcesFolderName (字符串,可选):特殊资源文件夹的名称。默认为 _resources.
      • supportsBasicGfm (布尔值,可选):解析基本的GFM特征。默认为 true.
      • embedImagesInline (布尔值,可选):在插入过程中,使用具有链接访问权限的临时用户将支持的图像嵌入谷歌文档中。默认为 true.
      • dryRun (布尔值,可选):预览在不更改驱动器的情况下导入的内容。默认为 false.
    • 输出:返回文件夹、文档、附件和重写链接的摘要计数。
  • gsheets_read

    • 描述:从谷歌电子表格中读取数据,范围和格式选项灵活。
    • 输入:
      • spreadsheetId (string):要读取的电子表格的ID。
      • ranges (字符串数组,可选):A1表示法范围的可选数组(例如。, ['Sheet1!A1:B10']).如果没有提供,请读取整张表。
      • sheetId (数字,可选):要读取的特定纸张ID。如果没有提供范围,则读取第一页。
    • 输出:从电子表格中返回指定的数据。
  • gsheets_update_cell

    • 描述:更新Google电子表格中的单元格值。
    • 输入:
      • fileId (string):电子表格的ID。
      • range (string):A1表示法中的单元格范围(例如。, 'Sheet1!A1').
      • value (string):新单元格值。
    • 输出:确认指定单元格中的更新值。
  • gdocs_create_from_markdown_file

    • 描述:读取本地Markdown文件,创建新的Google文档,并使用原生Google文档格式再现核心Markdown结构。
    • 输入:
      • filePath (string):指向本地的绝对路径 .md 文件。
      • title (字符串,可选):新Google文档的标题。默认为Markdown文件名。
      • folderId (字符串,可选):创建文档的目标Google Drive文件夹ID。
      • supportsBasicGfm (布尔值,可选):允许解析基本的GFM功能,如表、任务列表和删除线。默认为 true.
    • 输出:返回Google文档ID和URL、应用的Markdown功能以及保留为纯文本的任何不受支持的元素。
  • gslides_create_展示

    • 描述:创建新的Google幻灯片演示文稿。
    • 输入:
      • title (string):新演示文稿的标题。
      • folderId (字符串,可选):要将新演示文稿移入的现有驱动器文件夹ID。
    • 输出:返回新的演示文稿ID和URL。
  • gslides_get_展示

    • 描述:以JSON格式阅读谷歌幻灯片演示文稿。
    • 输入:
      • presentationId (string):演示文稿ID。
      • fields (字符串,可选):可选幻灯片API字段掩码,以减小响应大小。
    • 输出:返回演示有效负载和演示URL。
  • gslides_get_slide

    • 描述:以JSON格式阅读演示文稿中的一张幻灯片。
    • 输入:
      • presentationId (string):演示文稿ID。
      • slideObjectId (string):幻灯片对象ID。
    • 输出:返回幻灯片有效载荷和直接幻灯片URL。
  • 幻灯片_摘要_演示文稿

    • 描述:将幻灯片文本提取为紧凑的JSON格式,并可选择扬声器注释。
    • 输入:
      • presentationId (string):演示文稿ID。
      • includeNotes (布尔值,可选):在摘要中包含演讲者笔记。
    • 输出:返回演示文稿元数据以及每张幻灯片提取的文本。
  • gslides_batch_update_演示

    • 描述:应用原始谷歌幻灯片 batchUpdate 请求写入操作,如创建幻灯片、插入文本、替换文本或移动元素。
    • 输入:
      • presentationId (string):演示文稿ID。
      • requests (数组):原始谷歌幻灯片 batchUpdate 请求对象。
      • writeControl (object,可选):可选的修订控制对象。
    • 输出:返回幻灯片API批处理更新响应。

乔普林进口说明

  • 第一遍Joplin导入程序重新创建笔记本文件夹,将Markdown笔记导入为Google Docs,将链接的附件上传到与笔记相同的Drive文件夹中,并重写指向Google Drive或Google Docs URL的本地链接。
  • 当目标注释是同一导入的一部分时,指向其他Markdown注释的本地链接将重写为相应的Google文档。
  • 支持的PNG、JPEG和GIF附件可以内嵌。导入程序临时授予任何具有链接的人访问这些上载的图像文件的权限,以便Docs API可以获取这些文件,然后在Doc写入完成后删除该临时权限。
  • 导入在服务器端针对文件系统和GoogleAPI运行。它不需要通过模型上下文窗口推送所有注释内容。

资源

服务器提供对Google Drive文件的访问:

  • 文件 (gdrive:///<file_id>)
    • 支持所有文件类型
    • Google Workspace文件会自动导出:
      • Docs → 标记语言
      • 表格→ CSV
      • 演示→ 纯文本
      • 图纸→ PNG
    • 其他文件以其原生格式提供

入门

  1. 创建新的Google Cloud项目
  2. 启用Google Drive API
  3. 配置OAuth同意屏幕 (“内部”适合测试)
  4. 添加OAuth作用域 https://www.googleapis.com/auth/drive, https://www.googleapis.com/auth/documents, https://www.googleapis.com/auth/presentations, https://www.googleapis.com/auth/spreadsheets
  5. 为了允许与驱动器、表格、文档和幻灯片进行交互,您还需要启用 Google Drive API, 谷歌网页API, 谷歌文档API,以及 谷歌幻灯片API 在项目的“已启用的API和服务”部分。
  6. 创建OAuth客户端ID 适用于应用程序类型“桌面应用程序”
  7. 下载客户端OAuth密钥的JSON文件
  8. 将密钥文件重命名为 gcp-oauth.keys.json 并放置到您指定的路径中 GDRIVE_CREDS_DIR (即。 /Users/username/.config/mcp-gdrive)
  9. 记下您的OAuth客户端ID和客户端密码。它们必须作为环境变量与配置目录一起提供。
  10. 您还需要在项目中设置一个.env文件,其中包含以下字段。您可以在Google Cloud控制台的凭据部分找到客户端ID和客户端密码。
GDRIVE_CREDS_DIR=/path/to/config/directory
CLIENT_ID=<CLIENT_ID>
CLIENT_SECRET=<CLIENT_SECRET>

确保使用以下任一方法构建服务器 npm run build 或 npm run watch.

VS代码设置

  1. 安装依赖项 npm install (该项目自动运行TypeScript构建)。
  2. 填充 .env 和你一起 CLIENT_ID, CLIENT_SECRET,以及 GDRIVE_CREDS_DIR 价值观。
  3. 在VS Code中,打开 运行和调试 查看并选择 启动MCP GDrive启动配置构建TypeScript源代码,从中加载环境变量 .env,并在启用了节点源映射的集成终端中启动服务器。
  4. 可选:启动 npm:观看 任务来自 终端→ 运行任务… 菜单,用于在开发时保持TypeScript编译器在监视模式下运行。
  5. 要在没有硬编码秘密的情况下与VS Code的MCP客户端集成,请指向您的用户 mcp.json 在提供的脚本中输入 scripts/launch-mcp-gdrive.ps1;脚本加载 .env,确保项目已构建,并通过stdio启动服务器。

认证

接下来,你需要跑步 node ./dist/index.js 触发身份验证步骤

系统将提示您使用浏览器进行身份验证。您必须使用与您的Google Cloud项目所在组织相同的帐户进行身份验证。

您的OAuth令牌保存在由 GDRIVE_CREDS_DIR 环境变量。

如果要升级现有安装,请删除已保存的令牌或重新运行身份验证流,以便存储的凭据包括当前的驱动器、文档、幻灯片和工作表范围。

使用桌面应用程序

要将此服务器与桌面应用程序集成,请将以下内容添加到应用程序的服务器配置中:

{
  "mcpServers": {
    "gdrive": {
      "command": "npx",
      "args": ["-y", "@isaacphi/mcp-gdrive"],
      "env": {
        "CLIENT_ID": "<CLIENT_ID>",
        "CLIENT_SECRET": "<CLIENT_SECRET>",
        "GDRIVE_CREDS_DIR": "/path/to/config/directory"
      }
    }
  }
}

许可证

此MCP服务器根据MIT许可证获得许可。这意味着您可以根据MIT许可证的条款和条件自由使用、修改和分发软件。有关更多详细信息,请参阅项目存储库中的LICENSE文件。