mcpField
G
gmail

gmail

本地服务
github.com/pulsemcp通信协作818 周前更新

关于 gmail

Gmail MCP 服务为 AI 助手提供 Gmail 邮件的读取、搜索、管理、草稿和发送功能。它同时支持个人 Gmail 账户(OAuth2)和 Google Workspace 账户(服务账号),适合需要在两种账户类型中使用邮件功能的用户。

主要功能

  1. 01按标签筛选并列出邮件会话
  2. 02读取邮件完整内容与附件信息
  3. 03使用 Gmail 查询语法搜索邮件
  4. 04标记已读、星标、归档和添加标签
  5. 05创建、更新和删除草稿邮件
  6. 06直接发送邮件或从草稿发送

适用场景

  1. 01让 AI 助手筛选和搜索未读邮件
  2. 02起草邮件回复并保存为草稿
  3. 03在 Google Workspace 中以服务账号访问邮箱

MCP 相关

作为 MCP 服务,向 MCP 客户端暴露 Gmail 邮件列表、搜索、修改、草稿和发送等工具,并可按工具分组限制权限。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"com-pulsemcp-gmail": {
"command": "npx",
"args": [
"-y",
"gmail-workspace-mcp-server"
],
"env": {
"GMAIL_OAUTH_CLIENT_ID": "<GMAIL_OAUTH_CLIENT_ID>",
"GMAIL_OAUTH_CLIENT_SECRET": "<GMAIL_OAUTH_CLIENT_SECRET>",
"GMAIL_OAUTH_REFRESH_TOKEN": "<GMAIL_OAUTH_REFRESH_TOKEN>",
"GMAIL_SERVICE_ACCOUNT_CLIENT_EMAIL": "<GMAIL_SERVICE_ACCOUNT_CLIENT_EMAIL>",
"GMAIL_SERVICE_ACCOUNT_PRIVATE_KEY": "<GMAIL_SERVICE_ACCOUNT_PRIVATE_KEY>",
"GMAIL_IMPERSONATE_EMAIL": "<GMAIL_IMPERSONATE_EMAIL>",
"GMAIL_ENABLED_TOOLGROUPS": "<GMAIL_ENABLED_TOOLGROUPS>"
}
}
}
}
启动命令npx -y gmail-workspace-mcp-server
需要配置的环境变量
GMAIL_OAUTH_CLIENT_ID密钥OAuth2 client ID from Google Cloud Console (for personal Gmail accounts).
GMAIL_OAUTH_CLIENT_SECRET密钥OAuth2 client secret from Google Cloud Console.
GMAIL_OAUTH_REFRESH_TOKEN密钥Refresh token from the OAuth2 setup script.
GMAIL_SERVICE_ACCOUNT_CLIENT_EMAILService account email address (for Google Workspace).
GMAIL_SERVICE_ACCOUNT_PRIVATE_KEY密钥Service account private key in PEM format (for Google Workspace).
GMAIL_IMPERSONATE_EMAILEmail address to impersonate (required for service account mode).
GMAIL_ENABLED_TOOLGROUPSComma-separated list of tool groups to enable (readonly, readwrite, readwrite_external).

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

安装包
npmgmail-workspace-mcp-server0.4.12

工具

还没有获取到工具列表

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

详细介绍

Gmail Workspace MCP 服务

一个为 AI 助手提供 Gmail 集成的 MCP(Model Context Protocol)服务。支持个人 Gmail 账号(通过 OAuth2)和 Google Workspace 账号(通过支持全域委派的服务账号)。

功能

  • 列出邮件会话:按标签筛选并检索邮件
  • 获取邮件详情:获取完整邮件内容,包括正文和附件信息
  • 搜索邮件:使用 Gmail 强大的查询语法进行搜索
  • 管理邮件:标记为已读/未读、加星标/取消星标、归档、应用标签
  • 创建草稿:撰写支持回复的邮件草稿
  • 发送邮件:直接发送新邮件或回复,也可发送草稿
  • 两种身份验证方式:个人账号使用 OAuth2,Google Workspace 使用服务账号

安装

npm install gmail-workspace-mcp-server

或使用 npx 直接运行:

npx gmail-workspace-mcp-server

身份验证

此服务支持两种身份验证模式。请选择与您的账号类型相匹配的模式。

选项 1:OAuth2(个人 Gmail 账号)

适用于个人 @gmail.com 账号,或没有 Workspace 管理员权限的任何 Google 账号。

前提条件
  1. 前往 Google Cloud Console
  2. 创建或选择一个项目
  3. 启用 Gmail API
  4. 配置 OAuth 同意屏幕:
    • 选择外部用户类型
    • 将自己添加为测试用户
    • 发布应用(在同意屏幕上点击“发布”),以防刷新令牌每 7 天过期。个人使用无需通过完整的 Google 验证。
  5. 创建 OAuth 2.0 凭据:
    • 选择桌面应用作为应用类型
    • 重要:请在发布应用后创建新的凭据
  6. 复制 Client ID 和 Client Secret
获取刷新令牌

运行内置的设置命令:

