使用说明
Gmail MCP服务器
Gmail与FastMCP(模型控制协议)的集成,使AI助手能够通过一组工具和提示与Gmail进行交互。
概述
该项目提供了一种服务器-客户端架构,允许AI助手执行Gmail操作,例如:
- 发送电子邮件
- 阅读未读电子邮件
- 查看电子邮件内容
- 将电子邮件移至垃圾箱
- 在浏览器中打开电子邮件
- 将电子邮件标记为已读
该系统使用谷歌的OAuth 2.0进行身份验证,并使用Gmail API进行电子邮件操作。它现在包括一个支持LLM的客户端,可以理解自然语言请求。
组件
1.Gmail服务器(gmail_server.py)
为Gmail操作提供MCP工具的核心服务器:
- FastMCP集成:使用FastMCP框架将Gmail操作作为工具公开
- OAuth身份验证:处理Gmail API身份验证、令牌管理和刷新
- 电子邮件操作:实现电子邮件发送、阅读和管理功能
- 鼓励:包括电子邮件起草和管理的特殊提示
2.智能Gmail客户端(test_gmail_server.py)
Gmail服务器的自然语言界面:
- LLM集成:使用谷歌的生成式人工智能(Gemini)来解释用户请求
- 自然语言理解:将纯英文请求转换为工具调用
- 参数提取:自动从用户查询中提取所需参数
- 交互界面:为管理电子邮件提供对话体验
- 综合录井:包括调试通信的详细日志记录
设置和要求
先决条件
- Python 3.6+
- Gmail API凭据(用于通过Gmail进行身份验证)
- Google Generative AI API密钥(用于LLM客户端)
- 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凭据:
- 转到 谷歌云控制台
- 创建新项目或选择现有项目
- 为您的项目启用Gmail API
- 创建OAuth 2.0凭据(桌面客户端类型)
- 下载凭据JSON文件
- 将其重命名为
credentials.json并将其放置在项目根目录中
-
设置Gemini API密钥:
- 首选 谷歌人工智能工作室
- 创建新的API密钥
- 创建一个
.env文件基于example.env模板:cp example.env .env - 将Gemini API密钥添加到
.env文件:GOOGLE_API_KEY=your_api_key_here
-
第一次运行将生成令牌:
- 第一次运行Gmail服务器时,它将打开一个浏览器窗口
- 登录您的Google帐户并授予所请求的权限
- 这将生成一个
token.json用于未来身份验证的文件
身份验证文件
系统需要几个身份验证文件:
credentials.json:用于Gmail API的谷歌云控制台的OAuth客户端ID凭据token.json:生成用于通过身份验证访问Gmail的令牌文件.env:包含Google Generative 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
命令示例:
- “向[收件人]发送一封关于[主题]的电子邮件”
- “检查我的未读电子邮件”
- “阅读我最近的消息”
- “在浏览器中打开最新电子邮件”
- “将电子邮件从[发件人]移至垃圾箱”
- “将我的未读电子邮件标记为已读”
客户将:
- 使用LLM处理您的请求
- 确定要执行的Gmail操作
- 从您的请求中提取必要的参数
- 索取任何缺失的信息
- 执行前确认敏感操作
- 执行操作并显示结果
实现细节
电子邮件内容处理
- 支持解析和解码MIME消息
- 处理多部分消息和附件
- 正确解码电子邮件标题
LLM集成
- 使用Gemini 1.5 Flash进行自然语言理解
- 将LLM响应转换为结构化工具调用
- 包括用于处理格式错误的LLM响应的回退机制
- 处理从自由格式文本中提取参数
错误处理
- 整个应用程序的全面日志记录
- 优雅地处理来自Gmail API的HTTP错误
- LLM响应格式不符合预期时的回退机制
- 明确客户端应用程序的错误响应
发展
扩展智能客户端
要添加对新Gmail操作的支持:
- 在中添加适当的工具实现
gmail_server.py - 智能客户端将自动发现并公开新工具
- LLM将学习如何从工具描述中理解新操作的请求
定制LLM集成
您可以在中修改LLM提示 test_gmail_server.py 致:
- 改进特定用例的参数提取
- 为特定类型的请求添加专门的处理
- 根据您的特定Gmail使用模式调整系统
安全说明
此存储库不包括凭据文件。切勿承诺:
credentials.json文件token.json文件.env带有API密钥的文件
这些文件包含在 .gitignore 文件,以防止敏感信息的意外提交。
参考
https://medium.com/@jason summer/使用模型上下文协议mcp-061059c07777创建gmail代理