Information
Gmail AutoAuth MCP 服务器
用于 Claude 桌面版中集成 Gmail 的 Model Context Protocol (MCP) 服务器,支持自动身份验证。该服务器使 AI 助手能够通过自然语言交互来管理 Gmail。

功能
发送带有主题、内容、附件和收件人的电子邮件
主题行和邮件内容完全支持国际字符
通过高级 MIME 结构处理按 ID 读取电子邮件消息
查看电子邮件附件信息(文件名、类型、大小)
使用各种条件(主题、发件人、日期范围)搜索电子邮件
全面的标签管理功能,包括创建、更新、删除和列出标签
列出所有可用的 Gmail 标签(系统和用户定义)
列出收件箱、已发送或自定义标签中的电子邮件
将电子邮件标记为已读/未读
将电子邮件移动到不同的标签/文件夹
删除电子邮件
批量操作,高效处理多封电子邮件
完全集成 Gmail API
简单的 OAuth2 身份验证流程,自动启动浏览器
支持桌面应用程序和 Web 应用程序凭据
全局凭据存储,方便使用
安装与身份验证
通过 Smithery 安装
要通过 Smithery 自动安装适用于 Claude 桌面版的 Gmail AutoAuth:
bash
npx -y @smithery/cli install @gongrzhe/server-gmail-autoauth-mcp --client claude
手动安装
创建 Google Cloud 项目并获取凭据:
a. 创建一个 Google Cloud 项目:
前往 Google Cloud 控制台
创建一个新项目或选择现有项目
为您的项目启用 Gmail API
b. 创建 OAuth 2.0 凭据:
进入“API 和服务”>“凭据”
点击“创建凭据”>“OAuth 客户端 ID”
选择“桌面应用”或“Web 应用程序”作为应用程序类型
给它命名并点击“创建”
对于 Web 应用程序,将 http://localhost:3000/oauth2callback 添加到授权重定向 URI 中
下载客户端的 OAuth 密钥 JSON 文件
将密钥文件重命名为 gcp-oauth.keys.json
运行身份验证:
您可以通过两种方式进行身份验证:
a. 全局身份验证(推荐):
bash
首次:将 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. 本地身份验证:
bash
将 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 应用程序凭据,请确保将 http://localhost:3000/oauth2callback 添加到您的授权重定向 URI 中
在 Claude 桌面版中配置:
json
\{
"mcpServers": \{
"gmail": \{
"command": "npx",
"args": [
"@gongrzhe/server-gmail-autoauth-mcp"
]
\}
\}
\}
Docker 支持
如果您更喜欢使用 Docker:
身份验证:
bash
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 auth2. 使用方法:
json
\{
"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:
bash
npx @gongrzhe/server-gmail-autoauth-mcp auth https://gmail.gongrzhe.com/oauth2callback
云环境设置说明
配置反向代理:
设置您的 n8n 容器以暴露一个用于认证的端口
配置反向代理将来自您的域名(例如 gmail.gongrzhe.com)的流量转发到该端口
DNS 配置:
在您的 DNS 设置中添加一条 A 记录,将您的域名解析到您的云服务器的 IP 地址
Google Cloud Platform 设置:
在 Google Cloud 控制台中,将您的自定义域名回调 URL(例如 https://gmail.gongrzhe.com/oauth2callback)添加到授权重定向 URI 列表中
运行认证:
bash
npx @gongrzhe/server-gmail-autoauth-mcp auth https://gmail.gongrzhe.com/oauth2callback
在应用程序中配置:
json
\{
"mcpServers": \{
"gmail": \{
"command": "npx",
"args": [
"@gongrzhe/server-gmail-autoauth-mcp"
]
\}
\}
\}
这种方法允许在无法访问 localhost 的环境中(如容器化应用或云服务器)正确执行认证流程。
可用工具
服务器提供了以下可通过 Claude Desktop 使用的工具:
1. 发送邮件 (send_email)
立即发送新邮件。
json
\{
"to": ["recipient@example.com"],
"subject": "明天的会议",
"body": "您好,
提醒您我们明天上午10点有会议。
此致敬礼",
"cc": ["cc@example.com"],
"bcc": ["bcc@example.com"]
\}
2. 草稿邮件 (draft_email)
创建一封草稿邮件但不发送。
json
\{
"to": ["recipient@example.com"],
"subject": "草稿报告",
"body": "这是供您审阅的草稿报告。",
"cc": ["manager@example.com"]
\}
3. 读取邮件 (read_email)
通过邮件 ID 检索特定邮件的内容。
json
\{
"messageId": "182ab45cd67ef"
\}
4. 搜索邮件 (search_emails)
使用 Gmail 搜索语法搜索邮件。
json
\{
"query": "from@example.com after:2024/01/01 has",
"maxResults": 10
\}
5. 修改邮件 (modify_email)
为邮件添加或移除标签(移动到不同的文件夹、归档等)。
json
\{
"messageId": "182ab45cd67ef",
"addLabelIds": ["IMPORTANT"],
"removeLabelIds": ["INBOX"]
\}
6. 删除邮件 (delete_email)
永久删除邮件。
json
\{
"messageId": "182ab45cd67ef"
\}
7. 列出邮件标签 (list_email_labels)
检索所有可用的 Gmail 标签。
json
\{\}
8. 创建标签 (create_label)
创建一个新的 Gmail 标签。
json
\{
"name": "重要项目",
"messageListVisibility": "show",
"labelListVisibility": "labelShow"
\}
9. 更新标签 (update_label)
更新现有的 Gmail 标签。
json
\{
"id": "Label_1234567890",
"name": "紧急项目",
"messageListVisibility": "show",
"labelListVisibility": "labelShow"
\}
10. 删除标签 (delete_label)
删除 Gmail 标签。
json
\{
"id": "Label_1234567890"
\}
11. 获取或创建标签 (get_or_create_label)
按名称获取现有标签,如果不存在则创建它。
json
\{
"name": "项目 XYZ",
"messageListVisibility": "show",
"labelListVisibility": "labelShow"
\}
12. 批量修改邮件 (batch_modify_emails)
高效批量地为多封邮件修改标签。
json
\{
"messageIds": ["182ab45cd67ef", "182ab45cd67eg", "182ab45cd67eh"],
"addLabelIds": ["IMPORTANT"],
"removeLabelIds": ["INBOX"],
"batchSize": 50
\}### 13. 批量删除邮件 (batch_delete_emails)
高效批量永久删除多封邮件。
json
\{
"messageIds": ["182ab45cd67ef", "182ab45cd67eg", "182ab45cd67eh"],
"batchSize": 50
\}
高级搜索语法
search_emails 工具支持 Gmail 强大的搜索操作符:
操作符示例描述from:from:john@example.com来自特定发件人的邮件to:to:mary@example.com发送给特定收件人的邮件subject:subject:"meeting notes"主题中包含特定文本的邮件has:attachmenthas:attachment带有附件的邮件after:after:2024/01/01在某个日期之后收到的邮件before:before:2024/02/01在某个日期之前收到的邮件is:is:unread具有特定状态的邮件label:label:work带有特定标签的邮件
您可以组合多个操作符:from:john@example.com after:2024/01/01 has:attachment
高级功能
邮件内容提取
服务器智能地从复杂的 MIME 结构中提取邮件内容:
当可用时优先选择纯文本内容
如果没有纯文本,则回退到 HTML 内容
处理带有嵌套部分的多部分 MIME 消息
处理附件信息(文件名、类型、大小)
保留原始邮件头(发件人、收件人、主题、日期)
国际字符支持
服务器完全支持邮件主题和内容中的非 ASCII 字符,包括:
土耳其语、中文、日语、韩语和其他非拉丁字母
特殊字符和符号
正确的编码确保在邮件客户端中正确显示
全面的标签管理
服务器提供了完整的工具集来管理 Gmail 标签:
创建标签:创建具有可自定义可见性设置的新标签
更新标签:重命名标签或更改其可见性设置
删除标签:移除用户创建的标签(系统标签受保护)
查找或创建:按名称获取标签,如果未找到则自动创建
列出所有标签:查看所有系统和用户标签及其详细信息
标签可见性选项:控制标签在消息列表和标签列表中的显示方式
标签可见性设置包括:
messageListVisibility:控制标签是否出现在消息列表中(show 或 hide)
labelListVisibility:控制标签如何出现在标签列表中(labelShow、labelShowIfUnread 或 labelHide)
这些标签管理功能使您能够直接通过 Claude 进行复杂的邮件组织,而无需切换到 Gmail 界面。
批量操作
服务器包括高效的批量处理能力:
一次处理最多 50 封邮件(可配置的批量大小)
自动分块处理大量邮件以避免 API 限制
为每个操作提供详细的成败报告
优雅的错误处理并单独重试
非常适合批量收件箱管理和组织任务
安全注意事项
OAuth 凭证安全存储在您的本地环境 (~/.gmail-mcp/) 中
服务器使用离线访问以保持持久认证
切勿共享或将凭证提交到版本控制系统
定期审查并在 Google 账户设置中撤销未使用的访问权限
凭证全局存储但仅当前用户可访问
故障排除
找不到 OAuth 密钥
确保 gcp-oauth.keys.json 文件位于当前目录或 ~/.gmail-mcp/ 目录中
检查文件权限
无效的凭证格式
确保证书文件包含 web 或 installed 凭证
对于 Web 应用程序,请验证重定向 URI 是否正确配置
端口已被占用
如果端口 3000 已被占用,请在运行认证前释放该端口- 您可以找到并停止使用该端口的进程
批量操作失败
如果批量操作失败,它们会自动重试单个项目
请检查详细的错误消息以了解具体的失败原因
如果遇到速率限制,请考虑减少批量大小
贡献
欢迎贡献!请随时提交 Pull Request。
许可证
MIT
支持
如果您遇到任何问题或有疑问,请在 GitHub 仓库中提交 issue。