Gmail MCP服务

一个为Gmail集成提供模型上下文协议(MCP)服务的服务器,支持邮件列表、标签管理、发送邮件等Gmail操作。

  • by cnye36
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 cnye36/gmail-mcp-server

使用说明

Gmail MCP服务器

用于Gmail集成的模型上下文协议(MCP)服务器。它将Gmail操作作为MCP工具公开。 OAuth由您的主机应用程序处理;此服务器不存储凭据或运行OAuth流。您的应用程序获取Google令牌并将其传递给每个令牌 tools/call 请求。

特性

  • 📧 列出并阅读Gmail邮件
  • 🏷️ 管理Gmail标签
  • ✉️ 发送电子邮件并创建草稿
  • 🗑️ 垃圾箱、取消跟踪和删除邮件
  • 🛡️ 只读模式支持
  • 🐳 Docker支持

先决条件

  • Node.js 20+(如果在本地运行)
  • Docker和Docker Compose(如果使用Docker)
  • 您的主机应用程序 必须拥有Google OAuth2凭据(客户端ID和密钥)并运行OAuth流;然后,它将令牌传递给此服务器 tools/call params。

设置

环境(MCP服务器)

此服务器不需要Google客户端ID或密码。可选环境:

PORT=3003
READ_ONLY=false

使用Docker运行(推荐)

构建和启动

docker-compose up -d

查看日志

docker-compose logs -f

停止

docker-compose down

本地运行

再进行

pnpm install

构建

pnpm run build

启动服务器

pnpm start

或用于开发:

pnpm run dev

身份验证(在主机应用程序中)

根据MCP授权和RFC 6750,访问令牌以如下方式发送 Authorization标头中的承载令牌,不在请求正文中。

你的 主机应用程序 负责:

  1. 持有Google OAuth2客户端ID和密码
  2. 运行OAuth流(将用户重定向到Google,处理回调,交换令牌代码)
  3. 为每个用户存储/刷新令牌
  4. 在每个MCP上 tools/call 请求,发送用户的 访问令牌 在标题中:
Authorization: Bearer <access_token>

请求示例:

POST /mcp
Content-Type: application/json
Authorization: Bearer ya29.a0...

{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "gmail.listLabels",
    "arguments": {}
  },
  "id": 1
}

此服务器不存储令牌;它仅使用授权标头中的承载令牌。

API终点

健康检查

GET /health

MCP(JSON-RPC 2.0)

POST /mcp

正文:JSON-RPC 2.0请求及其方法 initialize, tools/list, tools/call, prompts/list,或 resources/list.

可用的MCP工具

读取操作

  • gmail.listLabels -列出Gmail标签
  • gmail.listMessages -列出带有可选筛选器的邮件
  • gmail.getMessage -获取特定消息
  • gmail.getThread -获取消息线程
  • gmail.getProfile -获取用户资料

写入操作(要求READ_ONLY=false)

  • gmail.sendMessage -发送电子邮件
  • gmail.createDraft -创建电子邮件草稿
  • gmail.modifyMessageLabels -添加/删除标签
  • gmail.trashMessage -将邮件移至垃圾箱
  • gmail.untrashMessage -从回收站还原
  • gmail.deleteMessage -永久删除

安全说明

  • 仅在您的主机应用程序中保留OAuth客户端ID和密钥;此服务器不需要它们
  • 使用只读模式(READ_ONLY=true)仅阅读电子邮件时
  • 令牌是按请求传递的,不会由此服务器持久化

许可证

国际学生委员会