Google Workspace集成服务器

一个安全的MCP服务器,提供全面的Google Workspace集成,支持通过自然语言控制Gmail、Google Drive、Calendar等,具备多用户隔离和高级会话管理功能。

  • by 3xcaffeine
  • TypeScript
  • 本地部署
  • 7 星标
  • 更新于
在 GitHub 查看 3xCaffeine/mcp-server

使用说明

VaultAssist-个人谷歌工作区MCP服务器

A. 模型上下文协议(MCP)服务器 它为您的个人AI助理提供全面的Google Workspace集成,具有保险库级别的安全性。

内置于 Next.js, TypeScript, 更好的认证,以及 Vercel的MCP SDK,此服务器通过具有高级会话管理和图形数据库集成的安全OAuth 2.1身份验证,对Gmail、Google Drive、日历、表格、幻灯片和任务进行自然语言控制。

概述

VaultAssist是人工智能助手和谷歌工作区服务之间的安全桥梁,通过保险库安全、经过验证的API实现无缝自动化和数据访问。服务器使用 更好的认证 为了实现稳健的用户会话管理, PostgreSQL 用于持久数据存储,以及 图形数据库 用于在您的个人数据生态系统中进行智能关系映射。 VaultAssist是人工智能助手和谷歌工作区服务之间的安全桥梁,通过保险库安全、经过验证的API实现无缝自动化和数据访问。该服务器支持多个用户,每个用户的数据、会话和Google Workspace访问完全隔离。 更好的认证 提供稳健的用户会话管理, PostgreSQL 确保持久的、每个用户的数据存储,以及 图形数据库 在您的个人数据生态系统中实现智能、用户特定的关系映射。

graph TB
    subgraph "Client Layer"
        VSCode[VS Code MCP Client]
        Other[Other MCP Clients]
    end

    subgraph "VaultAssist MCP Server (Next.js)"
        Auth[Better Auth<br/>OAuth 2.1 + MCP Plugin]
        Router[MCP Handler<br/>Vercel SDK + Dynamic Routes]
        
        subgraph "Tool Registry"
            Gmail[Gmail Tools]
            Drive[Drive Tools]
            Docs[Docs Tools]
            Calendar[Calendar Tools]
            Sheets[Sheets Tools]
            Slides[Slides Tools]
            Tasks[Tasks Tools]
            Memory[Memory Tools]
            Sequential[Sequential Thinking]
        end
        
        subgraph "Core Services"
            OAuth[Google OAuth Client]
            Schema[Zod Validation]
            DB[Database Layer]
            GraphDB[Graph Database<br/>Relationships & Context]
            SessionMgmt[Advanced Session<br/>Management]
        end
    end

    subgraph "Google APIs"
        GmailAPI[Gmail API]
        DriveAPI[Drive API]
        DocsAPI[Docs API]
        CalendarAPI[Calendar API]
        SheetsAPI[Sheets API]
        SlidesAPI[Slides API]
        TasksAPI[Tasks API]
    end

    subgraph "Infrastructure"
        PostgresDB[(PostgreSQL Database<br/>User Data & Sessions)]
        GraphStore[(Graph Database<br/>Relationships & Memory)]
        GoogleCloud[Google Cloud Console<br/>OAuth 2.1 Credentials]
        VercelSDK[Vercel MCP SDK<br/>& Libraries]
    end

    %% Client connections
    VSCode --> Router
    Other --> Router

    %% Authentication flow
    Router --> Auth
    Auth --> GoogleCloud
    Auth --> DB
    Auth --> SessionMgmt
    DB --> PostgresDB
    SessionMgmt --> GraphStore

    %% Tool registration and execution
    Router --> Gmail
    Router --> Drive
    Router --> Docs
    Router --> Calendar
    Router --> Sheets
    Router --> Slides
    Router --> Tasks
    Router --> Memory
    Router --> Sequential

    %% Service layer with MCP SDK integration
    Gmail --> OAuth
    Drive --> OAuth
    Docs --> OAuth
    Calendar --> OAuth
    Sheets --> OAuth
    Slides --> OAuth
    Tasks --> OAuth
    Memory --> GraphDB
    Sequential --> GraphDB

    %% External API calls
    OAuth --> GmailAPI
    OAuth --> DriveAPI
    OAuth --> DocsAPI
    OAuth --> CalendarAPI
    OAuth --> SheetsAPI
    OAuth --> SlidesAPI
    OAuth --> TasksAPI

    %% Data validation and MCP SDK
    Gmail --> Schema
    Drive --> Schema
    Docs --> Schema
    Calendar --> Schema
    Sheets --> Schema
    Slides --> Schema
    Tasks --> Schema
    Memory --> Schema
    Sequential --> Schema
    
    %% MCP SDK Integration
    Router --> VercelSDK
    Schema --> VercelSDK
    Auth --> VercelSDK

    %% Graph database relationships
    GraphDB --> PostgresDB
    GraphDB --> GraphStore

    %% Styling
    classDef clientNodes fill:#e1f5fe,stroke:#01579b,stroke-width:2px,color:#000000
    classDef serverNodes fill:#f3e5f5,stroke:#4a148c,stroke-width:2px,color:#000000
    classDef apiNodes fill:#fff3e0,stroke:#e65100,stroke-width:2px,color:#000000
    classDef infraNodes fill:#e8f5e8,stroke:#2e7d32,stroke-width:2px,color:#000000

    class VSCode,Other clientNodes
    class Auth,Router,Gmail,Drive,Docs,Calendar,Sheets,Slides,Tasks,Memory,Sequential,OAuth,Schema,DB,GraphDB,SessionMgmt serverNodes
    class GmailAPI,DriveAPI,DocsAPI,CalendarAPI,SheetsAPI,SlidesAPI,TasksAPI apiNodes
    class PostgresDB,GraphStore,GoogleCloud,VercelSDK infraNodes

