Google Drive文件访问服务

一个基于MCP协议的服务器,提供Google Drive文件列表和内容读取功能,支持多种文件类型处理。

  • by jitzian
  • Kotlin
  • 本地部署
  • 更新于
在 GitHub 查看 jitzian/MCP_Server_MyGoogleDrive

使用说明

Google Drive MCP服务器

这是一个MCP(模型上下文协议)服务器,通过两个主要工具提供对Google Drive文件的访问:

特性

  1. 列出驱动器文件 -列出Google云端硬盘中所有包含元数据的文件
  2. 读取文件内容 -从各种文件类型读取和处理内容,包括:
    • 文本文件(.txt、.md、.json等)
    • 文件(.doc、.docx、.pdf)
    • 图像(.png、.jpg、.gif等)-带元数据提取-待实现
    • 视频(.mp4、.mov等)-带元数据提取-待实现
    • 电子表格(.xls、.xlsx)
    • 演示文稿(.ppt、.pptx)-待实施

设置

先决条件

在使用此MCP服务器之前,您需要设置Google云平台服务帐户并启用Google Drive API。

第一步:创建谷歌云平台项目

  1. 登录谷歌云控制台:导航到 谷歌云控制台 并使用您的Google帐户登录。
  2. 创建新项目:
    • 点击页面顶部的项目下拉列表
    • 点击“新建项目”
    • 输入项目名称(例如“MCP Drive Server”)
    • 点击“创建”

参考: 创建Google Cloud Platform服务帐户

步骤2:启用Google Drive API

  1. 导航到API库:
    • 在Google Cloud控制台中,单击“API和服务”>“库”
    • 使用左侧导航菜单或搜索它
  2. 启用Google Drive API:
    • 在搜索栏中搜索“Google Drive API”
    • 点击结果中的“Google Drive API”
    • 点击“启用”按钮

参考: 使用Google Drive API与Python和服务帐户

步骤3:创建服务帐户

  1. 导航到服务帐户:
    • 从左侧导航菜单中单击“IAM&Admin”>“服务帐户”
  2. 创建服务帐户:
    • 点击顶部的“创建服务帐户”按钮
    • 输入服务帐户名称(例如“mcp驱动器服务器”)
    • 可选择添加描述
    • 点击“创建并继续”
  3. 授予权限 (可选):
    • 您可以跳过此步骤进行基本驱动器访问
    • 点击“继续”,然后点击“完成”

重要:服务帐户用于机器对机器身份验证,不需要用户名/密码。它们非常适合自动化流程。

步骤4:生成并下载JSON密钥

  1. 访问服务帐户密钥:
    • 在“服务帐户”列表中,找到您新创建的服务帐户
    • 点击服务帐户电子邮件以打开其详细信息
    • 导航到“密钥”选项卡
  2. 创建新密钥:
    • 点击“添加密钥”>“创建新密钥”
    • 选择“JSON”作为密钥类型
    • 点击“创建”
  3. 安全下载和存储:
    • JSON文件将自动下载到您的计算机
    • 重要:永远不要将此文件提交到版本控制(Git、GitHub等)
    • 安全地存储它,因为它包含敏感凭据

参考: 逐步:如何创建一个服务帐户访问谷歌API

步骤5:配置MCP服务器

  1. 放置JSON密钥文件:

    • 将下载的JSON文件重命名为 service-account.json
    • 移动到 src/main/resources/service-account.json 在这个项目中
    • 该文件应位于resources文件夹中,以便包含在类路径中
  2. 使用服务帐户共享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文件ID
  • name:文件名
  • 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:文件ID
  • name:文件名
  • 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错误响应返回,并带有描述性消息。