这是一个模型上下文协议(MCP)服务器,它使Claude桌面应用(或其他支持MCP的应用)能够与Gmail进行交互,提供通过标准化接口读取、搜索和发送电子邮件的能力,以及其他更多功能。
除了标准的发送、读取、搜索等功能外,还支持回复所有人、抄送、密送、引用原始消息、转发邮件、创建、更新、列出和删除草稿、管理标签、标记邮件为已读或未读、归档;附件保存到您的文件夹。
我花费了很多时间来尽可能地模仿Gmail的行为。在回复中添加引用,在同一线程中回复和转发,类别管理(主要、社交、促销、更新、论坛)。
我还花了很多时间调整日期和时间以适应用户的时区。默认是GMT+0。所以当你请求昨天的邮件时,它会根据用户的时区进行调整。
最佳实践:当您要求Claude发送电子邮件时,请让它写好邮件/回复/转发并将其保存为草稿。您可以审阅后再手动确认发送。至少对于重要邮件来说是这样。
您可以直接使用npx运行MCP邮件服务器,而无需全局安装:
npx @cristip73/email-mcp
对于认证(首次设置):
npx @cristip73/email-mcp auth
克隆并安装:
git clone https://github.com/cristip73/MCP-email-server.git
cd MCP-email-server
npm install
构建服务器:
npm run build
使用Gmail进行认证:
npm run auth
这将打开一个浏览器窗口以使用您的Google账户进行认证。
使包对Claude可用:
npm link
在使用此应用程序之前,您需要在Google Cloud中设置OAuth凭证:
下载后:
gcp-oauth.keys.json~/.email-mcp/gcp-oauth.keys.json如何将MCP服务器添加到Claude桌面:
打开Claude桌面 > 单击顶部菜单中的“Claude” > 单击“设置” > 单击“开发者模式” > 选择“编辑配置” > 使用光标或其他文本编辑器编辑claude_desktop_config.json文件。
claude_desktop_config.json文件示例:{
"mcpServers": {
"email-server": {
"command": "npx",
"args": [
"-y",
"@cristip73/email-mcp"
],
"env": {
"TIME_ZONE": "GMT+2",
"DEFAULT_ATTACHMENTS_FOLDER": "/Users/username/CLAUDE/Attachments"
}
}
}
}
保存文件并重新启动Claude桌面。就这样!享受不再需要手动编写电子邮件信息的乐趣。只需让Claude为您完成即可。
如果您正确完成了所有步骤,您应该在Claude桌面 > 设置 > 开发者模式中的MCP服务器列表中看到email-server。如果没有,您将收到错误消息。如果您不确定,请向AI寻求帮助。
重要提示:将DEFAULT_ATTACHMENTS_FOLDER设置为系统上的有效路径。
重要提示:将TIME_ZONE设置为您的本地时区,格式为GMT(例如:GMT+2,GMT-5等)。否则,电子邮件的日期和时间将会不准确,默认设置为GMT+0。
该服务器即使没有TIME_ZONE或DEFAULT_ATTACHMENTS_FOLDER也能工作,但您的时区将不准确,且无法保存附件。
对于Claude代码编辑器,您可以通过运行以下命令添加服务器:
claude mcp add email-server -- /path/to/email-server/build/index.js
此服务器连接Claude AI与Gmail API,允许Claude:
不幸的是,Gmail不支持计划发送电子邮件。如果支持的话,这将非常棒。
通过实现模型上下文协议,它赋予了Claude执行经过身份验证的Gmail操作的能力,同时保持安全性和隐私性。
src/
├── index.ts # 应用程序入口点和服务器初始化
├── server.ts # MCP服务器实现
├── client-wrapper.ts # 支持多账户的Gmail API客户端封装
├── tool-handler.ts # 工具注册和请求路由
├── prompt-handler.ts # 提示管理和模板系统
├── version.ts # 版本信息
├── utils.ts # 用于日期、电子邮件等的共享实用工具
├── timezone-utils.ts # 时区处理和配置
└── tools/ # 按领域实现的工具
├── email-read-tools.ts # 阅读电子邮件的工具
├── email-send-tools.ts # 发送、回复和转发电子邮件的工具
├── email-search-tools.ts # 搜索和过滤电子邮件的工具
├── email-label-tools.ts # 管理标签和消息状态的工具
├── email-attachment-tools.ts # 列出和保存附件的工具
├── email-draft-tools.ts # 管理电子邮件草稿的工具
└── timezone-tool.ts # 验证时区配置的工具
服务器支持以下配置:
TIME_ZONE:时区配置,如'GMT+2'或'GMT-5'(默认:'GMT+0')DEFAULT_ATTACHMENTS_FOLDER:可以保存电子邮件附件的目录路径(例如,'/Users/username/CLAUDE/attachments')当您在文档中看到~/.email-mcp/credentials.json时,这意味着:
/Users/[your-username]/.email-mcp/credentials.json/home/[your-username]/.email-mcp/credentials.jsonC:\Users\[your-username]\.email-mcp\credentials.json同样适用于~/.email-mcp/gcp-oauth.keys.json。
这些文件存储在用户主目录下的隐藏目录中。应用程序在认证过程中会自动创建这个目录。
pageToken支持大型结果集导航DEFAULT_ATTACHMENTS_FOLDERsend_email
发送一封新的电子邮件。
参数:
to:收件人的电子邮件地址数组(必需)subject:电子邮件主题(必需)body:电子邮件正文内容(必需)cc:抄送收件人数组bcc:密送收件人数组inReplyTo:要回复的消息IDthreadId:要添加消息的线程IDreply_all_email
回复邮件并包括所有原始收件人(TO和CC)。
参数:
messageId:要回复的消息ID(必需)body:电子邮件正文内容(必需)additionalRecipients:要在回复中包含的额外收件人excludeRecipients:从回复中排除的收件人from:要用作发件人的特定发送地址(可选)该工具自动处理:
forward_email
将邮件转发给其他收件人。
参数:
messageId:要转发的消息ID(必需)to:要转发邮件的收件人列表(必需)additionalContent:在转发邮件前添加的内容cc:抄送收件人列表from:要用作发件人的特定发送地址(可选)该工具自动处理:
list_send_as_accounts
列出可用于发送电子邮件的所有账户和电子邮件地址。
参数:无
返回:
get_recent_emails
获取最近的邮件,支持时间过滤器、类别和已读状态。
参数:
hours:回溯的小时数maxResults:要返回的最大结果数(默认:25)query:附加的Gmail搜索查询pageToken:下一页结果的令牌category:按Gmail类别筛选(主要、社交、促销、更新、论坛)timeFilter:预定义的时间过滤器(今天、昨天、过去24小时)autoFetchAll:自动获取所有结果(最多100个),无需分页read_email
通过ID读取特定邮件并提取其内容。
参数:
messageId:要检索的邮件消息ID(必需)search_emails
使用Gmail查询语法搜索邮件,支持类别和时间过滤器。
参数:
query:Gmail搜索查询(必需)maxResults:要返回的最大结果数(默认:25)pageToken:下一页结果的令牌category:按Gmail类别筛选(主要、社交、促销、更新、论坛)timeFilter:预定义的时间过滤器(今天、昨天、过去24小时)autoFetchAll:自动获取所有结果(最多100个),无需分页list_labels
列出用户邮箱中的所有标签。
参数:无
get_label
获取特定标签的详细信息。
参数:
labelId:要检索的标签ID(必需)create_label
在用户邮箱中创建新的标签。
参数:
name:要创建的标签名称(必需)messageListVisibility:控制标签在消息列表中的可见性(show或hide)labelListVisibility:控制标签在标签列表中的可见性(labelShow、labelShowIfUnread或labelHide)textColor:文本颜色的十六进制格式(例如,#000000)backgroundColor:背景颜色的十六进制格式(例如,#ffffff)update_label
更新现有标签。
参数:
labelId:要更新的标签ID(必需)name:标签的新名称messageListVisibility:控制标签在消息列表中的可见性(show或hide)labelListVisibility:控制标签在标签列表中的可见性(labelShow、labelShowIfUnread或labelHide)textColor:文本颜色的十六进制格式(例如,#000000)backgroundColor:背景颜色的十六进制格式(例如,#ffffff)delete_label
从用户邮箱中删除标签。
参数:
labelId:要删除的标签ID(必需)modify_labels
向消息添加或移除标签。
参数:
messageId:要修改的消息ID(必需)addLabelIds:要添加到消息的标签ID数组removeLabelIds:要从消息中移除的标签ID数组mark_as_read
将消息标记为已读。
参数:
messageId:要标记为已读的消息ID(必需)mark_as_unread
将消息标记为未读。
参数:
messageId:要标记为未读的消息ID(必需)archive_message
归档消息(从收件箱中移除)。
参数:
messageId:要归档的消息ID(必需)unarchive_message
将消息移回到收件箱。
参数:
messageId:要移回到收件箱的消息ID(必需)trash_message
将消息移动到垃圾箱。
参数: