语义搜索文档服务器

一个同步Google Drive文件夹并通过本地语义搜索使文档可被AI助手访问的文档服务器。

  • by enablis-co
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 enablis-co/google-drive-mcp

使用说明

Google Drive MCP 服务器

一个模型上下文协议(MCP)服务器,能够同步任何Google Drive文件夹,并使其内容可通过具备强大语义搜索能力的人工智能助手进行搜索。

建筑

这台服务器使用的是 本地同步方法:

  • 从任何Google Drive文件夹下载文档到本地存储
  • 从PDF、Google Docs和其他文档中提取文本内容
  • 每6小时自动同步以保持最新状态
  • 通过本地索引和语义搜索提供快速查询
  • 同步后可离线工作

特点/功能

语义搜索

  • 基于语义的搜索 使用Transformer嵌入(本地运行,无需API密钥)
  • 理解上下文和含义,而不仅仅是关键词
  • 返回相关性评分和匹配部分
  • 非常适合用于自然语言查询,例如“访问控制的关键要求有哪些?”

重复检测

  • 查找概念或内容被多次定义的地方
  • 相似度评分以识别近似重复项
  • 跨文档逐节对比

交叉参考分析

  • 自动提取文档引用(ISO标准、RFC文档、IEEE标准、NIST出版物、自定义文档ID)
  • 分析哪些文件引用了其他标准/文件
  • 查看每个引用周围的上下文