特性

安全

  • 使用加密令牌存储的OAuth 2.1身份验证
  • 安全会话管理和自动令牌刷新
  • 使用Zod模式和CORS保护进行输入验证
  • 基于环境的秘密管理
  • 多用户隔离:每个用户都有一个完全隔离的工作区,会话、令牌和数据严格分离。无法进行跨用户访问。所有Google Workspace API调用和内存图都按用户进行分区,以最大限度地保护隐私。

谷歌工作区覆盖率

  • Gmail:具有搜索、标签和批处理操作的完整电子邮件管理
  • 驾驶:支持Office格式和URL导入的文件操作
  • 文档:使用高级内容操作创建、编辑、搜索和批量更新Google文档
  • 日历:使用Google Meet和附件进行活动管理
  • 表格:具有灵活数据I/O的电子表格操作
  • 幻灯片:具有批量更新功能的演示文稿管理
  • 任务:使用层次结构完成任务和任务列表管理

智能上下文管理

  • 用于跨个人数据关系映射的图形数据库集成
  • 记忆持久性用于长期上下文保留
  • 复杂任务管理的顺序思维模式
  • 跨平台数据关联和洞察

开发者体验

  • 基于Vercel MCP SDK构建,实现最佳性能和可靠性
  • 带有Zod验证的完整TypeScript实现
  • 模块化架构,关注点清晰分离
  • PostgreSQL数据库与Drizzle ORM和图形数据库集成
  • 支持多种MCP传输方法,如Streamable HTTP和SSE(已弃用)

建筑

多用户架构和隔离访问

VaultAssist专为安全、多用户操作而设计。每个用户都通过OAuth 2.1进行身份验证,并被分配一个唯一的加密会话。所有Google Workspace API调用都严格代表经过身份验证的用户执行,以确保:

  • 数据隔离:用户数据、令牌和内存图按用户进行分区和加密。任何用户都不能访问其他用户的数据或会话。
  • 会话安全:会话使用Better Auth进行管理,为每个用户提供高级会话隔离和自动令牌刷新。
  • 用户API访问权限:所有Google API操作的范围都是经过身份验证的用户帐户,没有共享凭据。
  • 数据库和图形分区PostgreSQL和图形数据库条目按用户进行键控和隔离,防止跨用户数据泄漏。

这种架构使VaultAssist能够安全地并行为多个用户提供服务,并为隐私和访问控制提供强有力的保证。

项目结构

mcp-server/
├── src/
│   ├── app/
│   │   ├── api/[transport]/     # MCP endpoint with tool registry
│   │   ├── auth/                # Authentication pages
│   │   └── dashboard/           # User dashboard
│   ├── lib/
│   │   ├── auth.ts              # Better Auth configuration
│   │   ├── db/                  # Database schema & operations
│   │   └── toolset/google/      # Google API implementations
│   └── components/              # UI components
├── drizzle/                     # Database migrations
└── package.json

演示

https://github.com/user-attachments/assets/d0bf7f21-8044-4308-a029-1b8c13c439c9

先决条件

  • 节点v22+ 包管理器(bun、npm等)
  • PostgreSQL数据库 (本地或云端)
  • Neo4j数据库 (Aura或自托管)
  • Redis实例 (Uptash或自托管)
  • 谷歌云项目 使用OAuth 2.1凭据
  • MCP兼容客户端 (VS代码等)
  • 码头工人

设置和安装

1. 克隆并安装依赖关系

git clone https://github.com/3xCaffeine/mcp-server.git
cd mcp-server
bun install # or npm install, pnpm install, yarn install

2. 数据库设置

设置PostgreSQL数据库并配置环境变量:

# Copy environment template
cp .env.example .env

3. 谷歌云控制台设置

  1. 创建谷歌云项目
  2. 启用API:
    • Gmail API
    • Google Drive API
    • 谷歌日历API
    • 谷歌网页API
    • 谷歌幻灯片API
    • 谷歌任务API
  3. 创建OAuth 2.1凭据:
    • 首选 API和服务→ 凭证
    • 点击 创建凭据→ OAuth客户端ID
    • 选择 Web应用程序
    • 添加授权重定向URI:
      • http://localhost:3000/api/auth/callback/google
    • 下载凭据并添加到 .env

