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:///)
- 支持所有文件类型 - 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=30002.数据库设置
npm install
npx prisma migrate dev
npx prisma generate
npm run build3.启动服务
# Terminal 1: Web server (for OAuth)
node server.js
# Terminal 2: MCP server
node dist/index.js4.用户身份验证
对于每个用户:
# 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/status5.与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_SECRET": "",
"REDIRECT_URI": "http://localhost:3000/auth/google/callback",
"SESSION_SECRET": ""
}
}
}
}备注:对于多用户设置,您还需要运行web服务器(node server.js)用于OAuth身份验证。
许可证
此MCP服务器根据MIT许可证获得许可。这意味着您可以根据MIT许可证的条款和条件自由使用、修改和分发软件。有关更多详细信息,请参阅项目存储库中的LICENSE文件。
