Claude DesktopでGoogle Drive連携してみた ～OAuth2.0認証とWSLでの設定～

以下は、過去に執筆された2つのQiita記事を参照しつつ、**Google Drive連携**を中心にまとめた新しいQiita記事のサンプルです。参考リンクとして、

1. [Claude + Perplexity で Deep Research を実現する手順【MCPサーバー構築ガイド】](https://qiita.com/ry033rdqiita/items/8f0794995726295add6d)  
2. [Claude DesktopでGitHub連携してみた！WSL上でPerplexityとGitHubのMCPサーバーを両立する方法](https://qiita.com/ry033rdqiita/items/366225d9845124d08196)

を適宜参照に譲り、今回の記事では **Google DriveのOAuth2.0認証** や **MCPサーバー特有の設定** に焦点を当てています。

---
## はじめに

以前、下記2つの記事で**Claude Desktop＋MCPサーバー**の導入についてまとめました。

1. **[Claude + Perplexity で Deep Research を実現する手順【MCPサーバー構築ガイド】](https://qiita.com/ry033rdqiita/items/8f0794995726295add6d)**  
  Perplexity-ask（DeepResearch）をローカルで起動し、WSL上でDocker or Node.jsビルドして使う流れを解説
  
2. **[Claude DesktopでGitHub連携してみた！WSL上でPerplexityとGitHubのMCPサーバーを両立する方法](https://qiita.com/ry033rdqiita/items/366225d9845124d08196)**
MCPサーバー連携の基礎やWSLでのパス指定、Dockerを使う場合のポイントなどを説明

これらの記事で、**「MCPサーバーを追加するとClaudeが外部サービスを使えるようになる」** という点を学びました。  
さらに、**GitHub連携**（Personal Access Token認証）についても触れ、  
- DeepResearch（APIキー認証）  
- GitHub（PAT認証）  

という **2種類の認証** を体験しました。

そこで今回、**3つ目の認証** となる **Google DriveのOAuth2.0** を導入し、Claude Desktopで**Google Drive内のファイルを検索・閲覧**できるようにします。  

---

## 今回の記事で言いたいこと

1. **Google Drive連携**はOAuth2.0認証が必要  
   - APIキーやPATとは異なり、**初回にブラウザで認証フロー**を実行する  
   - 認証完了後、資格情報ファイル（トークン）がローカルに生成される  
2. **WSLでのパス指定＆JSON構文**  
   - 既存の記事でWSLやDockerの基礎は説明済みなので詳細はそちらを参照  
   - ここでは `GDRIVE_OAUTH_PATH` や `GDRIVE_CREDENTIALS_PATH` をどう指定するかを中心に解説  
3. **MCPサーバーとしてのGoogle Drive**  
   - `search` ツールを使ってDriveファイルを検索し、Claudeで要約・閲覧を可能にする

**それでは具体的に見ていきましょう。**

---

## 1. 事前知識と参照先

### 1-1. Claude Desktop＋WSL環境構築

- **WSLのインストール**、`claude_desktop_config.json` の基本書き方、Dockerを使う/使わない等は  
  → [Claude DesktopでGitHub連携してみた！WSL上でPerplexityとGitHubのMCPサーバーを両立する方法](https://qiita.com/ry033rdqiita/items/366225d9845124d08196) を参照

### 1-2. MCPサーバー導入の流れ

- 「ソースをクローン or npxでパッケージ実行」「環境変数にトークンを設定」「claude_desktop_config.jsonで起動コマンドを指定」  
  → [Claude + Perplexity で Deep Research を実現する手順【MCPサーバー構築ガイド】](https://qiita.com/ry033rdqiita/items/8f0794995726295add6d) で解説済み  
- **GitHub連携**（PAT認証）は `npx -y @modelcontextprotocol/server-github`  
  - こちらも詳しくは過去記事をどうぞ

---

## 2. Google Drive MCPサーバーの特徴

### 2-1. 認証にOAuth2.0が必須

Google Drive APIを呼び出すには、**Google Cloudプロジェクト**を作成し、  
- Drive API有効化  
- OAuth同意画面設定  
- OAuthクライアントIDのJSONを取得  
が必要です。これは**APIキーやPATでは代用できない**大きな違いです。

### 2-2. 初回に `auth` 引数でブラウザ認証

`npx -y @modelcontextprotocol/server-gdrive auth` を実行すると、ターミナルにURLが表示される → ブラウザで開いてGoogleログイン → 同意すると`.gdrive-server-credentials.json`が生成。  
以後は `auth` なしでOK。

---

## 3. 実装ステップ

### Step1. Google CloudでOAuthクライアントを作成

1. Google Cloudコンソールで新規プロジェクト or 既存プロジェクト  
2. APIとサービス → ライブラリ → Drive API を有効化  
3. OAuth同意画面で `drive.readonly` スコープを追加  
4. 「認証情報を作成」→「OAuthクライアントID (デスクトップアプリ)」  
5. JSONをダウンロードし、`gcp-oauth.keys.json` にリネーム

詳しくは[公式ドキュメント](https://developers.google.com/drive/api)を参照。

### Step2. WSL上にキーJSONを配置

```bash
cp /mnt/c/Users/MyName/Downloads/client_secret_xxx.json /root/gcp-oauth.keys.json
```

- Windowsのダウンロードフォルダ→WSLの`/root/` にコピー  
- あるいは `export GDRIVE_OAUTH_PATH="/root/gcp-oauth.keys.json"` のようにパスを環境変数に指定

### Step3. 初回認証 (`auth`)

```bash
export GDRIVE_OAUTH_PATH="/root/gcp-oauth.keys.json"
export GDRIVE_CREDENTIALS_PATH="/root/.gdrive-server-credentials.json"

npx -y @modelcontextprotocol/server-gdrive auth
```

- ターミナルにURLが表示される → ブラウザで開く → Googleアカウントログイン → スコープ承認  
- 成功すると `.gdrive-server-credentials.json` が生成

### Step4. Claude Desktopの設定

```jsonc
{
  "mcpServers": {
    "gdrive": {
      "command": "wsl",
      "args": [
        "bash",
        // もしnvm経由でnpxを使うなら -i オプションをつけるのも手
        // "-i",
        "-c",
        "export GDRIVE_OAUTH_PATH='/root/gcp-oauth.keys.json'; export GDRIVE_CREDENTIALS_PATH='/root/.gdrive-server-credentials.json'; npx -y @modelcontextprotocol/server-gdrive"
      ]
    }
  }
}
```

- **注意**: JSON構文エラーに気を付ける（ダブルクォート、コメント不可など）  
- **`-i` をつけるか** はnvm設定状況次第。`npx: command not found` となるなら `-i` を推奨

### Step5. ClaudeでDriveを使ってみる

Claude Desktopを再起動 → 右上ハンマーアイコンに `gdrive` が表示される。  
- 「Google Driveで 'レポート' という名前のファイルを検索して」  
- Claudeが `search` ツールを呼び出し、ファイル一覧を返す  
- `gdrive:///<file_id>` の内容を要約… などの操作ができる

---

## 4. 設定ファイルのポイント

1. **WSL上の絶対パス**  
   - `"/root/gcp-oauth.keys.json"` のように書く  
   - Windowsの `C:\...` ではなく WSLパス  
2. **`bash -i -c`**  
   - Node.jsやnvmが `.bashrc` に書いてある場合、非対話モードだと読み込まれず `npx` が見つからない恐れ  
   - その場合 `"-i"` を追加するとよい  
3. **JSON構文**  
   - コメントは書けない  
   - 文字列はすべてダブルクォートで囲む  
   - シェル内の環境変数は `'...'`（シングルクォート）  
   - エラーが出たら「Expected double-quoted property name...」などを確認

---

## 5. 参照・関連記事

- **[Claude DesktopでGitHub連携してみた！WSL上でPerplexityとGitHubのMCPサーバーを両立する方法](https://qiita.com/ry033rdqiita/items/8f0794995726295add6d)**  
  - ソースをクローンしてビルドする方法やAPIキー認証について解説
- **[Claude DesktopでGitHub連携してみた！WSL上でPerplexityとGitHubのMCPサーバーを両立する方法](https://qiita.com/ry033rdqiita/items/366225d9845124d08196)**  
  - MCPサーバーをDockerで起動する際の注意点、WSL環境の基本設定など
- **GitHub連携（PAT認証）**  
  - 同様に `npx -y @modelcontextprotocol/server-github` + `GITHUB_PERSONAL_ACCESS_TOKEN` を設定して導入

---

## 6. 今回の記事で言いたかったこと

1. **Google Drive連携**は **OAuth2.0** で初回ブラウザ認証が必要  
2. **WSL上の絶対パスや `-i` オプション** が肝  
3. **claude_desktop_config.json** は純粋なJSON構文なのでコメント等に注意

これで、**3つの認証方式**（APIキー・Personal Access Token・OAuth2.0）を一通り体験し、Claude Desktop＋WSL環境で外部サービスを自由に操れるようになりました。  
あとは**会話だけでウェブ検索→GitHubプッシュ→Google Driveのファイル要約**といったワークフローを楽しんでください！