Gmail邮件管理服务器

一个基于Gmail API的Model Context Protocol (MCP)服务器实现,提供标准化的邮件管理、发送和检索接口。

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

使用说明

Gmail MCP Server

A. 模型上下文协议(MCP) 服务器实现(针对……) Gmail(谷歌邮箱) API,提供标准化的电子邮件管理、发送和检索接口。

特点/特性

  • 实现完整的Gmail API覆盖,包括消息、线程、标签、草稿和设置
  • 支持发送、起草和管理电子邮件
  • 标签管理,支持自定义颜色和可见性设置
  • 用于会话管理的线程操作
  • 设置管理,包括假期自动回复、IMAP/POP设置以及语言设置
  • 邮箱变更的历史追踪
  • 使用Google Cloud凭据安全地进行OAuth2身份验证

先决条件

依赖项

为了最简便的安装,请安装 Node.js 18及以上版本如果你希望在本地构建,你还需要安装 pnpm(注:pnpm是一个包管理工具,类似于npm,但具有不同的特性和优势,这里直接音译加解释,但在实际中文语境中,通常直接说“pnpm”即可,无需额外解释,除非在特定上下文需要说明其功能)。

Google Workspace 设置

要运行这个MCP服务器,您需要为您的组织设置一个Google API客户端,每个用户都要运行一个脚本来获取自己的OAuth刷新令牌。

Google API 客户端设置(每个组织一次)

  1. 前往 Google 云端控制台。
  2. 创建一个新项目或选择一个现有项目。
  3. 为您的项目启用Gmail API。
  4. 前往“凭据”页面并创建一个OAuth 2.0客户端ID。客户端类型选择“桌面应用”。
  5. 下载并保存OAuth密钥JSON文件为 ~/.gmail-mcp/gcp-oauth.keys.json⚠️ 注意:为了创建 ~/.gmail-mcp/ 通过MacOS的Finder应用程序,你需要 启用隐藏文件 首先。
  6. (可选)对于远程服务器安装(例如,使用Smithery CLI),请注意 CLIENT_ID 并且 CLIENT_SECRET 从这个文件中。

