关于 Gmail MCP Server
Gmail MCP Server 向 AI 助手提供 Gmail 邮件操作和提示词。项目还包含基于 Gemini 的客户端,可将自然语言请求转换为工具调用。
主要功能
- 01发送和管理邮件
- 02读取未读及指定邮件
- 03在浏览器中打开邮件
- 04OAuth 2.0 身份验证
- 05基于 Gemini 的自然语言客户端
适用场景
- 01根据自然语言请求发送邮件
- 02查看未读或最近的邮件
- 03将邮件移入垃圾箱或标为已读
MCP 相关
MCP 服务将 Gmail 操作作为工具提供,并包含用于撰写和管理邮件的提示词。MCP 客户端通过 Google OAuth 身份验证后即可使用这些工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Gmail MCP 服务
使用 FastMCP(模型控制协议)集成 Gmail,让 AI 助手能够通过一组工具和提示词与 Gmail 交互。
概述
此项目提供了一种服务端-客户端架构,允许 AI 助手执行 Gmail 操作,例如:
- 发送邮件
- 查看未读邮件
- 查看邮件内容
- 将邮件移至垃圾箱
- 在浏览器中打开邮件
- 将邮件标记为已读
系统使用 Google 的 OAuth 2.0 进行身份验证,并通过 Gmail API 执行邮件操作。现在还包含一个由大模型驱动的客户端,可理解自然语言请求。
组件
1. Gmail 服务端(gmail_server.py)
提供 Gmail 操作 MCP 工具的核心服务端:
- FastMCP 集成:使用 FastMCP 框架将 Gmail 操作作为工具公开
- OAuth 身份验证:处理 Gmail API 身份验证、令牌管理和刷新
- 邮件操作:实现邮件发送、读取和管理功能
- 提示词:包含用于邮件起草和管理的专用提示词
2. 智能 Gmail 客户端(test_gmail_server.py)
Gmail 服务端的自然语言界面:
- 大模型集成:使用 Google 的生成式 AI(Gemini)理解用户请求
- 自然语言理解:将普通英语请求转换为工具调用
- 参数提取:自动从用户查询中提取所需参数
- 交互式界面:提供用于管理邮件的对话体验
- 全面日志记录:包含详细日志,便于调试通信过程
设置和要求
前置条件
- Python 3.6+
- Gmail API 凭据(用于 Gmail 身份验证)
- Google 生成式 AI API 密钥(用于大模型驱动的客户端)
- requirements.txt 中的包:
google-auth>=2.22.0 google-auth-oauthlib>=1.0.0 google-api-python-client>=2.95.0 fastmcp>=0.1.0 typing-extensions>=4.5.0 google-generativeai>=0.1.0 python-dotenv>=0.19.0
克隆后的初始设置
-
安装依赖项:
pip install -r requirements.txt -
设置 Gmail API 凭据:
- 前往 Google Cloud Console
- 创建新项目或选择现有项目
- 为项目启用 Gmail API
- 创建 OAuth 2.0 凭据(桌面客户端类型)
- 下载凭据 JSON 文件
- 将其重命名为
credentials.json,并放在项目根目录中
-
设置 Gemini API 密钥:
- 前往 Google AI Studio
- 创建新的 API 密钥
- 根据
example.env模板创建.env文件:cp example.env .env - 将 Gemini API 密钥添加到
.env文件中:GOOGLE_API_KEY=your_api_key_here
-
首次运行时将生成令牌:
- 首次运行 Gmail 服务端时,会打开一个浏览器窗口
- 登录 Google 账号并授予所请求的权限
- 这会生成
token.json文件,供后续身份验证使用
身份验证文件
系统需要多个身份验证文件:
credentials.json:Google Cloud Console 中用于 Gmail API 的 OAuth 客户端 ID 凭据token.json:用于已通过身份验证的 Gmail 访问的生成令牌文件.env:包含 Google 生成式 AI API 密钥的环境变量文件
使用方法
启动 Gmail 服务端
启动 Gmail 服务端:
python gmail_server.py --creds credentials.json --token token.json
服务端提供以下工具:
send_email:发送邮件,包含收件人、主题和正文get_unread_emails:获取未读邮件read_email:获取指定邮件的内容trash_email:将邮件移至垃圾箱open_email:在浏览器中打开邮件mark_email_as_read:将邮件标记为已读
使用智能 Gmail 客户端
智能客户端允许你使用自然语言与 Gmail 交互:
python test_gmail_server.py
示例命令:
- “给 [recipient] 发送一封关于 [topic] 的邮件”
- “检查我的未读邮件”
- “阅读我最近收到的邮件”
- “在浏览器中打开最新邮件”
- “将来自 [sender] 的邮件移至垃圾箱”
- “将我的未读邮件标记为已读”
客户端将:
- 使用大模型处理你的请求
- 判断你想执行哪项 Gmail 操作
- 从你的请求中提取必要参数
- 请求补充任何缺失的信息
- 在执行敏感操作前进行确认
- 执行操作并显示结果
实现细节
邮件内容处理
- 支持解析和解码 MIME 消息
- 处理多部分消息和附件
- 正确解码邮件标头
大模型集成
- 使用 Gemini 1.5 Flash 进行自然语言理解
- 将大模型响应转换为结构化工具调用
- 包含处理格式错误的大模型响应的回退机制
- 从自由文本中提取参数
错误处理
- 在整个应用程序中进行全面日志记录
- 妥善处理 Gmail API 的 HTTP 错误
- 在大模型响应格式不符合预期时使用回退机制
- 为客户端应用提供清晰的错误响应
开发
扩展智能客户端
若要支持新的 Gmail 操作:
- 在
gmail_server.py中添加相应的工具实现 - 智能客户端会自动发现并开放新工具
- 大模型会根据工具描述学会理解针对新操作的请求
自定义大模型集成
你可以修改 test_gmail_server.py 中的大模型提示词,以便:
- 改进特定用例的参数提取
- 针对特定类型的请求添加专门的处理方式
- 根据你的 Gmail 使用模式调整系统
安全说明
此代码库不包含凭据文件。切勿提交以下文件:
credentials.json文件token.json文件- 包含 API 密钥的
.env文件
这些文件已列入 .gitignore 文件,以防止意外提交敏感信息。
参考
https://medium.com/@jason.summer/create-a-gmail-agent-with-model-context-protocol-mcp-061059c07777
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。