CLAUDE CODE CLUBプライベートブログ
MCP接続Google Workspace複数アカウント2026.09.227 min

Google アカウントを複数、Claude に常時つなぐ手順

Gmail・カレンダー・ドライブを 2 つ以上の Google アカウントで使っていると、Claude に頼むたびに接続先を切り替えることになる。切り替えを速くするのではなく、切り替えなくていい状態を作る手順を、必要なものと落とし穴込みでまとめた。

この記事でできるようになること

Google アカウントを 2 つ以上持っている人が、Claude Code に「仕事のカレンダーに入れて」「個人のメール見て」と言うだけで、切り替えなしに全部のアカウントを使えるようになります。

「個人と仕事、両方のカレンダーの今週分をまとめて」のように、一つの頼みごとの中で複数アカウントをまたぐこともできます。

私は 4 アカウント(個人・宿・講座・デモ)で運用しています。最初の設定は半日から一日、二回目以降の追加は数分です。

なぜ切り替えが必要になるのか

Claude の公式「コネクタ」は、Gmail なら 1 アカウント、カレンダーなら 1 アカウント、というふうに 1 サービスにつき 1 アカウントしかつながりません。別のアカウントを見たければ、設定画面で切断して、つなぎ直すしかありません。仕様なので裏技はありません。

そこで、コネクタの代わりに 自分のパソコンの中に「つなぎ役」を 1 つ置きます。この「つなぎ役」が全アカウントの鍵を持っていて、「講座のカレンダー」と言えば講座の鍵を出してくれる、という仕組みです。

この「つなぎ役」は MCP サーバーと呼ばれるもので、今回は無料公開されている google_workspace_mcp を使います。

用意するもの(すべて無料)

  • Claude Code … 作業のほぼ全部をこれに頼みます。 https://claude.com/product/claude-code
  • google_workspace_mcp … 複数アカウント対応の「つなぎ役」本体です。 https://github.com/taylorwilsdon/google_workspace_mcp
  • uv … 上のソフトを動かす土台です。 https://docs.astral.sh/uv/
  • Google Cloud Console … 「このソフトに自分のアカウントを触らせる」許可を発行する場所です。クレジットカードの登録なしで、無料の範囲で終わります。 https://console.cloud.google.com

手順

Claude Code に「google_workspace_mcp を使って、Google アカウントを複数つなげるようにして」と頼めば、ほとんど自動で進みます。ただし何が起きているか分かっていた方が安心なので、流れを書いておきます。

1. 土台を入れる

