Gmail与PostgreSQL集成服务

一个统一的模型上下文协议(MCP)服务器,为AI代理提供对Gmail和PostgreSQL数据库的读写访问。

  • by marouanemkm
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 marouanemkm/gmail-mcp-server

使用说明

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数据库

安装

  1. 克隆和安装依赖关系:
npm install
  1. 构建项目:
npm run build

配置

第一步:创建 .env 文件

复制示例文件并填写您的凭据:

cp .env.example .env

步骤2:配置Gmail

获取Gmail API凭据

  1. 首选 谷歌云控制台

  2. 创建新项目或选择现有项目

  3. 启用 Gmail API:

    • 导航到“API和服务”>“库”
    • 搜索“Gmail API”并单击“启用”
  4. 创建OAuth 2.0凭据:

    • 转到“API和服务”>“凭据”
    • 点击“创建凭据”>“OAuth客户端ID”
    • 选择“桌面应用程序”作为应用程序类型
    • 下载凭据JSON文件
  5. 从凭据中获取您的客户端ID和客户端密码

  6. 获取刷新令牌:

    • 运行此脚本进行授权并获取刷新令牌:
    node scripts/get-gmail-token.js
    
    • 或者使用谷歌的OAuth 2.0游乐场:
      1. 首选https://developers.google.com/oauthplayground/
      2. 点击齿轮图标(⚙️) 并勾选“使用您自己的OAuth凭据”
      3. 输入您的客户端ID和客户端密码
      4. 在左侧面板中,选择“Gmail API v1”并检查范围:
        • https://www.googleapis.com/auth/gmail.readonly
        • https://www.googleapis.com/auth/gmail.send
        • https://www.googleapis.com/auth/gmail.modify
      5. 点击“授权API”并登录
      6. 点击“代币兑换授权码”
      7. 复制“刷新令牌”值
  7. 添加到 .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

  1. 将文件传输到您的VPS:
scp -r . user@your-vps-ip:/path/to/mcp-server/
  1. SSH到您的VPS并安装:
ssh user@your-vps-ip
cd /path/to/mcp-server
npm install
npm run build
  1. 创建 .env VPS上的文件 使用您的凭据

  2. 作为服务运行(使用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

许可证

麻省理工学院