Gmail智能邮件管理服务

一个基于FastMCP协议和生成式AI的Gmail集成服务,提供自然语言交互的邮件发送、阅读和管理功能。

  • by gkdivya
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 gkdivya/gmail-mcp-server

使用说明

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
    

克隆后的初始设置

  1. 安装依赖项:

    pip install -r requirements.txt
    
  2. 设置Gmail API凭据:

    • 转到 谷歌云控制台
    • 创建新项目或选择现有项目
    • 为您的项目启用Gmail API
    • 创建OAuth 2.0凭据(桌面客户端类型)
    • 下载凭据JSON文件
    • 将其重命名为 credentials.json 并将其放置在项目根目录中
  3. 设置Gemini API密钥:

    • 首选 谷歌人工智能工作室
    • 创建新的API密钥
    • 创建一个 .env 文件基于 example.env 模板:
      cp example.env .env
      
    • 将Gemini API密钥添加到 .env 文件:
      GOOGLE_API_KEY=your_api_key_here
      
  4. 第一次运行将生成令牌:

    • 第一次运行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

命令示例:

  • “向[收件人]发送一封关于[主题]的电子邮件”
  • “检查我的未读电子邮件”
  • “阅读我最近的消息”
  • “在浏览器中打开最新电子邮件”
  • “将电子邮件从[发件人]移至垃圾箱”
  • “将我的未读电子邮件标记为已读”

客户将:

  1. 使用LLM处理您的请求
  2. 确定要执行的Gmail操作
  3. 从您的请求中提取必要的参数
  4. 索取任何缺失的信息
  5. 执行前确认敏感操作
  6. 执行操作并显示结果

实现细节

电子邮件内容处理

  • 支持解析和解码MIME消息
  • 处理多部分消息和附件
  • 正确解码电子邮件标题

LLM集成

  • 使用Gemini 1.5 Flash进行自然语言理解
  • 将LLM响应转换为结构化工具调用
  • 包括用于处理格式错误的LLM响应的回退机制
  • 处理从自由格式文本中提取参数

错误处理

  • 整个应用程序的全面日志记录
  • 优雅地处理来自Gmail API的HTTP错误
  • LLM响应格式不符合预期时的回退机制
  • 明确客户端应用程序的错误响应

发展

扩展智能客户端

要添加对新Gmail操作的支持:

  1. 在中添加适当的工具实现 gmail_server.py
  2. 智能客户端将自动发现并公开新工具
  3. LLM将学习如何从工具描述中理解新操作的请求

定制LLM集成

您可以在中修改LLM提示 test_gmail_server.py 致:

  • 改进特定用例的参数提取
  • 为特定类型的请求添加专门的处理
  • 根据您的特定Gmail使用模式调整系统

安全说明

此存储库不包括凭据文件。切勿承诺:

  • credentials.json 文件
  • token.json 文件
  • .env 带有API密钥的文件

这些文件包含在 .gitignore 文件,以防止敏感信息的意外提交。

参考

https://medium.com/@jason summer/使用模型上下文协议mcp-061059c07777创建gmail代理