# 作業手順書：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
