使用说明
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. 谷歌云控制台设置
- 创建谷歌云项目
- 启用API:
- Gmail API
- Google Drive API
- 谷歌日历API
- 谷歌网页API
- 谷歌幻灯片API
- 谷歌任务API
- 创建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界面。
部署步骤
- 检查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": []
}
身份验证流程
- 初始设置:用户访问
/auth并登录谷歌 - OAuth流:Better Auth以增强的安全性处理Google OAuth 2.1流
- 令牌存储:访问/刷新令牌通过加密安全地存储在PostgreSQL中
- MCP会话:更好的Auth MCP插件以保险库级别的安全性管理会话令牌
- API访问:每个工具调用都使用存储的令牌访问Google API
- 图形集成:用户交互被映射到图形数据库以进行上下文管理
可用工具
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 |
动态、反思性的问题解决。 |
鸣谢
- 运行llama/mcp-nextjs -Next.js OAuth MCP实现
- NapthaAI/http oauth-mcp服务器 -MCP规范授权扩展
- 共和/Gmail MCP服务器 -Gmail工具
- j3k0/mcp谷歌工作区 -Gmail和日历
- taylorwilsdon/google_workspace_mcp -大多数谷歌服务都受到了这一点的启发
- 模型上下文协议/服务器 -顺序思维与基于知识图的记忆