mcpField
G
Gmail Mcp

Gmail Mcp

本地服务
github.com/klodr通信协作172 天前更新

关于 Gmail Mcp

Gmail Mcp 是将 Gmail API 接入 AI 助手的 MCP 服务,支持邮件、线程、标签、筛选器、草稿和附件操作。它按 OAuth 权限筛选可用工具,并在服务端实施路径隔离和发送限制等防护。

主要功能

  1. 01读取、搜索和发送邮件
  2. 02管理草稿、标签和筛选器
  3. 03按线程查看与回复邮件
  4. 04下载邮件和附件
  5. 05按 OAuth 权限限制工具

适用场景

  1. 01搜索并整理 Gmail 邮件
  2. 02起草或发送受限收件人的邮件
  3. 03查看线程并撰写群组回复
  4. 04将邮件或附件保存到磁盘

MCP 相关

此 MCP 服务向 AI 客户端提供 Gmail 邮件、线程、标签、筛选器、草稿及附件工具。它根据已授权的 OAuth 范围筛选工具,并包含路径隔离等服务端防护。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"gmail-mcp-klodr": {
"command": "npx",
"args": [
"-y",
"@klodr/gmail-mcp"
]
}
}
}
启动命令npx -y @klodr/gmail-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@klodr/gmail-mcp

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

📧 gmail-mcp

通过任何支持 MCP 的 AI 助手读取、搜索、发送和起草 Gmail 邮件,以及管理标签、过滤器和邮件对话串。通过权限范围受控的工具和进程内防护机制封装 Gmail API。

CI CodeQL Tested with Vitest codecov OpenSSF Scorecard OpenSSF Best Practices Socket Security CodeRabbit Pull Request Reviews

npm version npm downloads Node.js Version MCP MCP Server PRs Welcome

Sponsor on GitHub Patreon Ko-fi

说明

这是 GongRzhe/Gmail-MCP-Server(于 2026-03-03 归档)的强化增强分支,源自 ArtyMcLabin/Gmail-MCP-Server。自分叉以来:180 多次提交和大规模重写,涵盖安全加固、Gmail 功能改进(全部回复、发送别名、邮件对话串级工具、下载到磁盘、收件人配对、带重试的批量操作……)、供应链卫生以及 CI 门禁。每个 PR 在合并前都会经过 CodeRabbit 和双模型 Qodo Merge 审查。有关安全控制和威胁模型,请参阅 SECURITY.md;有关与上游分支的差异,请参阅下方的对比表。

一个 Model Context Protocol (MCP) 服务,让 AI 助手(Claude Desktop、Claude Code、Cursor、Continue、OpenClaw……)通过权限范围受控的工具读取和管理 Gmail 帐户。通过一次 npx 安装,即可提供实际所需的 Gmail v1 API 功能(邮件、对话串、标签、过滤器、附件、草稿、全部回复)。

重要

