Google Drive文件管理服务器

一个提供安全访问Google Drive和Google Sheets功能的MCP服务器,支持文件操作、权限管理和电子表格交互。

  • by dennisonbertram
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 dennisonbertram/mcp-gdrive

使用说明

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"
      }
    }
  }
}

配置

先决条件

  1. 谷歌云项目

    • 首选 谷歌云控制台
    • 创建新项目或选择现有项目
    • 启用Google Drive API和Google Sheets API
  2. OAuth2凭据

    • 转到API和服务>凭据
    • 点击“创建凭据”>“OAuth客户端ID”
    • 选择“桌面应用程序”或“Web应用程序”
    • 添加 http://localhost:3000/oauth2callback 重定向URI
    • 下载JSON凭据
  3. 环境变量

    创建一个 .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攻击

贡献

我们欢迎捐款!请查看我们的 贡献指南 了解详情。

  1. 分叉存储库
  2. 创建要素分支
  3. 提交您的更改
  4. 推到分支
  5. 打开拉取请求

许可证

MIT许可证-请参阅 许可证 文件以获取详细信息。

支持

致谢

使用Anthropic的模型上下文协议SDK构建。