MCP Resources(公司名,可译为“MCP资源公司”或根据具体语境简化为“MCP资源”)

  • 将每个文档暴露为资源(gdrive:///{document-id})
  • 文档可以直接由人工智能助手阅读

MCP 工具

搜索与发现

  1. 搜索文档 - 基于语义理解(意义导向)的智能搜索,若无法匹配则回退到关键词匹配
  2. 语义搜索 - 高级语义搜索,附带相关性评分和匹配段落
  3. 列出文件 - 列出所有可用文档及其元数据
  4. 获取文档 - 获取特定文档的全部内容

重复检测与分析

  1. 查找重复项 - 在文档中查找重复或相似的内容
  2. 分析交叉引用 - 分析所有文档中的文档引用(ISO、RFC、IEEE、NIST、自定义ID)
  3. 获取文档引用 - 从特定文档中提取所有带有上下文的文档引用

同步管理

  1. 同步文档 - 手动触发从Google Drive的同步
  2. 获取同步状态 - 检查同步状态和统计数据

设置

1. Google Cloud Console 设置

  1. 首选 Google 云控制台
  2. 创建一个新项目(或选择现有项目)
  3. 启用Google Drive API:
    • 导航至“APIs 和服务”→“库”
    • 搜索“Google Drive API”
    • 点击“启用”
  4. 创建OAuth 2.0凭据:
    • 前往“APIs 与服务”→“凭据”
    • 点击“创建凭据”→“OAuth 客户端 ID”
    • 选择“桌面应用”作为应用程序类型
    • 下载凭据JSON文件
    • 将其保存为 credentials.json 在项目根目录中

2. 安装依赖项

npm install

3. 使用Google Drive进行身份验证

npm run build
node dist/setup-auth.js

这将:

  • 打开浏览器进行Google认证(如果跳转到未找到页面,请将网址更新为包含端口3000并按回车键)
  • 生成一个 token.json 为将来查阅存档
  • 该令牌将被本地保存并重复使用
  • 令牌刷新访问令牌大约在1小时后过期,但会使用刷新令牌自动刷新并持久化到磁盘上

4. 配置Google云端硬盘文件夹

查找您Google Drive文件夹的文件夹ID:

  • 在Google Drive中打开该文件夹
  • 网址将类似于: https://drive.google.com/drive/folders/FOLDER_ID_HERE
  • 复制文件夹ID

设置环境变量:

export GOOGLE_DRIVE_FOLDER_ID="your-folder-id-here"

或者创建一个 .env 文件(可选 - 如需加载,可使用 dotenv):

# Copy the example file
cp .env.example .env

# Then edit .env and add your folder ID
GOOGLE_DRIVE_FOLDER_ID=your-folder-id-here

5. 运行MCP服务器

npm run dev

首次运行时,它会从Google云端硬盘同步所有文档。

与Claude Desktop配合使用

添加到您的Claude桌面配置中(~/Library/Application Support/Claude/claude_desktop_config.json (在 macOS 上):

{
  "mcpServers": {
    "google-drive": {
      "command": "node",
      "args": ["/path/to/google-drive-mcp/dist/index.js"],
      "env": {
        "GOOGLE_DRIVE_FOLDER_ID": "your-folder-id-here"
      }
    }
  }
}

重启Claude桌面应用,您的Google Drive文档即可使用!

发展

# Build TypeScript
npm run build

# Watch mode
npm run watch

# Run server
npm start

文件结构

google-drive-mcp/
├── src/
│   ├── index.ts              # Main entry point
│   ├── types.ts              # TypeScript type definitions
│   ├── google-drive-sync.ts  # Google Drive sync logic
│   ├── semantic-search.ts    # Semantic search implementation
│   ├── mcp-server.ts         # MCP server implementation
│   ├── setup-auth.ts         # Authentication setup script
│   ├── manual-auth.ts        # Manual authentication (fallback)
│   └── complete-auth.ts      # Complete auth with code
├── storage/                  # Local document storage (created on first run)
│   ├── documents.json        # Document metadata database
│   └── [file-ids]            # Downloaded documents
├── credentials.json          # Google OAuth credentials (you provide)
├── token.json               # Google OAuth token (auto-generated)
├── package.json
├── tsconfig.json
└── README.md

它是如何工作的

  1. 初始同步启动时,从指定的Google Drive文件夹下载所有文档
  2. 文本提取从PDF和Google文档中提取可搜索文本
  3. 语义索引使用Transformer嵌入构建语义搜索索引
  4. 本地存储在本地存储文档以实现快速访问
  5. 自动同步每6小时检查一次更新
  6. MCP接口通过MCP协议提供文档和搜索功能
  7. 人工智能集成AI助手可以搜索、阅读并参考您的文档

支持的文件类型

  • PDF文档 (带文本提取功能)
  • Google Docs (导出为文本)
  • Google 电子表格 (导出为CSV格式)
  • Google Slides(谷歌幻灯片) (导出为文本)
  • 纯文本文件
  • 其他文件类型(已下载,但可能无法提取文本)

安全注意事项

  • credentials.json 并且 token.json 包含敏感数据 - 永远不要提交它们
  • 服务器仅请求对Google Drive的只读访问权限
  • 文件本地存储在 storage/ 目录
  • 确保存储目录上的文件权限设置正确
  • 令牌刷新访问令牌在大约1小时后过期,但会使用刷新令牌自动刷新并持久化到磁盘,因此服务器无需重新认证即可继续工作

故障排除

“未找到令牌”错误

运行安装脚本: node dist/setup-auth.js

“GOOGLE_DRIVE_FOLDER_ID 是必需的”错误

设置环境变量,使用你的文件夹ID

文档未同步

  • 检查文件夹ID是否正确
  • 确保谷歌账户有权访问该文件夹
  • 检查网络连接
  • 跑 sync_documents 手动查看工具以查看详细错误

PDF文本提取失败

有些PDF文件可能是扫描图像,不包含文本。建议对这些文档使用OCR工具。

服务器运行后出现的认证错误

如果服务器运行一段时间后出现认证错误:

  • 服务器会自动刷新过期的访问令牌并将其保存到 token.json
  • 如果刷新令牌本身过期(大约在未使用6个月后),您将需要重新进行身份验证: node dist/setup-auth.js
  • 检查一下 token.json 文件有效 refresh_token 田野

用例

这台MCP服务器非常适合用于:

  • 文档库使您的团队文档可搜索
  • ISO/合规文件搜索ISO标准、合规文件和政策
  • 研究论文索引和搜索学术论文
  • 技术规格查询技术规格和标准
  • 法律文件搜索合同、协议和法律文件
  • 知识库任何需要智能搜索的文档集合

AI查询示例

一旦连接到Claude或其他人工智能助手,您就可以提出诸如以下问题:

  • “哪些文件提到了风险评估?”
  • “查找所有讨论数据加密的文档”
  • “备份策略是在哪里定义的?”
  • “在所有文档中显示所有关于ISO 27001的引用”
  • “哪些文件彼此相似?”
  • “在政策文件中查找重复内容”

未来的改进/增强

  • 增量同步(仅同步更改的文件)
  • 对扫描的PDF进行OCR识别
  • 文档版本控制
  • 文档分类和标记
  • 查询扩展和同义词处理
  • 多语言支持
  • 支持额外的文件格式
  • 自定义参考模式配置

许可证

麻省理工学院(MIT)