开源 · 自托管 · 远程 MCP 服务器
多个 Gmail 收件箱,一个 Claude 连接器。
Surfski 让 Claude 能跨多个 Gmail 与 Google Workspace 邮箱搜索、阅读邮件及撰写草稿。只要添加一个连接器,就能链接任意数量的收件箱,而且每位用户都只看得到自己的邮箱。
支持网页版、桌面版与移动版 Claude,以及任何支持 Streamable HTTP 与 OAuth 的 MCP 客户端。
“帮我找出这个月所有收件箱里来自 Acme 的邮件。”
search_all_accounts(query="from:acme newer_than:30d")
- work发票 #4821:10 月份Acme Billing10月18日
- personal您的订单已出货Acme Store10月15日
- support回复:发票 #4790 退款jo@acme.example10月12日
工作原理
两次独立的 Google 登录,分别回答两个问题:提出请求的是哪位 Claude 用户,以及该用户授权了哪些邮箱。两者都使用您自己 Google Cloud 项目中的同一个 OAuth 客户端。
- 1第 A 层 · 您是谁
将 Surfski 加入 Claude(只需一次)
将您的服务器添加为自定义连接器,并使用 Google 账号登录。Surfski 只会比对您的身份是否在允许清单中,绝不会看到您的密码。
权限范围:openid, email
- 2第 B 层 · 哪些邮箱
以别名链接每个邮箱
请 Claude“把我的工作 Gmail 链接为 work”。您以该邮箱登录,并授予读取与撰写权限。personal、support 等其他邮箱依此类推。
权限范围:gmail.readonly, gmail.compose
- 3接着
一次查询所有邮箱
Claude 可在您指定的邮箱中搜索、阅读邮件会话并保存草稿,也能跨所有已链接的邮箱进行。
功能特色
每人可链接多个邮箱
可链接任意数量的 Gmail 与 Google Workspace 账号,每个都用简短别名命名,例如 work、personal 或 support。
跨所有收件箱搜索
一次搜索即可涵盖所有已链接的邮箱,并标明每个邮件会话来自哪个邮箱。
严格的用户隔离
每次查询都限定于已登录的 Claude 用户。共用同一台服务器的人,彼此绝对看不到对方的邮箱。
静态数据加密
刷新令牌(refresh token)在您的服务器上以 Fernet 加密保存,访问令牌只保留在内存中。日志绝不记录令牌或邮件正文。
您的 Google 项目,您的服务器
自托管时使用您自己的 OAuth 客户端,因此不必通过 Google 的应用程序验证,最多可支持 100 位用户。
部署您自己的实例
Gmail 的读取权限范围属于受限范围。公开应用程序需通过 Google 验证及每年一次的安全评估;而您自己的实例只要用户不超过 100 人,就不需要。
- 使用您自己的 Google Cloud 项目与 OAuth 客户端。
- 刷新令牌永远不会离开您的服务器。
- 只需一个 Docker 容器,置于您的 TLS 反向代理之后。
# 在已安装 Docker 的 Linux 主机上
git clone https://github.com/rayhu/surfski /opt/surfski
cd /opt/surfski
python3 scripts/gen_secrets.py
sudo docker compose -p surfski up -d --build
# 接着在 Claude 中:设置 → 连接器
# → 添加自定义连接器 → https://<host>/mcp即将推出
托管版本
托管版 Surfski 将分阶段推出:先是仅限邀请的测试版,接着为自备内部(Internal)OAuth 客户端的 Google Workspace 组织提供托管服务;公开自助式托管则要等通过 Google 的 OAuth 验证与年度安全评估后才会推出。目前尚无确切日期,也尚未开放注册。