npx gmail-workspace-mcp-server oauth-setup <client_id> <client_secret>

您也可以通过环境变量传入凭据:

GMAIL_OAUTH_CLIENT_ID=... GMAIL_OAUTH_CLIENT_SECRET=... npx gmail-workspace-mcp-server oauth-setup

端口冲突? 如果端口 3000 已被占用,请指定其他端口:

PORT=3001 npx gmail-workspace-mcp-server oauth-setup <client_id> <client_secret>

桌面应用凭据会自动允许任何端口上的 http://localhost 重定向,因此无需额外配置 Google Cloud Console。

这将打开浏览器供您登录 Google,并输出刷新令牌。您只需执行一次此操作——只要 OAuth 同意屏幕已发布,刷新令牌就不会过期。

环境变量(OAuth2)
变量必填说明
GMAIL_OAUTH_CLIENT_ID是来自 Google Cloud Console 的 OAuth2 客户端 ID
GMAIL_OAUTH_CLIENT_SECRET是OAuth2 客户端密钥
GMAIL_OAUTH_REFRESH_TOKEN是设置脚本生成的刷新令牌
GMAIL_ENABLED_TOOLGROUPS否以逗号分隔的工具组列表(默认为全部)
Claude Desktop 配置(OAuth2)
{
  "mcpServers": {
    "gmail": {
      "command": "npx",
      "args": ["gmail-workspace-mcp-server"],
      "env": {
        "GMAIL_OAUTH_CLIENT_ID": "your-client-id.apps.googleusercontent.com",
        "GMAIL_OAUTH_CLIENT_SECRET": "your-client-secret",
        "GMAIL_OAUTH_REFRESH_TOKEN": "your-refresh-token"
      }
    }
  }
}
选项 2:服务账号(Google Workspace)

适用于域管理员可授予全域委派权限的 Google Workspace 组织。

前提条件
  1. 前往 Google Cloud Console
  2. 创建或选择一个项目
  3. 启用 Gmail API
  4. 创建一个已启用全域委派的服务账号
  5. 在 Google Workspace Admin Console 中,授予服务账号以下范围的访问权限:
    • https://www.googleapis.com/auth/gmail.readonly(读取邮件)
    • https://www.googleapis.com/auth/gmail.modify(修改标签)
    • https://www.googleapis.com/auth/gmail.compose(创建草稿)
    • https://www.googleapis.com/auth/gmail.send(发送邮件)
  6. 下载 JSON 密钥文件
环境变量(服务账号)
变量必填说明
GMAIL_SERVICE_ACCOUNT_CLIENT_EMAIL是服务账号邮箱地址
GMAIL_SERVICE_ACCOUNT_PRIVATE_KEY是服务账号私钥(PEM 格式)
GMAIL_IMPERSONATE_EMAIL是要模拟的邮箱地址
GMAIL_ENABLED_TOOLGROUPS否要启用的工具组列表,以逗号分隔(默认:所有组)

你可以在服务账号 JSON 密钥文件中找到 client_email 和 private_key 的值。

Claude Desktop 配置(服务账号)
{
  "mcpServers": {
    "gmail": {
      "command": "npx",
      "args": ["gmail-workspace-mcp-server"],
      "env": {
        "GMAIL_SERVICE_ACCOUNT_CLIENT_EMAIL": "[email protected]",
        "GMAIL_SERVICE_ACCOUNT_PRIVATE_KEY": "-----BEGIN PRIVATE KEY-----\nMIIE...\n-----END PRIVATE KEY-----",
        "GMAIL_IMPERSONATE_EMAIL": "[email protected]"
      }
    }
  }
}

注意: 对于私钥,你可以选择:

  1. 直接使用密钥,并用 \n 表示换行(如上所示)
  2. 从能够保留换行符的 shell 设置环境变量

工具组

该服务支持三个工具组,用于基于权限的访问控制:

组包含的工具风险等级
readonlylist_email_conversations、get_email_conversation、search_email_conversations、list_draft_emails低
readwrite所有只读工具 + change_email_conversation、upsert_draft_email中
readwrite_external所有读写工具 + send_email高

默认情况下,所有工具组均已启用。若要限制访问,请设置 GMAIL_ENABLED_TOOLGROUPS 环境变量:

# Read-only access (no write/send capabilities)
GMAIL_ENABLED_TOOLGROUPS=readonly

# Read and write, but no external sending
GMAIL_ENABLED_TOOLGROUPS=readwrite

# Full access including sending emails (default)
GMAIL_ENABLED_TOOLGROUPS=readwrite_external

安全提示: send_email 工具属于单独的 readwrite_external 组,因为它可以向外部发送邮件,风险高于修改标签或创建草稿等内部操作。

可用工具

list_email_conversations

列出 Gmail 邮件会话,并可选择使用筛选条件。

