使用说明
MCP Gmail和PostgreSQL服务器
一个统一的模型上下文协议(MCP)服务器,为AI代理提供对Gmail和PostgreSQL数据库的读写访问权限。
🚀 两种可用模式
1. stdio模式 (适用于克劳德桌面)
- 与Claude Desktop直接集成
- 使用标准输入/输出
- 无需网络配置
2. HTTP/SSE模式 (对于n8n,远程代理)
- 带有服务器发送事件(SSE)的HTTP服务器
- 可以部署到VPS
- 可通过URL访问
- 非常适合带MCP客户端连接器的n8n AI代理
特性
- Gmail集成:发送电子邮件、阅读电子邮件、列出电子邮件和管理标签
- PostgreSQL集成:执行查询、读/写操作和模式检查
- 模块化架构:干净分离的服务便于维护
- 基于环境的配置:通过以下方式进行安全的凭据管理
.env文件
先决条件
- Node.js 18+
- npm或纱线
- Gmail API凭据(谷歌云控制台)
- PostgreSQL数据库
安装
- 克隆和安装依赖关系:
npm install
- 构建项目:
npm run build
配置
第一步:创建 .env 文件
复制示例文件并填写您的凭据:
cp .env.example .env
步骤2:配置Gmail
获取Gmail API凭据
-
首选 谷歌云控制台
-
创建新项目或选择现有项目
-
启用 Gmail API:
- 导航到“API和服务”>“库”
- 搜索“Gmail API”并单击“启用”
-
创建OAuth 2.0凭据:
- 转到“API和服务”>“凭据”
- 点击“创建凭据”>“OAuth客户端ID”
- 选择“桌面应用程序”作为应用程序类型
- 下载凭据JSON文件
-
从凭据中获取您的客户端ID和客户端密码
-
获取刷新令牌:
- 运行此脚本进行授权并获取刷新令牌:
node scripts/get-gmail-token.js- 或者使用谷歌的OAuth 2.0游乐场:
- 首选https://developers.google.com/oauthplayground/
- 点击齿轮图标(⚙️) 并勾选“使用您自己的OAuth凭据”
- 输入您的客户端ID和客户端密码
- 在左侧面板中,选择“Gmail API v1”并检查范围:
https://www.googleapis.com/auth/gmail.readonlyhttps://www.googleapis.com/auth/gmail.sendhttps://www.googleapis.com/auth/gmail.modify
- 点击“授权API”并登录
- 点击“代币兑换授权码”
- 复制“刷新令牌”值
-
添加到
.env:
GMAIL_CLIENT_ID=your_client_id_from_step_5
GMAIL_CLIENT_SECRET=your_client_secret_from_step_5
GMAIL_REFRESH_TOKEN=your_refresh_token_from_step_6
步骤3:配置PostgreSQL
将您的PostgreSQL连接详细信息添加到 .env:
POSTGRES_HOST=localhost # or your database host
POSTGRES_PORT=5432 # default PostgreSQL port
POSTGRES_DATABASE=your_db_name # your database name
POSTGRES_USER=your_db_user # your database user
POSTGRES_PASSWORD=your_password # your database password
POSTGRES_SSL=false # set to true if using SSL
用法
对于n8n(HTTP模式)- 推荐
启动HTTP服务器:
# Development
npm run dev:http
# Production
npm run build
npm run start:http
服务器将在以下位置可用: http://localhost:3000/sse
看 N8N_SETUP.md 获取完整的n8n集成指南。
适用于克劳德桌面(stdio模式)
# Development
npm run dev
# Production
npm start
在Claude Desktop的配置文件中进行配置(请参阅下面的配置部分)。
可用工具
Gmail工具
gmail_list_emails:使用可选过滤器列出收件箱中的电子邮件- 参数:
query,maxResults,labelIds
- 参数:
gmail_read_email:通过邮件ID阅读特定电子邮件- 参数:
messageId,format
- 参数:
gmail_send_email:发送电子邮件- 参数:
to,subject,body,htmlBody(可选),cc(可选),bcc(可选)
- 参数:
gmail_get_labels:获取所有Gmail标签
PostgreSQL工具
postgres_query:执行SELECT查询(只读)- 参数:
query,params(可选数组)
- 参数:
postgres_execute:执行写入操作(INSERT、UPDATE、DELETE)- 参数:
query,params(可选数组)
- 参数:
postgres_get_tables:列出数据库中的所有表- 参数:
schema(可选,默认:“public”)
- 参数:
postgres_get_table_schema:获取表的架构信息- 参数:
tableName,schema(可选,默认:“public”)
- 参数:
部署到VPS
- 将文件传输到您的VPS:
scp -r . user@your-vps-ip:/path/to/mcp-server/
- SSH到您的VPS并安装:
ssh user@your-vps-ip
cd /path/to/mcp-server
npm install
npm run build
-
创建
.envVPS上的文件 使用您的凭据 -
作为服务运行(使用PM2或systemd):
对于PM2:
npm install -g pm2
pm2 start npm --name "mcp-server" -- start
pm2 save
使用systemd,创建 /etc/systemd/system/mcp-server.service:
[Unit]
Description=MCP Gmail & PostgreSQL Server
After=network.target
[Service]
Type=simple
User=your-user
WorkingDirectory=/path/to/mcp-server
Environment=NODE_ENV=production
ExecStart=/usr/bin/node dist/index.js
Restart=always
[Install]
WantedBy=multi-user.target
然后:
sudo systemctl enable mcp-server
sudo systemctl start mcp-server
项目结构
.
├── src/
│ ├── index.ts # Main server entry point
│ └── services/
│ ├── gmail.service.ts # Gmail integration
│ └── postgres.service.ts # PostgreSQL integration
├── dist/ # Compiled JavaScript
├── .env # Environment variables (not in git)
├── .env.example # Example environment file
├── package.json
├── tsconfig.json
└── README.md
安全说明
- 永不承诺
.env文件到版本控制 - 使用强数据库密码
- 确保Gmail OAuth凭据的安全
- 考虑使用特定于环境的凭据进行生产
- 定期轮换刷新令牌和密码
故障排除
Gmail无法使用
- 验证您的刷新令牌是否有效且未过期
- 检查是否已授予所有必需的OAuth作用域
- 确保
GMAIL_CLIENT_ID和GMAIL_CLIENT_SECRET是正确的
PostgreSQL连接问题
- 验证数据库凭据是否正确
- 检查PostgreSQL是否正在运行且可访问
- 对于远程连接,确保防火墙规则允许连接
- 如果使用SSL,请设置
POSTGRES_SSL=true在.env
许可证
麻省理工学院
