Google Drive多用户服务器

一个与Google Drive集成的多用户服务器,支持文件列表、读取、搜索以及Google Sheets的读写操作,具备独立的用户认证和令牌管理功能。

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

使用说明

Google Drive MCP服务器(多用户)

此MCP服务器与Google Drive集成,允许列出、读取和搜索文件,以及读取和写入Google表格。 此版本支持多个用户 具有个人身份验证和令牌管理。

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

🚀 多用户功能

  • 个人身份验证:每个用户都有自己的Google OAuth令牌
  • 数据库存储:用户令牌安全地存储在PostgreSQL中
  • 会话管理:基于Web的OAuth流,支持会话
  • 令牌刷新:所有用户的自动令牌刷新
  • 用户管理:用于用户状态和管理的API端点
  • 隔离访问:每个用户只能访问自己的Google云端硬盘/表格数据

组件

工具

  • gdrive_search

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

    • 描述:从Google云端硬盘读取文件内容。
    • 输入:
      • userId (string):用于身份验证的用户ID。
      • fileId (string):要读取的文件的ID。
    • 输出:返回指定文件的内容。
  • gsheets_read

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

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

资源

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

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

快速启动(多用户设置)

有关详细的设置说明,请参阅 setup-multi-user.md.

先决条件

  • PostgreSQL数据库
  • 启用了Drive和Sheets API的Google Cloud项目
  • Node.js 18+

1.环境设置

创建一个 .env 文件:

# Database
DATABASE_URL="postgresql://username:password@localhost:5432/mcp_gdrive?schema=public"

# Google OAuth
CLIENT_ID="your-google-client-id"
CLIENT_SECRET="your-google-client-secret"
REDIRECT_URI="http://localhost:3000/auth/google/callback"

# Session
SESSION_SECRET="your-super-secret-session-key"
PORT=3000

2.数据库设置

npm install
npx prisma migrate dev
npx prisma generate
npm run build

3.启动服务

# Terminal 1: Web server (for OAuth)
node server.js

# Terminal 2: MCP server
node dist/index.js

4.用户身份验证

对于每个用户:

# 1. Set user session
curl http://localhost:3000/login/user123

# 2. Start OAuth (opens browser)
curl http://localhost:3000/auth/google

# 3. Complete OAuth in browser
# 4. Verify authentication
curl http://localhost:3000/users/user123/status

5.与MCP客户端一起使用

所有工具调用必须包括 userId:

{
  "method": "tools/call",
  "params": {
    "name": "gdrive_search",
    "arguments": {
      "userId": "user123",
      "query": "my documents"
    }
  }
}

API终点

web服务器提供以下端点:

  • GET /health -健康检查
  • GET /login/:userId -设置用户会话
  • GET /users -列出所有用户
  • GET /users/:userId/status -检查用户身份验证状态
  • GET /auth/google -启动OAuth流
  • GET /auth/google/callback -OAuth回调
  • GET /drive/files -试驾通道
  • GET /sheets/:spreadsheetId -测试表访问

使用桌面应用程序

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

{
  "mcpServers": {
    "gdrive": {
      "command": "npx",
      "args": ["-y", "@isaacphi/mcp-gdrive"],
      "env": {
        "DATABASE_URL": "postgresql://username:password@localhost:5432/mcp_gdrive?schema=public",
        "CLIENT_ID": "<CLIENT_ID>",
        "CLIENT_SECRET": "<CLIENT_SECRET>",
        "REDIRECT_URI": "http://localhost:3000/auth/google/callback",
        "SESSION_SECRET": "<SESSION_SECRET>"
      }
    }
  }
}

备注:对于多用户设置,您还需要运行web服务器(node server.js)用于OAuth身份验证。

许可证

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