参数:

  • count(number,可选):要返回的邮件数量(默认:10,最大:100)
  • labels(string,可选):用于筛选的标签 ID,以逗号分隔(默认:"INBOX")
  • sort_by(string,可选):排序顺序——"recent"(最新优先)或 "oldest"(默认:recent)
  • after(string,可选):仅返回此日期时间之后的邮件,不包含此时间(ISO 8601 UTC,例如:"2024-01-15T14:30:00Z")
  • before(string,可选):仅返回此日期时间之前的邮件,不包含此时间(ISO 8601 UTC,例如:"2024-01-15T14:30:00Z")

示例:

{
  "count": 20,
  "labels": "INBOX,STARRED",
  "after": "2024-01-15T00:00:00Z",
  "before": "2024-01-20T23:59:59Z"
}
get_email_conversation

通过邮件 ID 获取特定邮件的完整内容。

参数:

  • email_id(string,必填):邮件的唯一标识符

示例:

{
  "email_id": "18abc123def456"
}
search_email_conversations

使用 Gmail 强大的查询语法搜索邮件。

参数:

  • query(string,必填):Gmail 搜索查询(例如:"from:[email protected]"、"is:unread"、"subject:meeting")
  • count(number,可选):要返回的最大结果数(默认:10,最大:100)

示例:

{
  "query": "from:[email protected] is:unread",
  "count": 20
}
change_email_conversation

修改邮件标签和状态(已读/未读、加星标、已归档)。

参数:

  • email_id(string,必填):要修改的邮件 ID
  • status(string,可选):"read"、"unread" 或 "archived"
  • is_starred(boolean,可选):为邮件加上或取消星标
  • labels(string,可选):要添加的标签,以逗号分隔
  • remove_labels(string,可选):要移除的标签,以逗号分隔

示例:

{
  "email_id": "18abc123def456",
  "status": "read",
  "is_starred": true
}
list_draft_emails

列出 Gmail 中的草稿邮件,可选按会话线程筛选。

参数:

  • count(number,可选):要返回的草稿数量上限(默认值:10,最大值:100)
  • thread_id(string,可选):按会话线程 ID 筛选草稿

示例:

{
  "thread_id": "18abc123def456"
}
upsert_draft_email

创建、更新或删除草稿邮件。也可选择将其作为对现有会话的回复。

参数:

  • draft_id(string,可选):要更新或删除的现有草稿 ID(省略则创建新草稿)
  • delete(boolean,可选):设为 true 以删除 draft_id 指定的草稿。删除时会忽略所有其他参数
  • to(string,创建/更新时必需):收件人电子邮件地址
  • subject(string,创建/更新时必需):邮件主题
  • plaintext_body(string):纯文本正文内容(创建/更新时,必须至少提供 plaintext_body 或 html_body 其中之一)
  • html_body(string):用于富文本格式的 HTML 正文内容(创建/更新时,必须至少提供 plaintext_body 或 html_body 其中之一)
  • cc(string,可选):抄送收件人
  • bcc(string,可选):密送收件人
  • thread_id(string,可选):回复所用的线程 ID
  • reply_to_email_id(string,可选):要回复的邮件 ID(设置 References/In-Reply-To 标头)

创建/更新时,必须至少提供 plaintext_body 或 html_body 其中之一。如果两者都提供,则会发送包含这两个版本的多部分邮件。

示例(创建新草稿):

{
  "to": "[email protected]",
  "subject": "Meeting Follow-up",
  "plaintext_body": "Thanks for the meeting today!"
}

示例(更新现有草稿):

{
  "draft_id": "r123456789",
  "to": "[email protected]",
  "subject": "Meeting Follow-up (revised)",
  "html_body": "<p>Thanks for the meeting today! Check out <a href=\"https://example.com/notes\">the notes</a>.</p>"
}

示例(删除草稿):

{
  "draft_id": "r123456789",
  "delete": true
}
send_email

直接发送邮件或发送现有草稿。

参数:

  • to(string,视情况而定):收件人电子邮件(除非从草稿发送,否则必需)
  • subject(string,视情况而定):邮件主题(除非从草稿发送,否则必需)
  • plaintext_body(string):纯文本正文内容(除非发送草稿,否则必须至少提供 plaintext_body 或 html_body 其中之一)
  • html_body(string):用于富文本格式的 HTML 正文内容(除非发送草稿,否则必须至少提供 plaintext_body 或 html_body 其中之一)
  • cc(string,可选):抄送收件人
  • bcc(string,可选):密送收件人
  • from_draft_id(string,可选):按 ID 发送现有草稿
  • thread_id(string,可选):回复所用的线程 ID
  • reply_to_email_id(string,可选):要回复的邮件 ID

示例(纯文本邮件):

{
  "to": "[email protected]",
  "subject": "Hello",
  "plaintext_body": "This is a test email."
}

示例(HTML 邮件):

{
  "to": "[email protected]",
  "subject": "Hello",
  "html_body": "<p>Check out <a href=\"https://example.com\">our website</a> for more details.</p>"
}

示例(发送草稿):

{
  "from_draft_id": "r123456789"
}

开发

设置
# Install dependencies
npm run install-all

# Build
npm run build

# Run in development mode
npm run dev
测试
# Run functional tests
npm test

# Run integration tests
npm run test:integration

# Run manual tests (requires credentials)
npm run test:manual

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

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

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