Google Drive文件操作服务器

一个开源的MCP服务器,通过可流式传输的HTTP接口为Google Drive提供文件操作功能,专为容器化AI代理设计。

  • by devops-consultants
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 devops-consultants/google-drive-mcp-server

使用说明

Google Drive MCP服务器

一个开源的MCP(模型上下文协议)服务器,通过流式HTTP传输为Google Drive提供文件操作。专为容器化AI代理而设计,而不是桌面STDIO客户端。

概述

此服务器将Google Drive文件操作作为MCP工具公开,允许AI代理在Google Drive中列出、读取、写入、删除、移动文件和创建文件夹。它使用基于路径的寻址(例如。, /My Drive/docs/report.md)并在内部解析Google Drive文件ID的路径。

服务器是 无状态 --它在 Authorization: Bearer <token> 每个MCP会话的头,并将请求转发到Google Drive API v3。调用应用程序管理OAuth生命周期。

特性

  • 7个文件操作工具:list_files、read_file、write_file、delete_file、file_info、create_folder、move_file
  • 基于路径的界面:人类可读的路径,而不是不透明的文件ID
  • 可流式HTTP传输:与容器化MCP客户端兼容
  • 承载令牌身份验证:无状态、每会话身份验证
  • ETag并发:用于安全并行写入的乐观冲突检测
  • 文本和二进制支持:文本文件为UTF-8,二进制文件为base64
  • 共享云端硬盘:通过以下方式支持团队/共享驱动器 /Shared drives/TeamName/...

部署

码头工人

docker pull ghcr.io/devops-consultants/google-drive-mcp-server:latest
docker run -p 8080:8080 ghcr.io/devops-consultants/google-drive-mcp-server:latest

Docker Compose

docker compose up

本地开发

需要Python 3.12以上。

pip install -r requirements.txt
pip install -e ".[dev]"  # test dependencies
python -m google_drive_mcp_server

环境变量

变量 默认值 描述
PORT 8080 服务器侦听端口
HOST 0.0.0.0 服务器绑定地址
MAX_FILE_SIZE 26214400 (25MB) 读取操作的最大文件大小(字节)

端点

端点 方法 描述
/mcp POST MCP可流式HTTP端点
/health GET 健康检查--返回 {"status": "ok"}

工具参考

列表文件

列出Google Drive目录中的文件和文件夹。

参数:

  • path (字符串,默认值: "/"):列表的目录路径

退货: 条目数组 name, path, type (“文件”或“文件夹”), size, modified.

read_file

读取文件的内容和元数据。

参数:

  • path (string,必填):文件路径

退货: content (UTF-8或base64), etag, mime_type, size, binary (布尔值)。

write_file

创建或更新具有可选冲突检测功能的文件。

参数:

  • path (string,必填):应写入文件的路径
  • content (字符串,必填):文件内容(文本)
  • etag (字符串,可选):ETag用于乐观并发控制

退货: path, etag, size.

删除文件

永久删除文件(不是垃圾)。

参数:

  • path (string,必填):要删除的文件的路径

退货: {"success": true}.

file_info

在不下载内容的情况下获取文件或文件夹元数据。

参数:

  • path (string,必填):文件或文件夹的路径

退货: name, path, type, size, modified, etag, mime_type.

创建文件夹

创建一个文件夹(包括中间文件夹)。

参数:

  • path (string,必填):要创建的文件夹的路径

退货: {"path": "<created path>"}.

move_file

移动或重命名文件。

参数:

  • source (string,必填):文件的当前路径
  • destination (string,必填):文件的新路径

退货: {"path": "<new path>"}.

路径解析

服务器通过遍历文件夹树来解析人类可读的Google Drive文件ID路径:

  • / 或 /My Drive --用户的根驱动器
  • /My Drive/Documents/report.md --用户驱动器中的文件
  • /Shared drives/TeamName/... --共享/团队驱动
  • 路径是 不区分大小写 用于文件夹导航(与Google Drive行为匹配)
  • 重复的文件名:当多个文件在一个文件夹中共享同一名称时,将返回最近修改的文件
  • 已解析的ID映射路径为 每个会话缓存 以减少API调用

错误处理

Google Drive API错误被映射到结构化错误响应:

HTTP状态 错误代码 描述
401 auth_expired 令牌过期或无效
403 permission_denied 访问被拒绝
404 not_found 找不到文件/文件夹
412 conflict ETag不匹配(包括当前ETag)
429 rate_limited 速率受限(指数回退自动重试)
— file_too_large 文件超出可配置的大小限制

认证

服务器需要一个Google OAuth访问令牌 Authorization 头球

Authorization: Bearer <google-oauth-access-token>

令牌必须具有 https://www.googleapis.com/auth/drive 范围。服务器会 不 处理OAuth同意或令牌刷新——调用应用程序负责提供有效的令牌。

许可证

Apache许可证2.0——请参阅 许可证 了解详情。