Mac で Homebrew(https://brew.sh)が入っていれば、ターミナルで一行です。

brew install uv

2. Google Cloud Console で API を有効にする

https://console.cloud.google.com でプロジェクトを作り、「API とサービス」→「ライブラリ」から次の 3 つを検索して「有効にする」を押します。

  • Gmail API
  • Google Drive API
  • Google Calendar API

3. OAuth 同意画面を作る

「このソフトがあなたのアカウントを触ります」という確認画面の設定です。

  • アプリ名は自由(私は Workspace MCP にしました)
  • ユーザーの種類は 外部
  • 公開ステータスは 本番環境

「本番環境」がこの記事でいちばん大事な一行です。理由は後の「落とし穴」に書きます。

4. OAuth クライアント ID を作る

「認証情報」→「認証情報を作成」→「OAuth クライアント ID」。アプリケーションの種類は デスクトップアプリ を選びます。

作ると クライアント ID と クライアントシークレット の 2 つが出ます。シークレットはこの画面でしか見られないので、出た瞬間にコピーして安全な場所に保存してください。

5. Claude Code に登録する

ターミナルで一行です。◯◯ は手順 4 で出た値に置き換えます。

claude mcp add -s user google-workspace \
  -e GOOGLE_OAUTH_CLIENT_ID=◯◯ \
  -e GOOGLE_OAUTH_CLIENT_SECRET=◯◯ \
  -- uvx workspace-mcp --tools gmail drive calendar --tool-tier core

--tools gmail drive calendar で使う機能を絞っています。全部入れると重くなるので、必要なものだけにしています。

6. アカウントごとに許可する

Claude Code から Gmail やカレンダーを使おうとすると、ブラウザに Google の許可画面が開きます。許可を押す。これを アカウントの数だけ 繰り返します。

このとき「このアプリは Google で確認されていません」という赤い警告が出ますが、これは正常です。自分で作ったアプリを Google の審査に出していないだけです。「詳細」→「(アプリ名)に移動」で進めます。

許可した情報はパソコンの中(~/.google_workspace_mcp/credentials/)に保存されます。外部のサーバーには預けません。

7. 呼び名を決める

毎回メールアドレスを打つのは面倒なので、Claude Code の設定ファイル(~/.claude/CLAUDE.md)に呼び名の表を書いておきます。

| 呼び名 | アカウント |
|---|---|
| 仕事 | work@example.com |
| 個人・指定なし | me@gmail.com |

これで「仕事のカレンダーに入れて」で通ります。何も言わなければ個人、という既定も書けます。

おまけ:フォルダごとに既定アカウントを変える

宿のフォルダで作業しているときは宿のアカウント、講座のフォルダなら講座のアカウント、と フォルダを移動するだけで既定が切り替わるようにもできます。

そのフォルダの中で、手順 5 のコマンドに 1 行足して実行するだけです。

claude mcp add -s local google-workspace \
  -e USER_GOOGLE_EMAIL=そのフォルダで使いたいアドレス \
  -e GOOGLE_OAUTH_CLIENT_ID=◯◯ \
  -e GOOGLE_OAUTH_CLIENT_SECRET=◯◯ \
  -- uvx workspace-mcp --tools gmail drive calendar --tool-tier core

-s local にすると、そのフォルダ専用の設定になります。私はこれがいちばん効いています。

落とし穴(ここだけ読めば時間を無駄にしません)

「テスト中」のままだと 7 日で切れる

手順 3 の公開ステータスを「テスト中」にすると、認証が 7 日ちょうどで切れて、毎週全アカウントを認証し直すことになります。自分だけで使うからテストでいい、と思いたくなりますが、必ず「本番環境」にしてください。

クライアントシークレットは作った瞬間しか見られない

後で見ればいい、と画面を閉じると二度と見られません。Google の仕様変更で再表示が廃止されています。取り逃したら、クライアントの詳細画面いちばん下の「シークレットを追加」から新しく発行し直せます。

別のブラウザや別のプロファイルでログインしていると通らない

Chrome は「プロファイル」という独立した部屋を複数持てます。Claude Code が開いたブラウザの部屋と、自分がログインしている部屋が違うと、何度ログインしても「ログインしていません」と言われます。

解決策は簡単で、認証用の URL を Claude Code に出してもらい、自分がログインできているブラウザでそれを開くだけです。許可の結果は同じパソコンに届くので、どのブラウザから開いても構いません。

デスクトップアプリのチャット欄でも使う

ここまでは Claude Code(ターミナル)の話です。同じことをデスクトップアプリのチャット欄でも使いたい場合は、アプリ専用の設定ファイル(Mac なら ~/Library/Application Support/Claude/claude_desktop_config.json)に、手順 5 と同じ内容を写して再起動するだけです。認証のやり直しは要りません。鍵は同じパソコンに保存済みだからです。

注意が 2 つあります。

  • 初回はローカル MCP の 承認ダイアログ が出ます。押さないと「サーバーが落ちている」ように見えたまま止まります。
  • 公式コネクタ(Gmail・カレンダー・ドライブ)をつないだままだと、そちらが先に呼ばれてアカウントを取り違えることがあります。コネクタは切断して、ローカル MCP 1 本に寄せるのが安全です。

フォルダごとの既定切り替えだけはチャット欄では効きません(フォルダの概念がないため)。「何も言わなければ個人、他は呼び名で言う」という運用にしています。

費用

追加でかかった費用はありません。google_workspace_mcp も uv も無料、Google Cloud Console も無料の範囲、Claude Code は契約中のサブスクの範囲内です。

リンクまとめ

  • Claude Code: https://claude.com/product/claude-code
  • google_workspace_mcp: https://github.com/taylorwilsdon/google_workspace_mcp
  • uv: https://docs.astral.sh/uv/
  • Homebrew: https://brew.sh
  • Google Cloud Console: https://console.cloud.google.com

AIへ渡す手順書

右上の「コピー」を押して、そのまま Claude(Claude Code)に貼り付けてください。記事と同じことを、手順どおりに進めてくれます。パソコンの環境によって、途中で確認や操作をお願いされることがあります。

prompt-for-claude.md
# 作業手順書:Google アカウントを複数、Claude Code(とデスクトップアプリ)に常時つなぐ

> この文章は、ユーザーが CLAUDE CODE CLUB の記事(「アカウントの切り替えを、やめた」「今度は、10分で終わった。」「Google アカウントを複数、Claude に常時つなぐ手順」のいずれか)の末尾からコピーし、あなた(Claude)に貼り付けたものです。人間向けの解説ではなく、**あなたが実行するための作業手順書**です。
> 出典:https://blog.claudecodeclub.jp/posts/stop-switching-accounts / https://note.com/mosir/n/nfe06dc1ef976

---

## 0. Claude Code へ(最初に必ず読む)

あなた(Claude Code)は、ユーザーのパソコンに **google_workspace_mcp** を導入し、ユーザーの Google アカウントを **複数同時に** Claude Code から使えるようにする。必要なら Claude デスクトップアプリにも同じ設定を写す。

### 実行環境の確認(最優先)

- この手順はコマンド実行と設定ファイルの書き換えを伴う。あなたが **Claude Code(ターミナル、IDE 拡張、またはデスクトップアプリの Code タブ)** として動いていて、シェルとファイル書き込みが使えることを確認する。
- claude.ai のチャット欄やスマホアプリなど、ローカルのコマンドを実行できない環境で貼られた場合は、**何も実行せず**、ユーザーに「この手順書は Claude Code(デスクトップアプリの Code タブ、またはターミナルの `claude`)に貼り直してください」と短く伝えて止まる。

### 守ること

1. **秘密の値を画面に出さない。** OAuth クライアント ID・クライアントシークレット・トークンは、チャットへの表示・ログ出力・コミットをしない。読むときは変数名だけ表示し、値は伏せる。
2. **人間にしかできない操作は、ユーザーに頼む。** Google へのログイン、Google Cloud Console の操作(ブラウザ操作ツールが無い場合)、OAuth 同意画面での「許可」。頼むときは「何を・どこで・何を押すか」を1つずつ具体的に書く。
3. **既存の設定ファイルを書き換える前に、必ずバックアップを取る。**(`~/.claude.json`、デスクトップアプリの `claude_desktop_config.json`)
4. **手順ごとに確認してから次へ進む。** 各手順の「確認」が通らなければ、先に進まず「ハマりどころ」を見る。
5. ユーザーへの説明は、ユーザーの言語で、専門用語を避けて短く。

### 最初にユーザーへ聞くこと(まとめて1回で)

- つなぎたい Google アカウントのメールアドレス(すべて)
- それぞれの呼び名(例:「個人」「仕事」「宿」)。後で「仕事のメール見て」と言えるようにするため
- 何も言わないときに使う既定のアカウント
- 使いたいサービス(既定:Gmail・Google ドライブ・Google カレンダー)
- Claude デスクトップアプリのチャット欄でも使いたいか

---

## 1. 環境を調べる

OS を判定し、以降のコマンドを OS に合わせて使い分ける。

| 項目 | macOS | Windows |
|---|---|---|
| シェル | zsh / bash | PowerShell |
| 判定 | `uname -s` が `Darwin` | `$env:OS` が `Windows_NT` |
| ホーム | `~` | `$env:USERPROFILE` |
| 認証の保存先 | `~/.google_workspace_mcp/credentials/` | `%USERPROFILE%\.google_workspace_mcp\credentials\` |
| デスクトップアプリの設定 | `~/Library/Application Support/Claude/claude_desktop_config.json` | `%APPDATA%\Claude\claude_desktop_config.json` |

確認すること:

- `claude --version` が通る(Claude Code が入っている)
- `uv --version` / `uvx --version` が通るか(通らなければ手順 2)

---

## 2. uv を入れる(無い場合だけ)

google_workspace_mcp は `uvx` で起動する。

- **macOS**(Homebrew がある場合)
  ```bash
  brew install uv
  ```
  Homebrew が無い場合:
  ```bash
  curl -LsSf https://astral.sh/uv/install.sh | sh
  ```
- **Windows**(PowerShell)
  ```powershell
  winget install --id=astral-sh.uv -e
  ```
  winget が使えない場合:
  ```powershell
  powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
  ```

**確認**:新しいターミナルで `uvx --version` が通る。あわせて `uvx` の絶対パスを控える(macOS:`which uvx`、Windows:`(Get-Command uvx).Source`)。デスクトップアプリの設定で使う。

---

## 3. Google Cloud Console の準備(ユーザーと一緒に)

ブラウザ操作ツール(Claude in Chrome など)があれば画面を一緒に進めてよい。無ければ、下の手順をそのままユーザーに渡し、1ステップずつ終わったか確認する。ログインはユーザーが行う。

1. https://console.cloud.google.com を開き、新しいプロジェクトを作る(名前は自由。例:`workspace-mcp`)。
2. 「API とサービス」→「ライブラリ」で次を検索し、それぞれ「有効にする」:
   - Gmail API
   - Google Drive API
   - Google Calendar API
   (ユーザーが他のサービスも使うなら、そのAPIも)
3. 「API とサービス」→「OAuth 同意画面」(表示によっては「Google Auth Platform」→「ブランディング/対象」)
   - アプリ名:自由(例:`Workspace MCP`)
   - ユーザーの種類(対象):**外部**
   - **公開ステータス:本番環境(In production)にする** ← 最重要(理由はハマりどころ 1)
4. 「認証情報」→「認証情報を作成」→「OAuth クライアント ID」
   - アプリケーションの種類:**デスクトップアプリ**
   - 作成すると **クライアント ID** と **クライアントシークレット** が表示される。
   - **シークレットはこの画面でしか見られない。** その場で次の手順のファイルに保存するよう、ユーザーに強く伝える。

### 秘密の値の受け渡し

チャットに貼ってもらわない。ユーザーに次のファイルを作ってもらい、2つの値を書いて保存してもらう。

- macOS:`~/.config/workspace-mcp/secrets.env`
- Windows:`%USERPROFILE%\.config\workspace-mcp\secrets.env`

```
GOOGLE_OAUTH_CLIENT_ID=ここにクライアントID
GOOGLE_OAUTH_CLIENT_SECRET=ここにクライアントシークレット
```

あなたはこのファイルを読み込んで使う。値は表示しない(存在と、2行とも空でないことだけ確認する)。

---

## 4. Claude Code に登録する(全プロジェクト共通)

`secrets.env` の値を使い、ユーザースコープで登録する。`USER_GOOGLE_EMAIL` には既定のアカウントを入れる。

- **macOS**
  ```bash
  set -a; source ~/.config/workspace-mcp/secrets.env; set +a
  claude mcp add -s user google-workspace \
    -e GOOGLE_OAUTH_CLIENT_ID="$GOOGLE_OAUTH_CLIENT_ID" \
    -e GOOGLE_OAUTH_CLIENT_SECRET="$GOOGLE_OAUTH_CLIENT_SECRET" \
    -e OAUTHLIB_INSECURE_TRANSPORT=1 \
    -e USER_GOOGLE_EMAIL=既定のアドレス \
    -- uvx workspace-mcp --tools gmail drive calendar --tool-tier extended
  ```
- **Windows**(PowerShell)
  ```powershell
  Get-Content "$env:USERPROFILE\.config\workspace-mcp\secrets.env" | ForEach-Object {
    if ($_ -match '^\s*([^#=]+)=(.*)$') { Set-Item "env:$($matches[1].Trim())" $matches[2].Trim() }
  }
  claude mcp add -s user google-workspace `
    -e GOOGLE_OAUTH_CLIENT_ID="$env:GOOGLE_OAUTH_CLIENT_ID" `
    -e GOOGLE_OAUTH_CLIENT_SECRET="$env:GOOGLE_OAUTH_CLIENT_SECRET" `
    -e OAUTHLIB_INSECURE_TRANSPORT=1 `
    -e USER_GOOGLE_EMAIL=既定のアドレス `
    -- uvx workspace-mcp --tools gmail drive calendar --tool-tier extended
  ```

補足:
- `--tools` は使うサービスだけに絞る(全部入れると重くなる)。
- `--tool-tier` は `core`(基本だけ)/`extended`(下書き・ラベル・予定の編集なども)/`complete`。迷ったら `extended`。
- `OAUTHLIB_INSECURE_TRANSPORT=1` は、認証の戻り先が自分のパソコン(`http://localhost`)のために必要。

**確認**:`claude mcp list` で `google-workspace` が `Connected`。ユーザーに Claude Code を再起動してもらう。

---

## 5. アカウントごとに許可する(アカウントの数だけ)

1. 既定のアカウントで、読み取りだけの軽い操作を1回行う(例:今日のカレンダーの予定一覧)。
2. 認証が必要だと返ってきたら、表示された **認証用の URL をユーザーに渡し、ふだん使っているブラウザで開いてもらう。**
3. ユーザーが Google にログインし、「このアプリは Google で確認されていません」が出たら「詳細」→「(アプリ名)に移動」→ 権限をすべてチェック →「続行」。
4. 「認証が完了しました」の画面が出たら、元の操作をもう一度実行し、結果が返ることを確認する。
5. 残りのアカウントも、`user_google_email` にそのアドレスを指定して同じことを **1件ずつ順番に** 行う(同時に進めると戻り先が混ざる)。

**確認**:すべてのアカウントで、カレンダー一覧などの読み取りが成功する。認証ファイルが認証の保存先にアカウント数ぶんできている(中身は開かない)。

---

## 6. 呼び名を覚えさせる

ユーザーのグローバル指示ファイルに追記する(無ければ作る)。

- macOS:`~/.claude/CLAUDE.md`
- Windows:`%USERPROFILE%\.claude\CLAUDE.md`

追記する内容の例:

```markdown
## Google アカウントの呼び名(google-workspace MCP)

| 呼び名 | アカウント |
|---|---|
| 個人/指定なし | personal@example.com |
| 仕事 | work@example.com |

- Gmail / ドライブ / カレンダーの操作では、呼び名に対応するアドレスを `user_google_email` に指定する。指定が無ければ「個人」。
- 1回の依頼で複数アカウントをまたいでよい(例:「個人と仕事、両方のカレンダーの今週分」)。
```

---

## 7.(任意)フォルダごとに既定のアカウントを変える

特定のフォルダで作業するときは別のアカウントを既定にしたい場合、そのフォルダで **ローカルスコープ** で登録し直す。内容は手順 4 と同じで、`-s local` と `USER_GOOGLE_EMAIL` だけ変える。

```bash
cd その作業フォルダ
# 手順 4 のコマンドの -s user を -s local に、USER_GOOGLE_EMAIL をそのフォルダ用のアドレスにして実行
```

認証は手順 5 で済んでいるので、やり直しは不要。

---

## 8.(任意)Claude デスクトップアプリのチャット欄でも使う

デスクトップアプリは Claude Code の設定を読まないが、**自分専用の設定ファイル**に同じ内容を書けば使える。認証はやり直し不要(同じパソコンの認証ファイルをそのまま使う)。

1. 設定ファイル(手順 1 の表)を **バックアップ** する。無ければ新しく作る。
2. `mcpServers` に次を追加する(既存のキーは消さない)。`command` は手順 2 で控えた `uvx` の **絶対パス**にする(デスクトップアプリは PATH を引き継がないことがある)。

```json
{
  "mcpServers": {
    "google-workspace": {
      "command": "uvx の絶対パス",
      "args": ["workspace-mcp", "--tools", "gmail", "drive", "calendar", "--tool-tier", "extended"],
      "env": {
        "GOOGLE_OAUTH_CLIENT_ID": "(secrets.env の値)",
        "GOOGLE_OAUTH_CLIENT_SECRET": "(secrets.env の値)",
        "OAUTHLIB_INSECURE_TRANSPORT": "1",
        "USER_GOOGLE_EMAIL": "既定のアドレス"
      }
    }
  }
}
```

- 値は `secrets.env` から読み込んで書き込む。書き込んだ内容を画面に表示しない。
- Windows の `command` はバックスラッシュを `\\` に重ねる(例:`C:\\Users\\you\\.local\\bin\\uvx.exe`)。

3. ユーザーにデスクトップアプリを **完全に終了して** 起動し直してもらう(macOS:⌘Q、Windows:タスクトレイのアイコンから終了)。
4. 初回はローカル MCP の承認ダイアログが出るので、ユーザーに「許可」を押してもらう。

注意:デスクトップアプリのチャット欄には「今いるフォルダ」が無いため、手順 7 のフォルダ別切り替えは効かない。呼び名で指定する運用になる、とユーザーに伝える。

---

## 9. 仕上げの確認(ユーザーに見せる)

- 「(既定のアカウント)の今日の予定を教えて」→ 返る
- 「(別の呼び名)の未読メールを3件」→ 返る
- 「(呼び名A)と(呼び名B)、両方のカレンダーの今週分をまとめて」→ 1回でまとまって返る

最後に、やったこと・保存した場所(`secrets.env`、認証の保存先、書き換えた設定ファイルとバックアップ)を短く報告する。

---

## ハマりどころ(症状 → 原因 → 対処)

1. **1週間後に急に認証が切れる** → OAuth 同意画面の公開ステータスが「テスト」のまま。テスト中は認証が 7 日で切れる → 「本番環境」に変更し、各アカウントで手順 5 をやり直す。
2. **クライアントシークレットが見られない** → 作成直後にしか表示されない仕様 → 認証情報の画面で「シークレットを追加」から新しく発行し、`secrets.env` を更新する。
3. **ログインしたのに「ログインしていない」扱いになる** → ブラウザのプロファイル(または別のブラウザ)が違う → 認証用 URL を、ユーザーがそのアカウントでログイン済みのブラウザ/プロファイルで開いてもらう。
4. **「このアプリは Google で確認されていません」と出る** → 自作のアプリを審査に出していないだけ。本番環境にすると出る。正常 → 「詳細」から進む。
5. **「Session is already bound to a different user」と出る** → 複数アカウントを続けて認証したときに出ることがある。トークン自体は保存されていることが多い → 元の操作を再実行して確認する。
6. **デスクトップアプリで起動しない** → `command` が `uvx` だけで、パスが通っていない → 絶対パスに変える。JSON の書式ミスも確認する(カンマ、`\\`)。
7. **`claude mcp list` で Failed** → `uvx` が見つからない、または初回のダウンロード中 → 新しいターミナルで `uvx workspace-mcp --help` を一度実行してから再確認する。

---

## 参考

- google_workspace_mcp:https://github.com/taylorwilsdon/google_workspace_mcp
- uv:https://docs.astral.sh/uv/
- Google Cloud Console:https://console.cloud.google.com
- Claude Code の MCP 設定:https://docs.claude.com/en/docs/claude-code/mcp

ファイルで渡したい場合:google-multi-account-mcp.md をダウンロード

← 記事一覧