Gmail集成服务

提供Gmail邮件读取、发送、草稿、回复、转发及标签管理的服务器集成服务。

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

使用说明

gmail mcp

FastMCP服务器用于Gmail集成,支持阅读、发送、起草、, 回复、转发电子邮件和管理标签。

安装

# Clone the repository
git clone https://github.com/Karthik152299/gmail-mcp.git
cd gmail-mcp

# Create virtual environment
python -m venv .venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate

# Install dependencies
pip install -r requirements.txt

设置

  1. 创建谷歌云项目并启用Gmail API
  2. 创建OAuth 2.0凭据(桌面应用程序)
  3. 下载凭据并另存为 credentials.json 在项目根中
  4. 运行服务器一次以完成OAuth流程:
    python server.py
    
  5. 如果修改范围,请删除 token.json 并重新验证

MCP工具

阅读电子邮件

  • get_message(message_id, format?) -通过ID获取一封电子邮件
  • get_thread(thread_id, format?) -获取包含所有消息的电子邮件线程
  • list_threads(query?, max_results?, label_ids?, page_token?) -列表/搜索线程
  • list_labels() -列出所有Gmail标签

草稿

  • draft_email(to, subject, body, html_body?, attachments?) -创建草稿
  • draft_email_from_template(to, subject, template, variables, ...) -从模板创建草稿
  • list_drafts() -列出所有已保存的草稿
  • delete_draft(draft_id) -删除草稿
  • send_draft(draft_id, confirm) -发送草稿(需要确认=真)

发送

  • reply_message(message_id, body, confirm, ...) -回复消息
  • forward_message(message_id, to, body, confirm, ...) -转发消息

组织

  • modify_labels(message_id, add_labels?, remove_labels?) -添加/删除标签
  • mark_as_read(message_id) -将邮件标记为已读
  • mark_as_unread(message_id) -将邮件标记为未读
  • trash_message(message_id, confirm) -移至垃圾箱(需要确认=真)

公用事业

  • render_template(template, variables) -预览模板渲染

例子

阅读最近的电子邮件

{
  "tool": "list_threads",
  "args": {"query": "newer_than:7d", "max_results": 10}
}

阅读特定消息

{
  "tool": "get_message",
  "args": {"message_id": "18abc123def"}
}

起草并发送电子邮件

{
  "tool": "draft_email",
  "args": {
    "to": "recipient@example.com",
    "subject": "Hello",
    "body": "Plain text body",
    "html_body": "<p>HTML body</p>",
    "attachments": [{"path": "/path/to/file.pdf"}]
  }
}
{
  "tool": "send_draft",
  "args": {"draft_id": "uuid-here", "confirm": true}
}

使用模板

{
  "tool": "draft_email_from_template",
  "args": {
    "to": "user@example.com",
    "subject": "Welcome",
    "template": "Hi {name}, your code is {code}",
    "variables": {"name": "Alice", "code": "12345"}
  }
}

回复消息

{
  "tool": "reply_message",
  "args": {
    "message_id": "18abc123def",
    "body": "Thanks for your email!",
    "confirm": true
  }
}

搜索电子邮件

{
  "tool": "list_threads",
  "args": {"query": "from:boss@company.com is:unread", "max_results": 5}
}

附件格式

每个附件条目支持:

  • path:要附加的本地文件路径
  • content_base64:Base64编码文件内容
  • filename:使用时需要 content_base64
  • mime_type:可选MIME类型覆盖