4. 数据库迁移

# Generate and run migrations
bun run drizzle:generate
bun run drizzle:migrate

# Optional: Open Drizzle Studio to inspect database
bun run drizzle:studio

5. 开发服务器

# Start development server
bun dev

访问 http://localhost:3000/dashboard 访问web界面。

部署步骤

  1. 检查Caddy配置并使用Docker Compose启动服务。
cd mcp-server/deployment/
docker compose up -d

MCP客户端配置

打开VS代码命令面板>MCP:打开用户配置并将以下内容粘贴到 mcp.json 配置。

VS代码MCP客户端

{
	"servers": {
		"google-workspace": {
			"url": "https://mcp.rycerz.es:3000/api/mcp",
			"type": "http"
		}
	},
	"inputs": []
}

身份验证流程

  1. 初始设置:用户访问 /auth 并登录谷歌
  2. OAuth流:Better Auth以增强的安全性处理Google OAuth 2.1流
  3. 令牌存储:访问/刷新令牌通过加密安全地存储在PostgreSQL中
  4. MCP会话:更好的Auth MCP插件以保险库级别的安全性管理会话令牌
  5. API访问:每个工具调用都使用存储的令牌访问Google API
  6. 图形集成:用户交互被映射到图形数据库以进行上下文管理

可用工具

Gmail工具

工具 说明
search_gmail_emails 使用Gmail查询语法搜索电子邮件
read_gmail_email 按邮件ID读取完整的电子邮件内容
send_gmail_email 发送带有附件和格式的电子邮件
draft_gmail_email 创建电子邮件草稿
modify_gmail_email 在电子邮件中添加/删除标签
delete_gmail_email 永久删除电子邮件
list_gmail_labels 列出所有Gmail标签
create_gmail_label 创建自定义标签
update_gmail_label 修改现有标签
delete_gmail_label 删除自定义标签
get_or_create_gmail_label 获取现有标签或创建新标签
batch_modify_gmail_emails 批量标签操作
batch_delete_gmail_emails 批量删除电子邮件

谷歌云端硬盘工具

工具 说明
search_drive_files 使用驱动器查询语法搜索文件
get_drive_file_content 读取文件内容(支持Office格式)
list_drive_items 列出目录中的文件和文件夹
create_drive_file 使用内容或URL创建文件

谷歌文档工具

工具 说明
search_docs 使用Drive API按名称搜索Google文档
get_doc_content 检索Google文档或Drive文件(.docx等)的内容
list_docs_in_folder 列出特定Drive文件夹中的Google文档
create_doc 创建一个新的谷歌文档,并可选择插入初始内容
modify_doc_text 修改Google文档中的文本-插入/替换文本和/或应用格式
find_and_replace_doc 在Google文档中查找和替换文本
insert_doc_elements 插入表、列表或分页符等结构元素
insert_doc_image 从驱动器或URL将图像插入Google文档
update_doc_headers_footers 更新Google文档中的页眉或页脚
batch_update_doc 在单个原子批更新中执行多个文档操作
inspect_doc_structure 找到安全插入点并了解文档结构
create_table_with_data 创建一个表并用数据填充它
debug_table_structure 调试表布局和单元格位置

谷歌日历工具

工具 说明
list_calendars 列出可访问的日历
get_events 使用筛选检索事件
create_event 使用Google Meet和附件创建活动
modify_event 更新现有事件
delete_event 删除事件
get_event 获取详细的事件信息

谷歌表格工具

工具 说明
list_spreadsheets 列出可访问的电子表格
get_spreadsheet_info 获取电子表格元数据
read_sheet_values 读取单元格范围
modify_sheet_values 写入/更新/清除单元格
create_spreadsheet 创建新的电子表格
create_sheet 将图纸添加到现有文件

谷歌幻灯片工具

工具 说明
create_presentation 创建新演示文稿
get_presentation 获取演示文稿详细信息
batch_update_presentation 应用多个更新
get_page 获取幻灯片信息
get_page_thumbnail 生成幻灯片缩略图

谷歌任务工具

工具 说明
list_task_lists 列出所有任务列表
get_task_list 获取任务列表详细信息
create_task_list 创建新任务列表
update_task_list 修改任务列表
delete_task_list 删除任务列表
list_tasks 列出带有筛选功能的任务
get_task 获取任务详细信息
create_task 创建具有层次结构的任务
update_task 修改任务
delete_task 删除任务
move_task 重新定位任务
clear_completed_tasks 清理已完成的任务

内存工具

工具 说明
memory_create_entities 将新实体存储在用户的内存图中。
memory_create_relations 创建实体之间的关系。
memory_add_observations 向现有实体添加详细信息。
memory_delete_entities 删除实体及其关系。
memory_delete_observations 从实体中删除特定详细信息。
memory_delete_relations 删除实体之间的关系。
memory_read_graph 检索完整内存图。
memory_search_nodes 按名称、类型或内容搜索节点。
memory_open_nodes 获取特定实体的详细信息。

顺序思维工具

工具 说明
sequentialthinking 动态、反思性的问题解决。

鸣谢