返回市场
Gmail MCP 服务器

Gmail MCP 服务器

作者:GongRzhe830 星标更新:2025-08-06

项目介绍

Gmail AutoAuth MCP Server

这是一个用于Claude Desktop中Gmail集成的Model Context Protocol (MCP)服务器,支持自动身份验证。此服务器使AI助手能够通过自然语言交互管理Gmail。

smithery badge

功能

  • 发送带有主题、内容、附件和收件人的电子邮件
  • 全面支持附件 - 发送和接收文件附件
  • 将电子邮件附件下载到本地文件系统
  • 支持HTML电子邮件以及同时包含HTML和纯文本版本的多部分消息
  • 在主题行和电子邮件内容中全面支持国际字符
  • 通过高级MIME结构处理按ID读取电子邮件
  • 增强的附件显示,展示文件名、类型、大小和下载ID
  • 使用各种条件(主题、发件人、日期范围)搜索电子邮件
  • 全面的标签管理功能,包括创建、更新、删除和列出标签
  • 列出所有可用的Gmail标签(系统和用户定义)
  • 列出收件箱、已发送或自定义标签中的电子邮件
  • 标记电子邮件为已读/未读
  • 将电子邮件移动到不同的标签/文件夹
  • 删除电子邮件
  • 批量操作以高效处理多个电子邮件
  • 完整集成Gmail API
  • 简单的OAuth2身份验证流程,自动启动浏览器
  • 支持桌面应用和Web应用凭证
  • 全局存储凭证以方便使用

安装与认证

通过Smithery安装

要通过Smithery自动安装Gmail AutoAuth for Claude Desktop:

npx -y @smithery/cli install @gongrzhe/server-gmail-autoauth-mcp --client claude

手动安装

  1. 创建一个Google Cloud项目并获取凭证:

    a. 创建一个Google Cloud项目:

    b. 创建OAuth 2.0凭证:

    • 转到“API和服务” > “凭证”
    • 单击“创建凭证” > “OAuth客户端ID”
    • 选择“桌面应用”或“Web应用”作为应用类型
    • 给它命名并点击“创建”
    • 对于Web应用,请在授权重定向URI中添加http://localhost:3000/oauth2callback
    • 下载客户端OAuth密钥的JSON文件
    • 将密钥文件重命名为gcp-oauth.keys.json
  2. 运行认证:

    您可以通过两种方式认证:

    a. 全局认证(推荐):

    # 第一次:将gcp-oauth.keys.json放置在您的家目录下的.gmail-mcp文件夹中
    mkdir -p ~/.gmail-mcp
    mv gcp-oauth.keys.json ~/.gmail-mcp/
    
    # 从任何地方运行认证
    npx @gongrzhe/server-gmail-autoauth-mcp auth
    

    b. 局部认证:

    # 将gcp-oauth.keys.json放置在当前目录下
    # 文件将被自动复制到全局配置
    npx @gongrzhe/server-gmail-autoauth-mcp auth
    

    认证过程会:

    • 查找当前目录或~/.gmail-mcp/中的gcp-oauth.keys.json
    • 如果在当前目录中找到,则将其复制到~/.gmail-mcp/
    • 打开默认浏览器进行Google认证
    • 将凭证保存为~/.gmail-mcp/credentials.json

    注意

    • 成功认证后,凭证将全局存储在~/.gmail-mcp/中,并可以从任何目录使用
    • 支持桌面应用和Web应用凭证
    • 对于Web应用凭证,请确保在授权重定向URI中添加http://localhost:3000/oauth2callback
  3. 在Claude Desktop中配置:

{
  "mcpServers": {
    "gmail": {
      "command": "npx",
      "args": [
        "@gongrzhe/server-gmail-autoauth-mcp"
      ]
    }
  }
}

Docker支持

如果您更喜欢使用Docker:

  1. 认证:
docker run -i --rm \
  --mount type=bind,source=/path/to/gcp-oauth.keys.json,target=/gcp-oauth.keys.json \
  -v mcp-gmail:/gmail-server \
  -e GMAIL_OAUTH_PATH=/gcp-oauth.keys.json \
  -e "GMAIL_CREDENTIALS_PATH=/gmail-server/credentials.json" \
  -p 3000:3000 \
  mcp/gmail auth
  1. 使用:
{
  "mcpServers": {
    "gmail": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-v",
        "mcp-gmail:/gmail-server",
        "-e",
        "GMAIL_CREDENTIALS_PATH=/gmail-server/credentials.json",
        "mcp/gmail"
      ]
    }
  }
}

云服务器认证

对于云服务器环境(如n8n),您可以在认证期间指定自定义回调URL:

npx @gongrzhe/server-gmail-autoauth-mcp auth https://gmail.gongrzhe.com/oauth2callback

