本文へスキップ

オープンソース · セルフホスト · リモート 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日
イメージ図。3 つのメールボックスを 1 回で検索。

仕組み

2 つの独立した Google サインインによって、「どの Claude ユーザーが尋ねているのか」と「そのユーザーがどのメールボックスを許可しているのか」という 2 つの問いを切り分けます。どちらも、ご自身の Google Cloud プロジェクト内の同じ OAuth クライアントを使用します。

  1. 1レイヤー A · あなたは誰か

    Surfski を Claude に一度だけ追加

    サーバーをカスタムコネクタとして追加し、Google でサインインします。Surfski が確認するのは、あなたが許可リストに含まれているかどうかだけです。パスワードを見ることはありません。

    スコープ:openid, email

  2. 2レイヤー B · どのメールボックスか

    各メールボックスをエイリアスでリンク

    Claude に「仕事用の Gmail を work としてリンクして」と頼みます。そのメールボックスでサインインし、閲覧と作成のアクセスを許可します。personal、support なども同様に繰り返します。

    スコープ:gmail.readonly, gmail.compose

  3. 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 審査と年次セキュリティ評価を経たあとに、一般向けのセルフサービス型ホスティングを提供します。現時点では提供時期は未定で、登録受付もまだ行っていません。