客户端OAuth(每个用户一次)

  1. 让用户复制 ~/.gmail-mcp/gcp-oauth.keys.json 在相同的路径下连接到他们的电脑。
  2. 跑步 npx @shinzolabs/gmail-mcp auth。
  3. 一个浏览器窗口将会打开,用户可以在其中选择配置文件、查看所请求的权限范围,并进行批准。
  4. (可选)对于远程服务器安装,请注意成功消息中提到的文件路径(~/.gmail-mcp/credentials.json (默认情况下)。用户的 REFRESH_TOKEN 将在这里找到。

客户端配置

有几种配置MCP客户端与服务器连接的方法。对于托管/远程服务器设置,请使用Smithery的命令行界面(CLI)并搭配一个 Smithery API密钥对于本地安装,请使用 npx 或者从源代码构建。以下将对这些选项分别进行说明。

Smithery 远程服务器(推荐)

在您的MCP客户端中添加远程服务器 config.json,从(某个位置)运行以下命令 Smithery 命令行界面(CLI):

npx -y @smithery/cli install @shinzo-labs/gmail-mcp

请输入您的 CLIENT_ID, CLIENT_SECRET,以及 REFRESH_TOKEN 当被提示时。

Smithery SDK(注:Smithery可能是一个特定公司或项目的名称,因此直接音译,SDK即软件开发工具包)

如果你正在开发自己的代理应用程序,你可以使用模板代码 这里。

NPX 本地安装

在本地安装服务器,使用 npx在您的MCP客户端中添加以下内容 config.json:

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

从源代码构建

  1. 下载该仓库:
git clone https://github.com/shinzo-labs/gmail-mcp.git
  1. 安装包并使用以下工具进行构建: pnpm (在克隆的仓库内部):
pnpm i && pnpm build
  1. 在您的MCP客户端中添加以下内容 config.json:
{
  "mcpServers": {
    "gmail": {
      "command": "node",
      "args": [
        "/path/to/gmail-mcp/dist/index.js"
      ]
    }
  }
}

配置变量

变量 描述 是否必需 默认值
(分隔线) (分隔线) (分隔线) (分隔线)
CLIENT_ID GMAIL_OAUTH_PATH根据上述信息,以下是原文内容的翻译: '' 如果是远程服务器连接,则为是
CLIENT_SECRET GMAIL_OAUTH_PATH谷歌API客户端密钥(在 '' ) 如果是远程服务器连接,则为是
GMAIL_CREDENTIALS_PATH MCP_CONFIG_DIR/credentials.json 用户凭据文件的路径 否
GMAIL_OAUTH_PATH MCP_CONFIG_DIR/gcp-oauth.keys.json 谷歌API客户端文件的路径 否
MCP_CONFIG_DIR ~/.gmail-mcp 存储配置文件的目录 否
REFRESH_TOKEN GMAIL_CREDENTIALS_PATHOAuth刷新令牌(位于 '' 如果是远程服务器连接,则是
PORT 3000 用于Streamable HTTP传输方法的端口 否
TELEMETRY_ENABLED true 启用遥测功能 否

|

支持的终端节点

  • get_profile用户管理
  • stop_mail_watch获取当前用户的Gmail配置文件
  • watch_mailbox停止接收推送通知

为邮箱更改设置推送通知

信息管理

  • list_messages管理消息
  • get_message列出消息,并可选择过滤
  • get_attachment获取特定消息
  • modify_message获取消息附件
  • send_message修改消息标签
  • delete_message向指定收件人发送电子邮件
  • trash_message永久删除一条消息
  • untrash_message将消息移至垃圾箱
  • batch_modify_messages从垃圾箱中删除消息
  • batch_delete_messages修改多条消息

删除多条消息

  • list_labels标签管理
  • get_label列出所有标签
  • create_label获取特定标签
  • update_label创建一个新标签
  • patch_label更新标签
  • delete_label标签的部分更新

删除一个标签

  • list_threads线程管理
  • get_thread列出电子邮件线程
  • modify_thread获取特定线程
  • trash_thread修改线程标签
  • untrash_thread将帖子移至回收站
  • delete_thread从垃圾中移除线程

删除一个线程

  • list_drafts草稿管理
  • get_draft在用户的邮箱中列出草稿
  • create_draft通过ID获取特定草稿
  • update_draft在Gmail中创建一封草稿邮件
  • delete_draft替换草稿的内容
  • send_draft删除草稿

发送现有草稿

设置管理

  • get_auto_forwarding自动转发
  • update_auto_forwarding获取自动转发设置

更新自动转发设置

  • get_imapIMAP 设置
  • update_imap获取IMAP设置

更新IMAP设置

  • get_popPOP 设置
  • update_pop获取POP设置

更新POP设置

  • get_vacation假期回复助手
  • update_vacation获取假期回复设置

更新假期回复设置

  • get_language语言设置
  • update_language获取语言设置

更新语言设置

  • list_delegates代表们
  • get_delegate列出账户委托人
  • add_delegate获取特定的委托(或代表)
  • remove_delegate添加一个委托

移除代理

  • list_filters过滤器
  • get_filter列出电子邮件过滤器
  • create_filter获取特定的过滤器
  • delete_filter创建一个新过滤器

删除过滤器

  • list_forwarding_addresses转发地址
  • get_forwarding_address列出转发地址
  • create_forwarding_address获取一个特定的转发地址
  • delete_forwarding_address创建一个转寄地址

删除转发地址

  • list_send_as“Send-As 设置”
  • get_send_as列出“作为”别名列表
  • create_send_as获取特定的“作为”别名
  • update_send_as创建发送别名
  • patch_send_as更新发送别名
  • verify_send_as部分更新“发送为”别名
  • delete_send_as发送验证邮件

删除“作为”发送别名

  • list_smime_infoS/MIME 设置
  • get_smime_info列出S/MIME配置
  • insert_smime_info获取特定的S/MIME配置
  • set_default_smime_info上传新的S/MIME配置
  • delete_smime_info设置默认的S/MIME配置

删除S/MIME配置

贡献 欢迎并鼓励大家投稿!请阅读 `CONTRIBUTING.md` 翻译为中文是“贡献指南.md”

关于问题指南、投稿事宜及联系方式。

数据收集与隐私保护 Shinzo Labs会从这台服务器收集有限的匿名遥测数据,以帮助我们改进产品和服务。在此过程中,不会收集任何可识别个人身份的信息。请查阅相关(隐私政策/说明) 隐私政策

如需了解更多关于收集的数据类型以及如何选择退出此项遥测的信息,请参阅。

许可证