使用说明
Gmail MCP服务器
全面 模型上下文协议(MCP)服务器 对于Gmail,它有17个工具、一个交互式CLI设置向导、一个基于浏览器的Web UI向导和完整的Docker支持。
特性
| 工具 | 说明 |
|---|---|
list_emails |
使用可选的查询过滤器列出收件箱或任何标签中的电子邮件 |
read_email |
阅读完整的电子邮件内容(标题+解码正文) |
search_emails |
使用Gmail查询语法进行搜索 |
list_attachments_with_safety |
列出带有基于策略的安全检查的邮件附件 |
validate_attachment |
根据本地文件安全策略验证一个附件 |
download_attachment_safe |
只有通过安全策略检查的附件才能下载 |
redact_text_local |
通过本地隐私管道修改敏感文本 |
read_email_with_privacy |
阅读一封主题/摘录/正文经过隐私编辑的电子邮件 |
send_email |
发送纯文本或HTML电子邮件 |
create_draft |
创建电子邮件草稿而不发送 |
reply_to_email |
回复电子邮件线程(保留线程头) |
delete_email |
回收或永久删除电子邮件 |
mark_as_read |
将电子邮件标记为已读 |
mark_as_unread |
将电子邮件标记为未读 |
set_labels |
添加/删除电子邮件上的标签 |
get_labels |
列出所有带有邮件计数的Gmail标签 |
get_profile |
获取经过身份验证的用户配置文件信息 |
附件安全策略默认值在中定义 src/config/attachment-policy.json.
隐私政策默认值在中定义 src/config/privacy-policy.json.
可选的本地隐私堆栈(vLLM+隐私编排器)可以使用Docker配置文件启动:
docker compose --profile privacy up --build
隐私配置文件还支持可选的持久服务:
- 瑞迪斯 (
redis:6379)--用于会话感知PII重新识别的令牌存储(未来功能) - SQLite (
audit.db)--所有PII检测和合规性编辑的审计日志
看 建筑.md 了解数据库设计细节。
先决条件
- Node.js 20+ (用于本地设置)
- 码头工人 (适用于集装箱设置)
- A. 谷歌云项目 启用Gmail API和OAuth2客户端ID(桌面应用程序类型)
谷歌云设置(一次性)
- 首选 https://console.cloud.google.com/
- 创建或选择项目
- API和服务→ 图书馆 → 搜索“Gmail API”→ 启用
- API和服务→ 凭证→ 创建凭据→ OAuth 2.0客户端ID
- 应用程序类型: 桌面应用
- 添加授权重定向URI:
http://localhost:3333/oauth/callback← CLI向导http://localhost:3000/oauth/callback← Web UI向导
- 注意你的 客户端ID 和 客户端密钥 (或下载
credentials.json)
快速开始
选项A-CLI向导(推荐给开发人员)
# 1. Install dependencies and build
npm install
npm run build
# 2. Run the interactive CLI setup wizard
npm run setup:cli
# 3. Start the MCP server
npm start
CLI向导将:
- 指导您完成凭证输入(文件/粘贴JSON/手动输入)
- 允许您选择Gmail权限范围
- 打开浏览器进行谷歌登录
- 自动捕获OAuth回调并保存令牌
- 验证连接并打印电子邮件+下一步
选项B——Web UI向导(基于浏览器)
# 1. Install dependencies and build
npm install
npm run build
# 2. Start the setup wizard UI
npm run setup:ui
# 3. Open http://localhost:3000 in your browser
# Complete the 4-step wizard, then start the server:
npm start
Web UI提供了一个有指导的4步流程:
- 输入OAuth2凭据
- 选择权限范围
- 点击 授权Gmail访问 → 完成Google登录流程
- 包含连接统计信息和后续步骤的成功页面
选项C——手动 .env (CI/Docker生产)
# Copy and fill in the template
cp .env.example .env
# Edit .env: set GMAIL_CLIENT_ID, GMAIL_CLIENT_SECRET, GMAIL_REFRESH_TOKEN
npm install
npm run build
npm start
码头工人
塑造形象
docker build -t gmail-mcp-server .
运行MCP服务器(使用env变量)
# Copy .env.example → .env and fill in credentials
cp .env.example .env
docker compose up
或者在线传递凭据:
docker run -i \
-e GMAIL_CLIENT_ID=your-client-id \
-e GMAIL_CLIENT_SECRET=your-secret \
-e GMAIL_REFRESH_TOKEN=your-refresh-token \
gmail-mcp-server
通过Docker运行Web UI安装向导
docker compose -f docker-compose.setup.yml up
然后打开 http://localhost:3000 --凭据将写回 ./credentials/ 通过卷装载在主机上。
装载凭据文件而不是环境变量
docker run -i \
-v ./credentials:/app/credentials:ro \
gmail-mcp-server
环境变量
| 变量 | 必填 | 描述 |
|---|---|---|
GMAIL_CLIENT_ID |
是* | 谷歌OAuth2客户端ID |
GMAIL_CLIENT_SECRET |
是* | 谷歌OAuth2客户端密码 |
GMAIL_REFRESH_TOKEN |
是* | 长期刷新令牌(来自安装向导) |
GMAIL_REDIRECT_URI |
否 | 覆盖重定向URI(默认值: http://localhost:3000/oauth/callback) |
PORT |
否 | Web UI设置服务器端口(默认值: 3000) |
*使用env变量时需要。或者,使用 credentials/credentials.json + credentials/token.json (由安装向导编写)。
添加到MCP客户端(例如Claude Desktop)
编辑您的MCP客户端配置:
{
"mcpServers": {
"gmail": {
"command": "node",
"args": ["/absolute/path/to/gmail-mcp-server/dist/index.js"]
}
}
}
或者使用Docker:
{
"mcpServers": {
"gmail": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "GMAIL_CLIENT_ID=...",
"-e", "GMAIL_CLIENT_SECRET=...",
"-e", "GMAIL_REFRESH_TOKEN=...",
"gmail-mcp-server"
]
}
}
}
项目结构
├── src/
│ ├── index.ts # MCP server entry point
│ ├── gmail/
│ │ ├── auth.ts # OAuth2 credential + token management
│ │ └── client.ts # Gmail API client factory (singleton)
│ ├── tools/
│ │ ├── emails.ts # list_emails, read_email, search_emails
│ │ ├── compose.ts # send_email, create_draft, reply_to_email
│ │ ├── manage.ts # delete_email, mark_as_read/unread, set_labels
│ │ └── meta.ts # get_labels, get_profile
│ └── setup/
│ ├── oauth.ts # Shared OAuth2 URL generation + token exchange
│ ├── cli.ts # Interactive CLI setup wizard
│ └── ui-server.ts # Express Web UI setup server
├── public/
│ └── setup/
│ └── index.html # 4-step Web UI wizard (vanilla HTML/CSS/JS)
├── credentials/ # Runtime secrets — gitignored
│ └── .gitkeep
├── Dockerfile # Multi-stage build (build + runtime)
├── docker-compose.yml # MCP server runtime
├── docker-compose.setup.yml # Web UI setup wizard runtime
├── .env.example # Environment variable template
└── tsconfig.json
安全说明
credentials/被忽视了-- 从不 承诺credentials.json或token.json- 凭据是 未烘焙到Docker映像中 --始终通过env变量或卷挂载注入
- Web UI服务器和CLI回调服务器绑定到
127.0.0.1仅限(不可公开访问) - 运行时Docker容器以非root用户身份运行(
mcp)
故障排除
| 问题 | 解决方案 |
|---|---|
No Gmail credentials found |
快跑 npm run setup:cli 或 npm run setup:ui |
No Gmail token found |
重新运行安装向导以重新授权 |
invalid_client 来自谷歌 |
检查客户端ID和密码是否正确 |
redirect_uri_mismatch |
确保在Google Cloud Console中添加的重定向URI与向导中显示的完全一致 |
Port 3333 in use |
使用端口3333终止进程,或临时更改 CLI_PORT 在 src/setup/cli.ts |
令牌已过期/ invalid_grant |
重新运行安装向导以获取新的刷新令牌 |
Docker: credentials not found |
山 ./credentials:/app/credentials 或设置环境变量 |