使用说明
Google MCP服务器设置指南
概述
此MCP服务器通过模型上下文协议提供对谷歌服务(Gmail、谷歌文档、谷歌云端硬盘)的访问。它支持OAuth 2.0和服务帐户身份验证。
先决条件
- Node.js 18或更高版本
- TypeScript
- 启用了所需API的谷歌云项目
安装说明
1.谷歌云控制台设置
-
首选 谷歌云控制台
-
创建新项目或选择现有项目
-
启用以下API:
- Gmail API
- 谷歌文档API
- Google Drive API
-
创建OAuth 2.0凭据:
- 转到“API和服务”>“凭据”
- 点击“创建凭据”>“OAuth 2.0客户端ID”
- 选择“桌面应用程序”
- 下载JSON文件
2.环境配置
-
复制
.env.example向.env:cp .env.example .env -
编辑
.env并添加您的OAuth凭据:GOOGLE_CLIENT_ID=your_client_id_from_json GOOGLE_CLIENT_SECRET=your_client_secret_from_json GOOGLE_REDIRECT_URI=http://localhost:3000/auth/callback
3.构建和运行
-
安装依赖项:
npm install -
构建TypeScript代码:
npm run build -
运行服务器:
npm start
身份验证流程
OAuth 2.0(建议个人使用)
- 使用
oauth_authenticate获取授权URL的工具 - 访问URL并授权应用程序
- 从回调中复制授权码
- 使用
oauth_complete带有授权码的工具 - 服务器将保存令牌并自动刷新它们
服务帐户(用于服务器部署)
- 在Google Cloud Console中创建服务帐户
- 下载服务帐户密钥JSON文件
- 设置
GOOGLE_APPLICATION_CREDENTIALS文件路径的环境变量
可用工具
OAuth工具(使用OAuth 2.0时)
oauth_authenticate-启动OAuth流oauth_complete-使用授权码完成OAuthoauth_status-检查身份验证状态
Gmail工具
gmail_send_email-通过Gmail发送电子邮件gmail_list_emails-列出最近的电子邮件
谷歌文档工具
docs_create_document-创建新文档docs_read_document-读取文档内容docs_update_document-更新文档内容(追加/替换)
谷歌云端硬盘工具
drive_list_files-列出驱动器中的文件
示例用法
-
首先,进行身份验证(OAuth 2.0):
{ "tool": "oauth_authenticate" } -
使用代码完成身份验证:
{ "tool": "oauth_complete", "arguments": { "code": "your_authorization_code" } } -
发送电子邮件:
{ "tool": "gmail_send_email", "arguments": { "to": "recipient@example.com", "subject": "Test Email", "body": "Hello from MCP Server!" } } -
创建文档:
{ "tool": "docs_create_document", "arguments": { "title": "My New Document", "content": "This is the initial content." } }
安全说明
- OAuth令牌存储在
google-oauth-token.json在项目根中 - 令牌过期时会自动刷新
- 永远不要承诺你的
.env文件或令牌文件到版本控制 - 为您的用例使用适当的范围
故障排除
- 身份验证错误:检查您的OAuth凭据是否正确,重定向URI是否匹配
- API错误:确保在您的项目中启用了所需的Google API
- 权限错误:确保用户在OAuth流程中授予了必要的权限
- 令牌刷新错误:删除
google-oauth-token.json文件并重新验证
所需范围
服务器请求以下OAuth作用域:
https://www.googleapis.com/auth/documents-谷歌文档访问https://www.googleapis.com/auth/drive.readonly-只读驱动器访问https://www.googleapis.com/auth/drive.file-驱动器文件访问https://www.googleapis.com/auth/gmail.send-发送电子邮件https://www.googleapis.com/auth/gmail.readonly-阅读电子邮件 ..." } }
**Search for Unread Emails:**
```json
{
"tool": "gmail_list_emails",
"arguments": {
"query": "is:unread",
"maxResults": 5
}
}
文档管理示例
创建会议笔记文档:
{
"tool": "docs_create_document",
"arguments": {
"title": "Team Meeting Notes - December 2024",
"content": "# Meeting Agenda\\n1. Project Status\\n2. Next Steps\\n3. Action Items"
}
}
读取文档内容:
{
"tool": "docs_read_document",
"arguments": {
"documentId": "1ABC123xyz..."
}
}
文件附录:
{
"tool": "docs_update_document",
"arguments": {
"documentId": "1ABC123xyz...",
"content": "\\n\\n## Follow-up Items\\n- Review budget\\n- Schedule next meeting",
"action": "append"
}
}
驱动器文件管理
列出最近使用的文档:
{
"tool": "drive_list_files",
"arguments": {
"query": "mimeType='application/vnd.google-apps.document'",
"maxResults": 10
}
}
搜索特定文件:
{
"tool": "drive_list_files",
"arguments": {
"query": "name contains 'budget' and modifiedTime > '2024-12-01T00:00:00'"
}
}
故障排除
常见问题及解决方案
身份验证错误
问题: “需要身份验证”错误 解决:
- 检查OAuth令牌过期时间:
oauth_status - 重新验证:
oauth_authenticate→oauth_complete - 验证中的环境变量
.env - 检查Google Cloud API权限
问题: 令牌刷新失败 解决:
- 删除
google-oauth-token.json并重新验证 - 验证OAuth凭据是否正确
- 检查互联网连接
- 确保重定向URI与Google Cloud设置匹配
API权限错误
问题: “权限不足”或403错误 解决:
- 验证Google Cloud中是否启用了所需的API
- 检查OAuth范围是否包括必要的权限
- 对于服务帐户,确保IAM角色正确
- 通过服务帐户电子邮件共享资源
未找到文件/文档
问题: 找不到文档ID错误 解决:
- 验证文档ID是否正确(来自URL或驱动器API)
- 检查文档共享权限
- 确保文档未被删除
- 使用
drive_list_files查找正确的文档ID
调试模式
通过设置启用详细日志记录:
NODE_ENV=development
日志文件
服务器日志输出到stderr,包括:
- 身份验证状态
- API请求详细信息
- 带有堆栈跟踪的错误消息
OAuth回调服务器
要排除OAuth流的故障,请运行回调服务器:
npm run oauth-server
这将在以下位置启动本地服务器 http://localhost:3000 以处理OAuth重定向。
高级功能
资源端点
服务器为直接数据访问提供资源端点:
Gmail收件箱资源
URI: google://gmail/inbox
Description: Recent emails from Gmail inbox
MIME Type: application/json
最近使用的驱动器文件资源
URI: google://drive/recent
Description: Recently accessed Google Drive files
MIME Type: application/json
自定义Gmail查询
高级Gmail搜索运营商:
- has:attachment # Emails with attachments
- larger:10M # Emails larger than 10MB
- older_than:7d # Emails older than 7 days
- in:sent # Sent emails
- label:important # Important emails
- from:me to:you # Complex sender/recipient
文档文本提取
该服务器包括复杂的文本提取,可以处理:
- 段落:常规文本内容
- 表格:细胞含量提取
- 格式化:保留基本结构
- 富文本:转换为纯文本
自动令牌管理
服务器自动执行以下操作:
- 刷新令牌:当访问令牌过期时
- 保存令牌:将令牌持久化到磁盘
- 处理错误:身份验证失败时性能下降
- 验证范围:确保适当的权限
安全最佳实践
环境安全
-
永远不要泄露秘密
.env google-oauth-token.json credentials.json -
使用环境变量
# Preferred: Environment variables GOOGLE_ACCESS_TOKEN=... GOOGLE_REFRESH_TOKEN=... # Avoid: Hardcoded credentials -
保护文件权限
chmod 600 .env chmod 600 google-oauth-token.json
OAuth安全
-
在生产环境中使用HTTPS
GOOGLE_REDIRECT_URI=https://yourdomain.com/auth/callback -
限制OAuth作用域
- 仅请求必要的权限
- 定期审核授权范围
- 尽可能使用只读范围
-
代币轮换
- 令牌自动刷新
- 监控令牌过期
- 实施适当的错误处理
服务帐户安全
-
最小特权原则
- 授予最低要求的IAM角色
- 使用特定的资源权限
- 定期审核服务帐户访问权限
-
密钥管理
- 定期轮换服务帐户密钥
- 使用Google Cloud KMS进行密钥加密
- 监控云审核日志中的密钥使用情况
网络安全
-
防火墙配置
- 限制OAuth回调服务器访问
- 为服务帐户使用内部网络
- 监控API异常流量
-
API使用监控
- 设置配额监控
- 启用审核日志记录
- 监控异常访问模式
数据隐私
-
数据处理
- 遵循数据保留政策
- 实施适当的数据加密
- 尊重用户隐私设置
-
合规
- 遵守GDPR/CCPA要求
- 实施数据访问控制
- 维护审计跟踪
性能优化
请求优化
-
批量操作
- 在可用时使用批处理API
- 最小化单个API调用
- 实现请求排队
-
缓存策略
- 缓存文档元数据
- 实施速率限制
- 使用条件请求
错误处理
-
重试逻辑
- 速率限制的指数回退
- 暂时性错误的自动重试
- 断路器型式
-
监控
- 跟踪API使用配额
- 监控响应时间
- 设置故障警报