Google Drive MCP服务器
这是一个MCP(模型上下文协议)服务器,通过两个主要工具提供对Google Drive文件的访问:
特性
- 列出驱动器文件 -列出Google云端硬盘中所有包含元数据的文件
- 读取文件内容 -从各种文件类型读取和处理内容,包括:
- 文本文件(.txt、.md、.json等) - 文件(.doc、.docx、.pdf) - 图像(.png、.jpg、.gif等)-带元数据提取-待实现 - 视频(.mp4、.mov等)-带元数据提取-待实现 - 电子表格(.xls、.xlsx) - 演示文稿(.ppt、.pptx)-待实施
设置
先决条件
在使用此MCP服务器之前,您需要设置Google云平台服务帐户并启用Google Drive API。
第一步:创建谷歌云平台项目
- 登录谷歌云控制台:导航到 谷歌云控制台 并使用您的Google帐户登录。
- 创建新项目:
- 点击页面顶部的项目下拉列表 - 点击“新建项目” - 输入项目名称(例如“MCP Drive Server”) - 点击“创建”
参考: 创建Google Cloud Platform服务帐户
步骤2:启用Google Drive API
- 导航到API库:
- 在Google Cloud控制台中,单击“API和服务”>“库” - 使用左侧导航菜单或搜索它
- 启用Google Drive API:
- 在搜索栏中搜索“Google Drive API” - 点击结果中的“Google Drive API” - 点击“启用”按钮
参考: 使用Google Drive API与Python和服务帐户
步骤3:创建服务帐户
- 导航到服务帐户:
- 从左侧导航菜单中单击“IAM&Admin”>“服务帐户”
- 创建服务帐户:
- 点击顶部的“创建服务帐户”按钮 - 输入服务帐户名称(例如“mcp驱动器服务器”) - 可选择添加描述 - 点击“创建并继续”
- 授予权限 (可选):
- 您可以跳过此步骤进行基本驱动器访问 - 点击“继续”,然后点击“完成”
重要:服务帐户用于机器对机器身份验证,不需要用户名/密码。它们非常适合自动化流程。
步骤4:生成并下载JSON密钥
- 访问服务帐户密钥:
- 在“服务帐户”列表中,找到您新创建的服务帐户 - 点击服务帐户电子邮件以打开其详细信息 - 导航到“密钥”选项卡
- 创建新密钥:
- 点击“添加密钥”>“创建新密钥” - 选择“JSON”作为密钥类型 - 点击“创建”
- 安全下载和存储:
- JSON文件将自动下载到您的计算机 - 重要:永远不要将此文件提交到版本控制(Git、GitHub等) - 安全地存储它,因为它包含敏感凭据
步骤5:配置MCP服务器
- 放置JSON密钥文件:
- 将下载的JSON文件重命名为 service-account.json - 移动到 src/main/resources/service-account.json 在这个项目中 - 该文件应位于resources文件夹中,以便包含在类路径中
- 使用服务帐户共享Google Drive文件:
- 打开你的 service-account.json 文件 - 找到 client_email 字段(例如。, mcp-drive-server@your-project.iam.gserviceaccount.com) - 在Google云端硬盘中,使用此电子邮件地址共享要访问的文件夹/文件 - 根据需要授予其“查看器”或“编辑器”权限
步骤6:构建并运行服务器
# Build the project
./gradlew build
# Run the server
./gradlew run服务器将于启动 http://localhost:3002/sse
替代方案:使用管理脚本
您还可以使用提供的管理脚本:
# Start the server
./manage_server.sh start
# Stop the server
./manage_server.sh stop
# Check server status
./manage_server.sh status建筑
代码库遵循干净的架构原则:
src/main/kotlin/
├── Main.kt # Application entry point
├── GoogleDriveService.kt # Google Drive API client
├── constants/
│ └── GlobalConstants.kt # Application constants
├── domain/
│ ├── FileInfo.kt # File metadata model
│ └── FileContent.kt # File content model
└── tools/ # MCP Tools (following single responsibility)
├── ToolManager.kt # Registers all tools
├── ListDriveFilesTool.kt # Lists Google Drive files
├── ReadFileContentTool.kt # Reads file contents
└── FileContentExtractor.kt # Extracts content from various file formats可用工具
1.list_drive_files
列出Google Drive根文件夹中的所有文件。
请求:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_drive_files",
"arguments": {}
}
}答复: 返回一个JSON数组 FileInfo 对象具有:
id:Google Drive文件IDname:文件名mimeType:文件的MIME类型size:文件大小(字节)modifiedTime:上次修改时间戳
2.read_file_content
读取并处理特定文件的内容。
请求:
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "read_file_content",
"arguments": {
"fileId": "your-google-drive-file-id"
}
}
}答复: 返回a FileContent 对象具有:
id:文件IDname:文件名mimeType:MIME类型size:文件大小content:提取的内容(文本、元数据描述等)contentType:执行的内容提取类型metadata:从文件中提取的其他元数据
内容处理能力
服务器可以处理各种文件类型:
- 文本文件:直接文本提取
- 文件 (DOC、DOCX):使用Apache Tika进行文本提取
- PDF文件:使用Apache Tika进行文本提取
- 图像:元数据提取(维度、格式、EXIF数据)
- 视频:元数据提取(格式、持续时间、编解码器信息)
- 电子表格:从Excel文件中提取内容
- 二进制文件:基本元数据和描述
依赖项
使用的关键库:
- Kotlin MCP SDK:用于MCP协议实施
- Google Drive API:用于访问谷歌云端硬盘
- 阿帕奇蒂卡:用于从各种文件格式中提取内容
- 阿帕奇 POI:用于Microsoft Office文档处理
- PDFBox:用于PDF处理
- 哪个:用于HTTP服务器功能
与MCP客户端一起使用
此服务器旨在与MCP兼容的客户端(如Claude Desktop或支持模型上下文协议的其他AI助手)配合使用。
要将此服务器连接到Claude Desktop,请将其添加到MCP配置中:
{
"mcpServers": {
"google-drive": {
"command": "java",
"args": ["-jar", "path/to/your/server.jar"],
"env": {}
}
}
}错误处理
该服务器包括全面的错误处理功能,用于:
- Google Drive API错误
- 文件处理错误
- 不支持的文件类型
- 网络连接问题
所有错误都会作为正确的MCP错误响应返回,并带有描述性消息。
