多账户邮件日历管理服务器

一个本地运行的MCP服务器,用于连接多个Gmail账户和Google日历到Claude Desktop,提供统一的邮件搜索、发送、草稿管理以及日历事件查询功能。

  • by DiegoMaldonadoRosas
  • Python
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 DiegoMaldonadoRosas/gmail-mcp

使用说明

Gmail和日历多帐户MCP服务器

本地人 模型上下文协议(MCP) 将多个Gmail帐户和谷歌日历连接到克劳德桌面的服务器。完全在您的计算机上运行,无需云托管。

特性

  • 多个账户 --根据需要连接尽可能多的Gmail或Google Workspace帐户
  • 统一电子邮件搜索 --使用Gmail的完整查询语法同时搜索所有帐户
  • 完全读取权限 --读取单个消息和整个线程
  • 发送并起草 --从任何帐户撰写和发送电子邮件,或保存草稿
  • 标签管理 --列出标签、标记为已读/未读、星号消息
  • 谷歌日历 --列出日历、浏览即将举行的活动、按关键字搜索

需求

  • macOS(在macOS 14+上测试)
  • Python 3.11+
  • 启用Gmail API和日历API的谷歌云项目(免费)
  • 克劳德桌面版

安装

1.克隆存储库

git clone https://github.com/DiegoMaldonadoRosas/gmail-mcp.git
cd gmail-mcp

2.运行安装脚本

bash setup.sh

这将创建一个虚拟环境并安装所有Python依赖项。

3.配置您的帐户

复制示例配置并填写您的帐户:

cp config.json.example config.json

编辑 config.json:

{
  "accounts": {
    "personal": {
      "email": "you@gmail.com",
      "description": "Personal Gmail"
    },
    "work": {
      "email": "you@company.com",
      "description": "Work account"
    }
  },
  "credentials_dir": "./credentials"
}

帐户密钥(personal, work)是您在要求Claude与特定帐户交互时将使用的名称。

4.获取Google OAuth凭据

  1. 首选 谷歌云控制台
  2. 创建一个项目并启用 Gmail API 和那个 谷歌日历API
  3. 首选 API和服务→ 凭证→ + 创建凭据→ OAuth 2.0客户端ID
  4. 选择 桌面应用程序 作为应用程序类型
  5. 下载JSON文件并将其另存为 credentials/client_secret.json
  6. 首选 API和服务→ OAuth同意屏幕→ 测试用户 并添加您在中配置的每个电子邮件地址 config.json

5.验证您的帐户

source .venv/bin/activate
python setup_auth.py

每个帐户都将打开一个浏览器窗口。使用正确的Google帐户登录。令牌保存在本地并自动刷新——每个帐户只需要执行一次。

注: 如果您之前仅通过Gmail身份验证,则必须重新运行 setup_auth.py 添加日历支持后,令牌将包含新的日历权限。

6.将服务器添加到Claude Desktop

打开 ~/Library/Application Support/Claude/claude_desktop_config.json 并添加:

{
  "mcpServers": {
    "gmail": {
      "command": "/absolute/path/to/gmail-mcp/.venv/bin/python",
      "args": ["/absolute/path/to/gmail-mcp/server.py"]
    }
  }
}

替换 /absolute/path/to/gmail-mcp 使用克隆仓库的实际路径。

7.重新启动克劳德桌面

所有工具将自动显示。

可用工具

Gmail

工具 说明
list_accounts 列出所有已配置的帐户及其身份验证状态
gmail_get_profile 获取帐户配置文件和邮箱统计信息
gmail_search 使用Gmail查询语法搜索电子邮件(一个或所有帐户)
gmail_read_message 阅读消息的全部内容
gmail_read_thread 阅读一个线程中的所有消息
gmail_send 从特定帐户发送电子邮件
gmail_create_draft 将电子邮件另存为草稿
gmail_list_drafts 列出帐户中的草稿
gmail_list_labels 列出所有标签和文件夹
gmail_modify_labels 添加或删除标签(标记已读/未读、星号等)
gmail_trash 将邮件移至垃圾箱

谷歌日历

工具 说明
calendar_list_calendars 列出帐户的所有日历(主日历、工作日历、共享日历等)
calendar_list_events 列出即将发生的事件,可选择按日期范围筛选
calendar_search 按关键字(标题、描述、位置、与会者)搜索事件
calendar_get_event 获取特定事件的完整详细信息

使用示例

连接后,您可以问Claude以下问题:

电子邮件:

  • “我的工作帐户中有未读的电子邮件吗?”
  • “在我的所有账户中搜索上个月收到的发票”
  • “阅读我个人帐户中约翰的最后一封电子邮件”
  • “在我的工作帐户中起草预算电子邮件的回复”
  • “标记来自的所有电子邮件newsletter@example.com如读“

日历:

  • “我的工作账户本周有哪些会议?”
  • “在我的个人日历中搜索与‘产品发布’相关的活动”
  • “列出我工作帐户中的所有日历”
  • “明天脱口秀的细节是什么?”

添加新帐户

  1. 将帐户添加到 config.json
  2. 将电子邮件添加为Google Cloud Console中的测试用户(OAuth同意屏幕)
  3. 跑 python setup_auth.py --它只会提示输入新帐户
  4. 重新启动克劳德桌面

安全

  • OAuth令牌存储在本地 credentials/tokens/ 并通过以下方式排除在版本控制之外 .gitignore
  • config.json (包含您的电子邮件地址)也被排除在版本控制之外
  • 不会向任何第三方服务器发送任何内容,所有通信都直接在您的Mac和Google的API之间进行
  • 要随时撤销访问权限,请访问 myaccount.google.com/permissions

项目结构

gmail-mcp/
├── server.py           # MCP server — exposes 15 tools to Claude
├── auth.py             # OAuth2 token manager (per account)
├── gmail.py            # Gmail API wrapper
├── gcalendar.py        # Google Calendar API wrapper
├── config.py           # Configuration loader
├── setup_auth.py       # One-time authentication script
├── setup.sh            # First-time installer
├── requirements.txt    # Python dependencies
├── config.json.example # Account configuration template
└── .gitignore          # Excludes credentials and config.json

许可证

麻省理工学院