定位。 上游将此分支称为 极致主义 分支。从外部看,这个标签是准确的,但它歪曲了我们的初衷。klodr/gmail-mcp 围绕四项特性构建——代码、测试和 CI/CD 的存在,都是为了落实且只落实这四项特性:

  • 安全 — 输入清理、收件人配对、速率限制、发件人解析和审计日志均由 服务端 强制执行(而非依赖操作者留意)。Gmail 的功能界面经过中介处理,而非原样暴露。
  • 自主 — 专为无人监控每项操作时仍能保持安全而设计。其威胁模型不同于上游的“我在自己的工作流中每天使用它”;进程内中间件正是弥合这一差距的关键。
  • 经过测试 — 43 个文件中共有 945 个 vitest 测试用例,语句覆盖率为 99.37%(分支覆盖率为 91%),另有 fast-check 基于属性的模糊测试套件和专门的加固测试文件。
  • 在加速变化中保持韧性 — 17 个 CI/CD 工作流(CodeQL、OSV、Gitleaks、leak-detect、Scorecard、Socket、SLSA、锁文件 lint、签名发布……)以安全生态实际变化的速度跟踪它——有时以天计,有时甚至以小时计。近期的具体案例:qs CVE-2026-8723,该漏洞在公开公告发布后的数小时内,就已在 klodr/* MCP 系列中披露并修复上线。

完整的设计依据和各项工具的设计权衡见 docs/DESIGN_DECISIONS.md。

✨ 为什么选择这个 MCP?

对原始 Gmail MCP 服务的三个维护中分支进行比较,重点关注 Agent 平台的实际需求——提示词注入安全、供应链完整性和运维规范:

能力GongRzhe/Gmail-MCP-Server(原始版本,已停止维护)ArtyMcLabin/Gmail-MCP-Server(中间分支)klodr/gmail-mcp(本仓库)
Gmail 核心功能
发送/草拟/读取/搜索邮件✅✅✅
标签增删改查✅✅✅
过滤器增删改查⚠️ list_filters 已损坏✅ 已修复✅
批量修改/删除✅✅✅
回复线程(In-Reply-To / References)❌ 回复会脱离原线程✅✅
全部回复工具❌✅✅
以别名发送(from 参数)❌✅✅
回复和转发会使用对话所用的别名发出,与 Gmail 网页界面一致;reply_all 不会抄送你自己的任何别名(前提是令牌可以读取发件人别名列表)❌❌✅
线程级工具(get_thread、list_inbox_threads、get_inbox_with_threads)❌✅✅
将邮件下载到磁盘(json/eml/txt/html)❌✅✅
下载附件✅✅✅
一次性下载邮件的所有附件,可选打包为一个 ZIP(保留原始文件名)❌❌✅
read_email 会显示 Cc / Bcc 行(以便决定使用回复还是全部回复)❌✅✅
OAuth/授权
用于最小权限授权的 --scopes 标志❌✅✅
根据已授权的作用域过滤工具列表❌✅✅
OAuth 凭据文件权限模式 0o600❌✅✅
OAuth 回环回调使用 state 和 PKCE(S256)进行校验,因此被截获的授权码无法被兑换❌❌✅
项目文件夹中遗留的 gcp-oauth.keys.json 仅会由 auth 导入,不会在普通启动时导入❌ 每次启动都会复制❌ 每次启动都会复制✅
安全性 — 输入处理
清理 CRLF 标头注入(\r\n\0)❌⚠️ 部分支持✅
download_attachment 中的路径遍历防护❌✅ 已修复✅
路径隔离区(附件源路径+下载目标路径),阻止提示词注入导致的数据外泄❌❌✅
符号链接安全写入(O_NOFOLLOW + mkdir 后重新验证 realpath,防范 TOCTOU)❌❌✅
对 maxResults / batchSize / messageIds 长度设置 Zod 上限❌❌✅
使用加密安全的 MIME 边界(crypto.randomBytes,而非 Math.random)❌❌✅
安全性 — 外发邮件和提示词注入
可选收件人允许列表(GMAIL_MCP_RECIPIENT_PAIRING):邮件发送、回复、转发和草稿只会发给已配对的地址❌❌✅
启用允许列表后,模型无法通过 gmail-mcp 扩展允许列表:由用户在 MCP 客户端中确认,或运行 npx @klodr/gmail-mcp pair add❌❌✅
如果 from 不是该账户的发件人别名之一,则拒绝该请求(发件人别名列表可读且非空时),避免 Gmail 悄悄改用默认地址发送❌❌✅
send_draft 会拒绝 To / Cc / Bcc 无法解析为地址的草稿—(无 send_draft)❌✅
每种工具系列在 24 小时和 30 天内的写入上限;批量工具按每封邮件计数,而非按调用次数计数❌❌✅
拒绝会转发邮件的过滤器(转发规则会悄悄重定向之后所有符合条件的邮件)❌ create_filter 接受 action.forward❌ create_filter 接受 action.forward✅ 拒绝并说明原因
为下载的文件标记其来自互联网(macOS 隔离属性、Windows Mark of the Web),与 Mail 和 Outlook 的做法相同❌❌✅
导出的 HTML:屏蔽脚本、框架和表单;除非明确要求,否则屏蔽远程图像、样式表、字体和媒体(跟踪像素)—(不支持 HTML 导出)❌ 无 CSP✅
MCP 协议和工具功能
MCP SDK 版本v0.4.xv1.27.xv1.32.x
工具注释(readOnlyHint / destructiveHint / idempotentHint)❌✅✅
llms-install.md(供 LLM 阅读的安装指南)❌❌✅
发布/可发现性
已发布到 npm❌ 已过时 — 不会再发布新版本(仓库已归档)❌(作为来自中间分支的 GitHub 安装包使用)✅ 专用作用域包,发布版本已签名
持续维护(最近 30 天)❌(2026-03-03 已归档)⚠️ 不定期✅ 每日审查周期(CodeRabbit +人工)
供应链完整性
Node.js 最低版本❌ >=14(2023 年 4 月停止支持)❌ >=14(2023 年 4 月停止支持)✅ >=24.18.1(已在 Node 24 和 26 上测试)
CI:CodeQL Advanced(javascript-typescript + actions)❌❌✅
CI:OpenSSF Scorecard(每周扫描 + 徽章)❌❌✅
CI:Socket Security 供应链警报❌❌✅
CI:每个 PR 均由 CodeRabbit 进行严格审查❌❌✅
发布:签名构建(Sigstore + SLSA in-toto 证明 + npm 来源证明)❌❌✅
发布:单文件 ESM 包❌❌✅
测试
单元/属性测试❌(0 个测试)⚠️(97 个测试)✅(945 个测试,43 个文件)
src/** 的语句覆盖率0%16.14%99.37%(分支覆盖率 91%)
fast-check 基于属性的模糊测试套件❌❌✅
专项强化测试文件(路径隔离区、CRLF、O_EXCL)❌❌✅
CI/CD 强化
可防范 Shell 注入的 GitHub Actions 工作流❌✅✅
工作流使用最小权限 permissions: 作用域❌✅✅
所有 GitHub Actions 均固定到完整提交 SHA❌❌✅
运维
CHANGELOG.md(Keep-a-Changelog)❌❌✅
SECURITY.md(漏洞报告)❌❌✅
klodr/gmail-mcp 是三者中唯一具备以下特性的项目:(a) 通过源路径隔离,使提示词注入附件窃取数据的攻击失效;(b) 提供恶意邮件无法诱使模型绕过的出站护栏——可选的收件人允许列表(模型无法通过 gmail-mcp 扩展该列表)、不设转发筛选器,以及会统计每封邮件的写入上限;(c) 采用现代供应链工具(Scorecard、Socket、Sigstore);(d) 在仓库内设有审查策略(.coderabbit.yaml),每个 PR 都必须通过该策略才能合并。

Fork 对照列基于 GongRzhe a890d19(2025-08-06,已归档)和 ArtyMcLabin 83e8daf(main,2026-08-12)的代码核查得出。

📦 安装

npm install -g @klodr/gmail-mcp

也可以直接通过 npx 安装:

npx -y @klodr/gmail-mcp

需要 Node.js 24.18.1+(已在 Node 24 和 26 上测试)。

⚙️ 配置

1️⃣ Google Cloud OAuth 凭据
  1. 打开 Google Cloud Console。
  2. 创建项目并启用 Gmail API。
  3. 在 APIs & Services → Credentials 下创建 OAuth 2.0 Client ID(桌面或 Web)。如果选择 Web,请将 http://localhost:3000/oauth2callback 添加到授权重定向 URI。
  4. 下载 JSON,将其重命名为 gcp-oauth.keys.json,并放在 ~/.gmail-mcp/gcp-oauth.keys.json(或通过 GMAIL_OAUTH_PATH=/abs/path/gcp-oauth.keys.json 覆盖)。
2️⃣ 进行身份验证(一次即可)
npx -y @klodr/gmail-mcp auth --scopes=gmail.readonly

始终通过 --scopes 指定实际所需的最小权限范围——MCP 会在启动时根据已授予的权限筛选工具列表,因此只读令牌不会向大模型暴露写入工具。浏览器会打开 Google 的授权流程页面;令牌会写入 ~/.gmail-mcp/credentials.json(模式 0o600)。

3️⃣ 在 MCP 客户端中注册服务
{
  "mcpServers": {
    "gmail": {
      "command": "npx",
      "args": ["-y", "@klodr/gmail-mcp"]
    }
  }
}

各客户端对应的配置文件:

  • Claude Code:~/.claude.json
  • Claude Desktop:~/Library/Application Support/Claude/claude_desktop_config.json(macOS)/ %APPDATA%\Claude\claude_desktop_config.json(Windows)
  • Cursor:~/.cursor/mcp.json
  • OpenClaw:~/.openclaw/openclaw.json

请参阅 llms-install.md,了解适用于大模型的安装指南。

🔑 OAuth 权限范围

权限简称完整 Gmail 权限范围授予的权限
gmail.readonly…/auth/gmail.readonly读取邮件、会话和标签(筛选工具需要 gmail.settings.basic)
gmail.modify…/auth/gmail.modify只读权限 + 应用/移除标签、删除邮件
gmail.compose…/auth/gmail.compose创建草稿
gmail.send…/auth/gmail.send发送邮件
gmail.labels…/auth/gmail.labels仅管理标签
gmail.settings.basic…/auth/gmail.settings.basic管理筛选器

配置示例:

# Read-only browsing
npx @klodr/gmail-mcp auth --scopes=gmail.readonly

# Read + send (mailing-list bot)
npx @klodr/gmail-mcp auth --scopes=gmail.readonly,gmail.send

# Everything (default; explicit)
npx @klodr/gmail-mcp auth --scopes=gmail.modify,gmail.settings.basic

# Default + permanent delete (delete_email / batch_delete_emails)
# gmail.modify authorizes trash; mail.google.com is the only scope
# that authorizes purging from Trash. Both are listed because the
# tool gate does exact scope-name matching — a token holding only
# mail.google.com would not enable the gmail.modify-gated tools,
# even though Google's scope hierarchy would technically accept the
# same calls.
npx @klodr/gmail-mcp auth --scopes=gmail.modify,mail.google.com,gmail.settings.basic

🛡️ 防护措施

进程内中间件(自主性限制)

自主运行的大模型客户端无法违反的运行时约束由服务端强制执行,而不是依赖操作人员时刻保持警惕。工具调用入口路径上设有七个进程内模块;仅选择启用的模块会在设置相应环境变量时激活。

始终启用(默认对每次调用生效):

  • sanitize.ts — 在输入到达 Gmail 标头、文件名或文件系统路径之前,对 LLM 提供的输入进行剥离和转义(CRLF 注入、控制字符、NUL 字节)。
  • sender-resolver.ts — 当发件人别名列表可读取且非空时,仅根据账户已授权的发件人别名解析 from 参数,因此在调用 Gmail API 发送邮件之前就会拒绝伪造发件人字段的行为;当列表不可用或为空时,显式指定的 from 会原样传递。未指定 from 且发件人别名列表可读取时,回复、转发或带线程的 send_email / draft_email 会沿用对话已使用的别名(即源邮件的发件地址或收件地址,否则使用线程中最后使用的地址),与 Gmail 网页界面的行为一致;reply_all 绝不会复制账户的任何别名。当列表不可用时(例如,令牌仅限于 gmail.send 或 gmail.compose),发件人会回退到 resolveDefaultSender,而 reply_all 仅排除账户自己的地址。
  • rate-limit.ts — 按工具类别(send、delete、modify、drafts、labels、filters、pairing)限制滚动日/月窗口内的写入量。批量工具(batch_modify_emails、batch_delete_emails、move_to_spam_batch)会按处理的邮件逐封计数,因此对 1 000 封邮件调用一次会消耗 1 000 个单位,而非 1 个。状态会持久化到磁盘,因此重启后仍然保留。仅在测试运行时使用 GMAIL_MCP_RATE_LIMIT_DISABLE=true 禁用。
  • quarantine.ts — 将 download_attachment、download_all_attachments 和 download_email 写入的每个文件都标记为从互联网下载,就像 Mail 和 Outlook 一样:在 macOS 上设置 com.apple.quarantine 属性(Gatekeeper 会在可执行文件或脚本打开时进行检查),在 Windows 上设置网络来源标记;Linux 上则不做处理。此功能不会阻止保存:如果无法设置标记,文件仍会保存。使用 GMAIL_MCP_QUARANTINE=false 关闭。
  • 拒绝转发过滤器(filter-manager.ts)— create_filter 和过滤器模板绝不会安装转发邮件的规则:此类规则会悄无声息地重定向所有之后匹配的邮件,而 Gmail 仅会转发到已验证的转发地址,其注册需要 gmail.settings.sharing 范围——该范围不在默认范围内,且此处没有工具会使用它;即使 --scopes 授予了该范围,仍会拒绝创建此类规则。请在 Gmail 网页界面中创建此类规则。
  • 导出的 HTML(email-export.ts)— download_email 以 html 格式写入的文件会包含 Content-Security-Policy,禁止脚本、插件、框架、<base> 重写和表单提交,并默认阻止所有远程内容获取——包括图像、样式表、字体、媒体等(default-src 'none')——因此跟踪像素或样式表无法报告副本何时、何地被打开(内联样式和图像仍可正常显示);发件人的 <meta http-equiv="refresh"> 会被禁用。可通过单次调用指定 allowRemoteImages: true,或全局设置 GMAIL_MCP_EXPORT_REMOTE_IMAGES=true 来允许远程内容。
  • send_draft 收件人检查 — 发送前会读取暂存的草稿;如果 To / Cc / Bcc 标头无法解析为地址列表,则会拒绝发送,因此始终可以确定草稿的收件人。
  • gmail-errors.ts — 将 Gmail API 的故障模式规范化为类型化错误,确保重试以及向 LLM 呈现错误的行为是确定的。
  • middleware.ts — 组合始终启用的处理链,并将其绑定到每个工具入口点。新工具会自动继承整个处理管线。

可选启用(默认关闭,设置环境变量以启用):

  • recipient-pairing.ts — 拒绝向未列入操作员控制的允许列表(~/.gmail-mcp/paired.json)中的地址发送邮件。不会向凭空捏造的地址发送新邮件。当设置 GMAIL_MCP_RECIPIENT_PAIRING=true 时启用;对 send_email / reply_* / forward_email / draft_email / update_draft / send_draft 这一组工具进行限制。比较地址时会忽略名称(Name <address> 与已配对的 address 匹配)。启用限制期间,模型无法通过 gmail-mcp 扩展列表:pair_recipient add 会要求用户通过 MCP 客户端确认(询问);如果客户端无法发起询问,则会拒绝操作并指出终端命令——npx @klodr/gmail-mcp pair add <address>(也可使用 pair remove、pair list)。否则,恶意邮件可能会指示 Agent 将其自身地址加入配对列表,然后向该地址发送邮件。此保证适用于 gmail-mcp 的功能范围:只要 MCP 客户端不允许模型运行终端命令(例如 npx @klodr/gmail-mcp pair add)或未经你批准就写入 paired.json,保证便持续有效。
  • audit-log.ts — 仅追加的 JSONL 轨迹,记录每次工具调用(名称、已编辑的参数、结果),并在编辑时保留结构键,以便操作员事后重现决策。设置 GMAIL_MCP_AUDIT_LOG=/abs/path/audit.jsonl 时启用。

通过以下环境变量配置各模块:

项目环境变量默认值说明
附件隔离目录GMAIL_MCP_ATTACHMENT_DIR=/abs/path~/GmailAttachments/(自动创建,权限模式为 0o700)每个附件路径(send_email、draft_email、update_draft、reply_all、reply_to_email、forward_email)在经过 realpath 规范化后都必须位于此目录内。拒绝指向目录外的符号链接。阻止提示词注入窃取 ~/.ssh/id_rsa、~/.gmail-mcp/credentials.json、~/.claude.json 等文件。
下载隔离目录GMAIL_MCP_DOWNLOAD_DIR=/abs/path~/GmailDownloads/(自动创建,权限模式为 0o700)download_email、download_attachment 和 download_all_attachments(包括各个文件和 ZIP 文件)只能写入此目录。使用 O_NOFOLLOW 打开叶节点;mkdir 后会重新验证解析后的路径是否位于隔离目录根目录内(防止 TOCTOU 攻击)。
OAuth 密钥路径GMAIL_OAUTH_PATH=/abs/path/gcp-oauth.keys.json~/.gmail-mcp/gcp-oauth.keys.jsonGoogle Desktop/Web OAuth 客户端凭据。
凭据路径GMAIL_CREDENTIALS_PATH=/abs/path/credentials.json~/.gmail-mcp/credentials.json访问令牌和刷新令牌。文件权限模式为 0o600。
速率限制状态目录GMAIL_MCP_STATE_DIR=/abs/path~/.gmail-mcp/保存速率限制滚动调用历史记录的位置(ratelimit.json,权限模式为 0o600)。未来的任何状态文件也会复用此目录。
速率限制覆盖值GMAIL_MCP_RATE_LIMIT_<bucket>=D/day,M/month见下文覆盖各类别的每日/每月上限。类别:send(100/2000)、delete(1000/10000)、modify(5000/50000)、drafts(300/3000)、labels(50/500)、filters(20/200)、pairing(50/500)。对于批处理工具,delete 和 modify 按邮件数量计数:每日 5 000 次修改可处理 5 批各含 1 000 封邮件的完整批次(用于清理大型收件箱),同时仍能阻止失控循环;永久删除仍限制为每日 1 000 封。每个外发工具(send_email、reply_all、reply_to_email、forward_email、send_draft)共用 send 类别。send 上限按人类专业工作量的较高水平设置(每天约 40 封邮件,并留有 2.5 倍余量);如果需要 v0.30.2 之前的默认值,请通过 GMAIL_MCP_RATE_LIMIT_send=400/day,6000/month 调高上限。类别名称使用小写,并与工具系列名称一致。
禁用速率限制GMAIL_MCP_RATE_LIMIT_DISABLE=true未设置(限制器已启用)整个限制器的紧急关闭开关。仅用于测试套件或受控批处理操作。
收件人配对GMAIL_MCP_RECIPIENT_PAIRING=true未设置(无允许列表)仅向已配对的地址发送邮件(GMAIL_MCP_PAIRED_PATH,默认值为 ~/.gmail-mcp/paired.json)。可在终端中使用 npx @klodr/gmail-mcp pair add <address> 进行配对,也可通过 pair_recipient 配对,该工具会要求你确认。
配对确认等待时间GMAIL_MCP_PAIRING_CONFIRM_TIMEOUT_MS=60000010 分钟pair_recipient add 等待你填写确认表单的时长,超时后将放弃(不会配对)。必须是以毫秒为单位的正整数;其他值均回退为默认值。MCP 客户端自身的工具调用超时可能会提前结束等待。
下载文件隔离GMAIL_MCP_QUARANTINE=false启用为每个下载文件添加 macOS com.apple.quarantine/Windows Mark of the Web;Linux 上不执行任何操作。绝不会阻止下载。
导出 HTML 中的远程内容(图片、样式表、字体、媒体)GMAIL_MCP_EXPORT_REMOTE_IMAGES=true已阻止html 格式下 download_email 的默认设置;单次调用的 allowRemoteImages 设置优先。
审计日志GMAIL_MCP_AUDIT_LOG=/abs/path/audit.jsonl未设置(无审计记录)选择启用的只追加 JSONL 日志,记录每次工具调用(名称、已脱敏的参数、结果)。文件权限模式为 0o600。必须使用绝对路径;启动时会拒绝相对路径。脱敏会保留结构性键,并移除允许列表之外的值。
试运行GMAIL_MCP_DRY_RUN=true未设置(执行实际调用)当值为 "true"(严格匹配)时,每个写入工具(send_email、reply_all、reply_to_email、forward_email、draft_email、update_draft、delete_draft、send_draft、delete_email、modify_email、batch_modify_emails、move_to_spam、move_to_spam_batch、batch_delete_emails、create_label、update_label、delete_label、get_or_create_label、create_filter、delete_filter、create_filter_from_template、modify_thread、pair_recipient)都会在调用 Gmail 前提前返回,并返回原本会发送的脱敏载荷。这与受速率限制的工具集合完全一致。pair_recipient 的所有操作(包括 list)都会提前返回。适用于 CI 冒烟测试、Agent 调试和人工审核工作流。读取工具和仅在本地运行的 download_* 工具会忽略此标志(邮箱中没有可预览的内容)。与同级服务中的 MERCURY_MCP_DRY_RUN/FAXDROP_MCP_DRY_RUN 行为一致。

🛠️ 工具

具体工具集取决于 auth 时授予的 OAuth 作用域。完整目录:

  • 邮件 — send_email、draft_email、read_email、search_emails、modify_email、delete_email、download_email、download_attachment、download_all_attachments、batch_modify_emails、batch_delete_emails、reply_all、reply_to_email、forward_email
  • 草稿 — list_drafts、get_draft、update_draft、delete_draft、send_draft(完整的 users.drafts.* 接口;上面的 draft_email 用于创建初始草稿)
  • 邮件会话 — get_thread、list_inbox_threads、get_inbox_with_threads、modify_thread
  • 标签 — list_email_labels、create_label、update_label、delete_label、get_or_create_label
  • 过滤器 — list_filters、get_filter、create_filter、delete_filter、create_filter_from_template
  • 收件人配对 — pair_recipient(当 GMAIL_MCP_RECIPIENT_PAIRING=true 时,管理 ~/.gmail-mcp/paired.json 允许名单)

根据 MCP 规范,每个写入工具都标注了 destructiveHint / readOnlyHint / idempotentHint,以便具备策略感知能力的客户端在执行前要求人工确认。

🔍 search_emails 查询语法

search_emails 支持 Gmail 原生搜索运算符——from:、to:、subject:、has:attachment、after:YYYY/MM/DD、before:YYYY/MM/DD、is:unread、label:<name> 等。它们可以自由组合:from:alice after:2026/01/01 has:attachment。完整参考:Google 的 Gmail 搜索运算符速查表。如果查询没有匹配结果,则会返回 No messages found for query: <query>,而不是空结果。

🗺️ 路线图

请参阅 ROADMAP.md。

🌐 生态系统

klodr 系列中的其他 MCP 服务
更广泛的 Gmail-MCP 生态

docs/COMPETITORS.md 中评审了 29 个独立仓库以及原始 GongRzhe 服务的 349 个分支,介绍我们借鉴了哪些想法、决定不采用哪些想法,以及 klodr/gmail-mcp 在成熟度维度上的位置。

🤝 参与贡献

请参阅 CONTRIBUTING.md,了解测试 / 构建 / lint 检查清单和发布流程。

🔒 安全

请参阅 SECURITY.md,了解漏洞报告流程和当前安全模型;另请参阅 ASSURANCE_CASE.md,了解威胁模型、信任边界以及 CWE/OWASP 缓解措施表。

📋 项目延续

如果维护者无法继续维护,请参阅 CONTINUITY.md 了解交接计划。

📄 许可证

MIT — 请参阅 LICENSE。

📜 历史

klodr/gmail-mcp 是沿两步上游链维护的分支:

  • GongRzhe/Gmail-MCP-Server — 原始服务。自 2025 年 8 月起停止维护(7 个多月没有维护者活动,且有 72 个以上未合并的拉取请求)。
  • ArtyMcLabin/Gmail-MCP-Server — Arty MacKiewicz 积极维护的分支。自与 Gong 分道扬镳后,该分支合并了社区贡献,包括:全部回复(#3,作者 @MaxGhenis)、list_filters 修复(#4,作者 @nicholas-anthony-ai)、CI/CD shell 注入加固(#9,作者 @JF10R)、download_email(#13,作者 @icanhasjonas)、工具注释(#14,作者 @bryankthompson)、read_email 中的 CC/BCC 字段(#21,作者 @panghy),以及草稿生命周期工具 send_draft / delete_draft / update_draft(#30,作者 @thisisambros)。回复线程自动解析和 --scopes 标志则由维护者直接纳入。

klodr/gmail-mcp 延续了上述所有改进,并增加了供应链/路径隔离/审核策略层(见上方对比表)。感谢这条贡献链上的每一位 PR 作者。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。