云环境设置说明

  1. 配置反向代理

    • 设置您的n8n容器以暴露一个端口用于认证
    • 配置反向代理以将流量从您的域名(例如gmail.gongrzhe.com)转发到该端口
  2. DNS配置

    • 在您的DNS设置中添加A记录,将您的域名解析到您的云服务器IP地址
  3. Google Cloud平台设置

    • 在您的Google Cloud控制台中,将您的自定义域名回调URL(例如https://gmail.gongrzhe.com/oauth2callback)添加到授权重定向URI列表中
  4. 运行认证

    npx @gongrzhe/server-gmail-autoauth-mcp auth https://gmail.gongrzhe.com/oauth2callback
    
  5. 在应用程序中配置

    {
      "mcpServers": {
        "gmail": {
          "command": "npx",
          "args": [
            "@gongrzhe/server-gmail-autoauth-mcp"
          ]
        }
      }
    }
    

这种方法允许认证流在无法访问localhost的环境中正常工作,例如容器化应用程序或云服务器。

可用工具

服务器提供了以下工具,可通过Claude Desktop使用:

1. 发送电子邮件 (send_email)

立即发送新邮件。支持纯文本、HTML或多部分邮件可选带附件

基本邮件:

{
  "to": ["recipient@example.com"],
  "subject": "明天会议",
  "body": "您好,\n\n提醒一下我们明天上午10点的会议。\n\n祝好",
  "cc": ["cc@example.com"],
  "bcc": ["bcc@example.com"],
  "mimeType": "text/plain"
}

带附件的邮件

{
  "to": ["recipient@example.com"],
  "subject": "项目文件",
  "body": "您好,\n\n请查收附上的项目文件。\n\n祝好",
  "attachments": [
    "/path/to/document.pdf",
    "/path/to/spreadsheet.xlsx",
    "/path/to/presentation.pptx"
  ]
}

HTML邮件示例:

{
  "to": ["recipient@example.com"],
  "subject": "明天会议",
  "mimeType": "text/html",
  "body": "<html><body><h1>会议提醒</h1><p>提醒一下我们<b>明天的会议</b>在上午10点。</p><p>祝好</p></body></html>"
}

多部分邮件示例(HTML+纯文本):

{
  "to": ["recipient@example.com"],
  "subject": "明天会议",
  "mimeType": "multipart/alternative",
  "body": "您好,\n\n提醒一下我们明天上午10点的会议。\n\n祝好",
  "htmlBody": "<html><body><h1>会议提醒</h1><p>提醒一下我们<b>明天的会议</b>在上午10点。</p><p>祝好</p></body></html>"
}

2. 草稿邮件 (draft_email)

创建草稿邮件而不发送。也支持附件

{
  "to": ["recipient@example.com"],
  "subject": "草案报告",
  "body": "这是供您审阅的草案报告。",
  "cc": ["manager@example.com"],
  "attachments": ["/path/to/draft_report.docx"]
}

3. 读取邮件 (read_email)

根据其ID检索特定邮件的内容。现在显示增强的附件信息

{
  "messageId": "182ab45cd67ef"
}

增强响应包括附件详细信息

主题:项目文件
来自:sender@example.com
收件人:recipient@example.com
日期:2025年6月19日 10:30:00 -0400

邮件正文内容在这里...

附件(2):
- document.pdf (application/pdf, 245 KB, ID: ANGjdJ9fkTs-i3GCQo5o97f_itG...)
- spreadsheet.xlsx (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, 89 KB, ID: BWHkeL8gkUt-j4HDRp6o98g_juI...)

4. 下载附件 (download_attachment)

新功能:将电子邮件附件下载到本地文件系统。

{
  "messageId": "182ab45cd67ef",
  "attachmentId": "ANGjdJ9fkTs-i3GCQo5o97f_itG...",
  "savePath": "/path/to/downloads",
  "filename": "downloaded_document.pdf"
}

参数:

  • messageId:包含附件的邮件ID
  • attachmentId:附件ID(在增强邮件显示中显示)
  • savePath:保存文件的目录(可选,默认为当前目录)
  • filename:自定义文件名(可选,如果没有提供则使用原始文件名)

5. 搜索邮件 (search_emails)

使用Gmail搜索语法搜索邮件。

{
  "query": "from:sender@example.com after:2024/01/01 has:attachment",
  "maxResults": 10
}

6. 修改邮件 (modify_email)

向邮件添加或移除标签(移动到不同文件夹、归档等)。

{
  "messageId": "182ab45cd67ef",
  "addLabelIds": ["IMPORTANT"],
  "removeLabelIds": ["INBOX"]
}

7. 删除邮件 (delete_email)

永久删除邮件。

{
  "messageId": "182ab45cd67ef"
}

8. 列出邮件标签 (list_email_labels)

检索所有可用的Gmail标签。

{}

9. 创建标签 (create_label)

创建新的Gmail标签。

{
  "name": "重要项目",
  "messageListVisibility": "show",
  "labelListVisibility": "labelShow"
}

10. 更新标签 (update_label)

更新现有Gmail标签。

{
  "id": "Label_1234567890",
  "name": "紧急项目",
  "messageListVisibility": "show",
  "labelListVisibility": "labelShow"
}

11. 删除标签 (delete_label)

删除Gmail标签。

{
  "id": "Label_1234567890"
}

12. 获取或创建标签 (get_or_create_label)

通过名称获取现有标签或如果不存在则创建它。

{
  "name": "项目XYZ",
  "messageListVisibility": "show",
  "labelListVisibility": "labelShow"
}

13. 批量修改邮件 (batch_modify_emails)

批量高效地修改多个邮件的标签。

{
  "messageIds": ["182ab45cd67ef", "182ab45cd67eg", "182ab45cd67eh"],
  "addLabelIds": ["IMPORTANT"],
  "removeLabelIds": ["INBOX"],
  "batchSize": 50
}

14. 批量删除邮件 (batch_delete_emails)

批量高效地永久删除多个邮件。

{
  "messageIds": ["182ab45cd67ef", "182ab45cd67eg", "182ab45cd67eh"],
  "batchSize": 50
}

14. 创建过滤器 (create_filter)

创建具有自定义标准和操作的新Gmail过滤器。

{
  "criteria": {
    "from": "newsletter@company.com",
    "hasAttachment": false
  },
  "action": {
    "addLabelIds": ["Label_Newsletter"],
    "removeLabelIds": ["INBOX"]
  }
}

15. 列出过滤器 (list_filters)

检索所有Gmail过滤器。

{}

16. 获取过滤器 (get_filter)

获取特定Gmail过滤器的详细信息。

{
  "filterId": "ANe1Bmj1234567890"
}

17. 删除过滤器 (delete_filter)

删除Gmail过滤器。

{
  "filterId": "ANe1Bmj1234567890"
}

18. 从模板创建过滤器 (create_filter_from_template)

使用预定义模板为常见场景创建过滤器。

{
  "template": "fromSender",
  "parameters": {
    "senderEmail": "notifications@github.com",
    "labelIds": ["Label_GitHub"],
    "archive": true
  }
}

过滤器管理功能

过滤器标准

您可以基于各种标准创建过滤器:

标准示例描述
from"sender@example.com"来自特定发件人的邮件
to"recipient@example.com"发送给特定收件人的邮件
subject"会议"主题中包含特定文本的邮件
query"has:attachment"Gmail搜索查询语法
negatedQuery"垃圾邮件"必须不包含的文本
hasAttachmenttrue带有附件的邮件
size10485760邮件大小(字节)
sizeComparison"larger"大小比较(largersmaller

过滤器操作

过滤器可以执行以下操作:

操作示例描述
addLabelIds["IMPORTANT", "Label_Work"]将标签添加到匹配的邮件
removeLabelIds["INBOX", "UNREAD"]从匹配的邮件中移除标签
forward"backup@example.com"将邮件转发到另一个地址

过滤器模板

服务器包括用于常见过滤场景的预构建模板:

1. 发件人模板 (fromSender)

过滤来自特定发件人的邮件,并可选归档它们。

{
  "template": "fromSender",
  "parameters": {
    "senderEmail": "newsletter@company.com",
    "labelIds": ["Label_Newsletter"],
    "archive": true
  }
}

2. 主题过滤器模板 (withSubject)

过滤包含特定主题文本的邮件,并可选标记为已读。

{
  "template": "withSubject",
  "parameters": {
    "subjectText": "[紧急]",
    "labelIds": ["Label_Urgent"],
    "markAsRead": false
  }
}

3. 附件过滤器模板 (withAttachments)

过滤所有带有附件的邮件。

{
  "template": "withAttachments",
  "parameters": {
    "labelIds": ["Label_Attachments"]
  }
}

4. 大邮件模板 (largeEmails)

过滤大于指定大小的邮件。

{
  "template": "largeEmails",
  "parameters": {
    "sizeInBytes": 10485760,
    "labelIds": ["Label_Large"]
  }
}

5. 内容过滤器模板 (containingText)

过滤包含特定文本的邮件,并可选标记为重要。

{
  "template": "containingText",
  "parameters": {
    "searchText": "发票",
    "labelIds": ["Label_Finance"],
    "markImportant": true
  }
}

6. 邮件列表模板 (mailingList)

过滤邮件列表邮件,并可选归档它们。

{
  "template": "mailingList",
  "parameters": {
    "listIdentifier": "dev-team",
    "labelIds": ["Label_DevTeam"],
    "archive": true
  }
}

常见过滤器示例

这里是一