オープンソース · セルフホスト · リモート MCP サーバー
複数の Gmail 受信トレイを、ひとつの Claude コネクタで。
Surfski を使うと、Claude が複数の Gmail・Google Workspace メールボックスをまたいでメールを検索・閲覧し、下書きを作成できます。コネクタを 1 つ追加するだけで、受信トレイはいくつでもリンクでき、各ユーザーに見えるのは自分のメールボックスだけです。
Web 版・デスクトップ版・モバイル版の Claude に加え、OAuth 付きの Streamable HTTP に対応したあらゆる MCP クライアントで動作します。
「今月、どの受信トレイでもいいので Acme からのメールを探して」
search_all_accounts(query="from:acme newer_than:30d")
- work請求書 #4821 — 10月分Acme Billing10月18日
- personalご注文の商品を発送しましたAcme Store10月15日
- supportRe: 請求書 #4790 の返金について[email protected]10月12日
仕組み
2 つの独立した Google サインインによって、「どの Claude ユーザーが尋ねているのか」と「そのユーザーがどのメールボックスを許可しているのか」という 2 つの問いを切り分けます。どちらも、ご自身の Google Cloud プロジェクト内の同じ OAuth クライアントを使用します。
- 1レイヤー A · あなたは誰か
Surfski を Claude に一度だけ追加
サーバーをカスタムコネクタとして追加し、Google でサインインします。Surfski が確認するのは、あなたが許可リストに含まれているかどうかだけです。パスワードを見ることはありません。
スコープ:openid, email
- 2レイヤー B · どのメールボックスか
各メールボックスをエイリアスでリンク
Claude に「仕事用の Gmail を work としてリンクして」と頼みます。そのメールボックスでサインインし、閲覧と作成のアクセスを許可します。personal、support なども同様に繰り返します。
スコープ:gmail.readonly, gmail.compose
- 3その後
すべてをまとめて質問
Claude は、指定したメールボックス、またはリンク済みのすべてのメールボックスをまたいで、検索、スレッドの閲覧、下書きの保存を行います。
主な機能
1 人で複数のメールボックス
Gmail・Google Workspace アカウントをいくつでもリンクでき、それぞれに work、personal、support のような短いエイリアスを付けられます。
すべての受信トレイを横断検索
1 回の検索でリンク済みのすべてのメールボックスを対象にし、各スレッドがどのメールボックスのものかも表示します。
まずは下書きから
Claude が下書きを作成し、送信は Gmail からご自身で行います。確認リンクと 1 日あたりの上限を備えた、オプトイン方式の送信機能はロードマップに含まれています。
送信機能の設計を読む →ユーザーごとの厳密な分離
すべてのクエリは、サインイン中の Claude ユーザーの範囲に限定されます。同じサーバーを共有していても、他の人のメールボックスが見えることはありません。
保存時に暗号化
リフレッシュトークンはサーバー上で Fernet により暗号化されます。アクセストークンはメモリ上にのみ保持されます。ログにトークンやメール本文が含まれることはありません。
自分の Google プロジェクト、自分のサーバー
セルフホストではご自身の OAuth クライアントを使うため、Google のアプリ審査が不要です。最大 100 ユーザーまで利用できます。
自分のインスタンスを運用する
Gmail の読み取りスコープは制限付きスコープです。公開アプリには Google の審査と年次のセキュリティ評価が必要ですが、ご自身のインスタンスであれば、ユーザー数が 100 未満である限り不要です。
- ご自身の Google Cloud プロジェクトと OAuth クライアント。
- リフレッシュトークンがサーバーの外に出ることはありません。
- TLS リバースプロキシの背後で動く Docker コンテナ 1 つだけ。
# 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 は段階的に提供する予定です。まず招待制のベータ版、次に独自の内部 OAuth クライアントを持ち込む Google Workspace 組織向けのホスティング、そして Google の OAuth 審査と年次セキュリティ評価を経たあとに、一般向けのセルフサービス型ホスティングを提供します。現時点では提供時期は未定で、登録受付もまだ行っていません。