使用说明
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——请参阅 许可证 了解详情。
