使用说明
Google Drive MCP服务器
一个全面的模型上下文协议(MCP)服务器,提供对Google云端硬盘和Google表格功能的安全访问。该服务器使AI助手能够通过一套结构良好的工具执行文件操作、管理权限并与电子表格交互。
特性
🗂️ 文件操作
- 列出、搜索和筛选文件
- 创建、读取、更新和删除文件
- 上传和下载内容
- 复制和移动文件
- 将Google Workspace文档导出为各种格式
📁 文件夹管理
- 创建和组织文件夹层次结构
- 在文件夹之间移动文件
- 获取完整的文件夹树
- 批量文件夹操作
🔐 权限控制
- 与用户或组共享文件和文件夹
- 创建过期的公共链接
- 管理访问级别(查看、评论、编辑)
- 批量权限更新
📊 Google表格集成
- 创建和管理电子表格
- 读取和写入单元格值
- 批量操作提高效率
- 设置单元格和范围的格式
- 将数据附加到表格中
📋 动态资源
- 最近使用的文件列表
- 文件夹结构可视化
- 存储配额信息
- 共享文件跟踪
- 电子表格发现
💬 互动提示
- 按模式组织文件
- 备份文件夹
- 与团队共享项目
- 清理重复项
- 从电子表格生成报告
- 存档旧文件
安装
使用克劳德桌面应用程序
添加到您的Claude桌面配置:
{
"mcpServers": {
"gdrive": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/gdrive-mcp"],
"env": {
"GDRIVE_CLIENT_ID": "your_client_id",
"GDRIVE_CLIENT_SECRET": "your_client_secret",
"GDRIVE_REDIRECT_URI": "http://localhost:3000/oauth2callback",
"GDRIVE_CREDS_DIR": "~/.config/gdrive-mcp"
}
}
}
}
使用Claude CLI
# Install globally
npm install -g @modelcontextprotocol/gdrive-mcp
# Add to MCP
claude mcp add gdrive \
--env GDRIVE_CLIENT_ID=your_client_id \
--env GDRIVE_CLIENT_SECRET=your_client_secret \
-- npx -y @modelcontextprotocol/gdrive-mcp
使用光标
添加到光标设置中:
{
"mcp": {
"servers": {
"gdrive": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/gdrive-mcp"],
"env": {
"GDRIVE_CLIENT_ID": "your_client_id",
"GDRIVE_CLIENT_SECRET": "your_client_secret"
}
}
}
}
}
使用Cline
添加到您的Cline配置:
{
"mcp": {
"gdrive": {
"command": "npx",
"args": ["@modelcontextprotocol/gdrive-mcp"],
"env": {
"GDRIVE_CLIENT_ID": "your_client_id",
"GDRIVE_CLIENT_SECRET": "your_client_secret"
}
}
}
}
配置
先决条件
-
谷歌云项目
- 首选 谷歌云控制台
- 创建新项目或选择现有项目
- 启用Google Drive API和Google Sheets API
-
OAuth2凭据
- 转到API和服务>凭据
- 点击“创建凭据”>“OAuth客户端ID”
- 选择“桌面应用程序”或“Web应用程序”
- 添加
http://localhost:3000/oauth2callback重定向URI - 下载JSON凭据
-
环境变量
创建一个
.env文件:# OAuth2 Configuration GDRIVE_CLIENT_ID=your_client_id.apps.googleusercontent.com GDRIVE_CLIENT_SECRET=your_client_secret GDRIVE_REDIRECT_URI=http://localhost:3000/oauth2callback GDRIVE_CREDS_DIR=~/.config/gdrive-mcp # Alternative: Service Account # GDRIVE_SERVICE_ACCOUNT_KEY=/path/to/service-account-key.json # Optional Configuration GDRIVE_LOG_LEVEL=info GDRIVE_MAX_RETRIES=3 GDRIVE_DEFAULT_FIELDS=id,name,mimeType,modifiedTime
身份验证方法
OAuth2(建议用户访问)
服务器将在首次使用时打开浏览器进行身份验证。令牌被安全地存储并自动刷新。
服务帐户(用于服务器到服务器)
export GDRIVE_AUTH_METHOD=service_account
export GDRIVE_SERVICE_ACCOUNT_KEY=/path/to/key.json
用法
基本文件操作
// List files
await use_mcp_tool("gdrive", "gdrive_list_files", {
pageSize: 10,
query: "name contains 'report'"
});
// Create a file
await use_mcp_tool("gdrive", "gdrive_create_file", {
name: "meeting-notes.txt",
content: "Meeting notes from today...",
mimeType: "text/plain"
});
// Download a file
await use_mcp_tool("gdrive", "gdrive_download_file", {
fileId: "abc123",
asBase64: true
});
文件夹管理
// Create folder
await use_mcp_tool("gdrive", "gdrive_create_folder", {
name: "Project Files",
color: "blue"
});
// Move files
await use_mcp_tool("gdrive", "gdrive_move_file", {
fileId: "file123",
newParentId: "folder456"
});
共享和权限
// Share with user
await use_mcp_tool("gdrive", "gdrive_share_file", {
fileId: "doc789",
emailAddress: "colleague@example.com",
role: "writer"
});
// Create public link
await use_mcp_tool("gdrive", "gdrive_create_public_link", {
fileId: "doc789",
linkType: "view",
expirationDays: 7
});
谷歌表格操作
// Create spreadsheet
await use_mcp_tool("gdrive", "sheets_create_spreadsheet", {
title: "Sales Data",
sheets: [{
title: "Q1 2024",
rowCount: 1000
}]
});
// Write data
await use_mcp_tool("gdrive", "sheets_write_range", {
spreadsheetId: "sheet123",
range: "A1:B2",
values: [
["Product", "Sales"],
["Widget A", 1500]
]
});
使用资源
// Get recent files
const recent = await use_mcp_resource("gdrive", "gdrive://recent-files");
// Check storage quota
const quota = await use_mcp_resource("gdrive", "gdrive://storage-quota");
// Get file details
const file = await use_mcp_resource("gdrive", "gdrive://file/abc123");
使用提示
// Organize files
await use_mcp_prompt("gdrive", "organize_files", {
pattern: "*.pdf",
folderName: "PDF Documents"
});
// Create backup
await use_mcp_prompt("gdrive", "backup_folder", {
folderId: "important-folder",
backupName: "Backup_2024"
});
可用工具
文件操作
gdrive_list_files-列出具有筛选功能的文件gdrive_search_files-高级文件搜索gdrive_get_file-获取文件元数据gdrive_create_file-创建新文件gdrive_update_file-更新文件内容/元数据gdrive_delete_file-删除或回收文件gdrive_copy_file-复制文件gdrive_download_file-下载文件内容gdrive_export_file-导出Google工作区文件
文件夹管理
gdrive_create_folder-创建文件夹gdrive_list_folders-列出文件夹gdrive_move_file-移动文件/文件夹gdrive_get_folder_tree-获取文件夹层次结构
权限
gdrive_share_file-与用户共享gdrive_list_permissions-列出文件权限gdrive_update_permission-更新权限gdrive_remove_permission-删除权限gdrive_create_public_link-创建公共链接
谷歌表格
sheets_create_spreadsheet-创建电子表格sheets_read_range-读取单元格值sheets_write_range-写入单元格值sheets_append_data-添加行sheets_batch_get-读取多个范围sheets_batch_update-更新多个范围sheets_clear_range-清除单元格sheets_get_info-获取电子表格信息sheets_add_sheet-添加新工作表sheets_format_cells-设置单元格格式
发展
地方发展
# Clone repository
git clone https://github.com/your-org/gdrive-mcp.git
cd gdrive-mcp
# Install dependencies
npm install
# Build
npm run build
# Run tests
npm test
# Start development server
npm run dev
测试
# Run all tests
npm test
# Run specific test suite
npm test -- --grep "File Operations"
# Test with coverage
npm run test:coverage
码头工人
# Build image
docker build -t gdrive-mcp .
# Run container
docker run -it \
-e GDRIVE_CLIENT_ID=$GDRIVE_CLIENT_ID \
-e GDRIVE_CLIENT_SECRET=$GDRIVE_CLIENT_SECRET \
-v ~/.config/gdrive-mcp:/root/.config/gdrive-mcp \
gdrive-mcp
故障排除
身份验证问题
问题:“身份验证失败”
- 验证CLIENT_ID和CLIENT_SECRET是否正确
- 检查重定向URI是否与配置匹配
- 确保在Google Cloud控制台中启用API
问题:“令牌已过期”
- 删除令牌文件:
rm ~/.config/gdrive-mcp/tokens.json - 通过再次运行服务器重新进行身份验证
权限错误
问题:“权限不足”
- 检查OAuth范围是否包括必要的权限
- 验证需要所有者访问权限的操作的文件所有权
速率限制
问题:“超出费率限制”
- 服务器实现了指数回退的自动重试
- 考虑批处理操作以提高效率
安全
- 凭据以0600权限安全存储
- 令牌在静止时加密(可选)
- 没有记录凭据
- 自动令牌刷新防止过期
- 状态参数防止CSRF攻击
贡献
我们欢迎捐款!请查看我们的 贡献指南 了解详情。
- 分叉存储库
- 创建要素分支
- 提交您的更改
- 推到分支
- 打开拉取请求
许可证
MIT许可证-请参阅 许可证 文件以获取详细信息。
支持
致谢
使用Anthropic的模型上下文协议SDK构建。
