Mcp Gdrive Cloudflare について
Cloudflare Workers にデプロイする、Google Drive と Sheets 向けのリモート MCP サーバーです。OAuth 2.0 と PKCE に対応し、SSE 経由で MCP クライアントにファイルや表計算の操作を提供します。
主な機能
- 01Drive ファイルの検索と読み取り
- 02フォルダー作成、アップロード、移動
- 03ファイル共有権限の管理
- 04Sheets セルの読み取りと更新
- 05OAuth 2.0 と PKCE に対応
- 06SSE によるリモート接続
活用シーン
- 01Drive ファイルの検索とエクスポート
- 02フォルダーの整理とファイル移動
- 03ファイルの共有やアップロード
- 04スプレッドシート範囲の読み取りと行の追加
MCP 対応
SSE 経由で Google Drive と Sheets のツールを MCP クライアントに公開し、OAuth 2.0 認可サーバーと動的クライアント登録を備えています。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://mcp-gdrive-cf.CFDOMAIN.workers.dev/sseclaude mcp add --transport http gdrive-cf https://mcp-gdrive-cf.CFDOMAIN.workers.dev/sse{"mcpServers":{"gdrive-cf":{"type":"http","url":"https://mcp-gdrive-cf.CFDOMAIN.workers.dev/sse"}}}Cursor で開く{"servers":{"gdrive-cf":{"type":"http","url":"https://mcp-gdrive-cf.CFDOMAIN.workers.dev/sse"}}}VS Code で開く{"mcpServers":{"gdrive-cf":{"type":"http","url":"https://mcp-gdrive-cf.CFDOMAIN.workers.dev/sse"}}}{"mcpServers":{"gdrive-cf":{"serverUrl":"https://mcp-gdrive-cf.CFDOMAIN.workers.dev/sse"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
mcp-gdrive-cf
Cloudflare Workers 上で動作する、Google Drive と Sheets 向けのリモート MCP サーバー。OAuth 2.0 を完全にサポートします。
本番環境対応 ✅ | 11 個のツール | OAuth 2.0 | PKCE | グローバルエッジネットワーク
isaacphi/mcp-gdrive をベースに、完全な OAuth 2.0 認可サーバー機能を備えたリモート HTTP/SSE MCP サーバーとして、Cloudflare のエッジネットワーク上で動作するように変更されています。
🚀 クイックスタート
```bash
1. クローンしてインストール
git clone https://github.com/brianmoney/mcp-gdrive-cf.git cd mcp-gdrive-cf npm install
2. KV 名前空間を作成
wrangler kv:namespace create KV_TOKENS wrangler kv:namespace create KV_CLIENTS
3. 名前空間 ID を wrangler.toml に設定
4. Google OAuth 認証情報を設定
wrangler secret put GOOGLE_CLIENT_SECRET
5. デプロイ
wrangler deploy
6. MCP Inspector でテスト
npx @modelcontextprotocol/inspector https://your-worker.workers.dev/sse ```
✨ 機能
Drive の操作
- 🔍 検索 - フィルター(MIME タイプ、オーナー、日付、共有ドライブ)を使った基本検索と詳細検索
- 📄 読み取り - 22 種類以上のエクスポート形式(PDF、DOCX、XLSX、Markdown など)であらゆるファイルを読み取り
- 📁 フォルダーの作成 - 入れ子になったフォルダー構造でファイルを整理
- ⬆️ アップロード - 最大 5 MB のファイルをアップロード
- 🗑️ 削除 - ファイルをゴミ箱に移動
- 📦 移動 - フォルダー間でファイルを再整理
- 🔐 共有 - 権限(閲覧者、編集者、コメント可、オーナー)を追加
Sheets の操作
- 📊 読み取り - 複数の範囲を一括で読み取り
- ✏️ 更新 - 個々のセルを更新
- ➕ 追加 - スプレッドシートに行を追加
インフラストラクチャ
- ☁️ グローバルエッジネットワーク - Cloudflare Workers 上で世界中から実行
- 🔐 OAuth 2.0 サーバー - PKCE をサポートする完全な認可サーバー
- 🔑 動的クライアント登録 - クライアントを自動でオンボーディング
- 🔄 トークンの自動更新 - Google トークンをシームレスに更新
- 📡 SSE トランスポート - リアルタイムの Server-Sent Events
- 🛡️ セキュア - HTTPS のみを使用し、トークンを暗号化して保存
🎯 この実装の特徴
STDIO ベースの元の `mcp-gdrive` と異なり、この実装は次の特徴を備えています。
- Cloudflare Workers 上でリモート実行(ローカルプロセス不要)
- 完全な OAuth 2.0 認可サーバー(OAuth クライアントにとどまりません)
- 動的クライアント登録による複数クライアントのサポート
- パブリッククライアント向けのPKCE セキュリティ
- Drive ファイル向けの22 種類以上のエクスポート形式
- 書き込み操作(作成、削除、移動、共有、アップロード)
- 実際のワークロードで本番環境のテスト済み
📋 前提条件
必須
- Workers が有効な Cloudflare アカウント(無料プランでも利用可能)
- Drive API と Sheets API が有効な Google Cloud プロジェクト
- Node.js LTS(v18 以降)
- Wrangler CLI(`npm install -g wrangler`)
Google Cloud のセットアップ
- Google Cloud Console でプロジェクトを作成
- API を有効化:
- Google Drive API
- Google Sheets API
- OAuth 2.0 認証情報を作成:
- 種類:ウェブアプリケーション
- リダイレクト URI:`https://your-worker.workers.dev/google/callback\`
- 必要な OAuth スコープ:
🔧 インストールとデプロイ
1. 依存関係をインストール
```bash npm install ```
2. KV 名前空間を作成
```bash
ユーザーセッショントークン用
wrangler kv:namespace create KV_TOKENS
OAuth クライアント登録用
wrangler kv:namespace create KV_CLIENTS ```
名前空間 ID を `wrangler.toml` にコピーします。
```toml [[kv_namespaces]] binding = "KV_TOKENS" id = "your-tokens-namespace-id"
[[kv_namespaces]] binding = "KV_CLIENTS" id = "your-clients-namespace-id" ```
3. 環境変数を設定
`wrangler.toml` に追加します。
```toml [vars] GOOGLE_CLIENT_ID = "your-client-id.apps.googleusercontent.com" ```
シークレットを設定します。
```bash
Google OAuth クライアントシークレット
wrangler secret put GOOGLE_CLIENT_SECRET ```
4. デプロイ
wrangler deploy
ワーカーは次の場所で利用できます:https://your-worker-name.your-account.workers.dev
🔐 OAuth 2.0 フロー
このサーバーは、MCP 仕様に準拠した完全な OAuth 2.0 認可サーバーを実装しています。
MCP Inspector の使用
OAuth フローをテストする最も簡単な方法です:
npx @modelcontextprotocol/inspector https://your-worker.workers.dev/sse
- 検出 - Inspector が OAuth エンドポイントを自動検出します
- 登録 - 「Guided Setup」をクリックすると、クライアントが自動的に登録されます
- 認可 - Google にリダイレクトされ、認証後に戻ります
- トークン交換 - 認可コードをアクセストークンに自動的に交換します
- ツールの使用 - 11 個すべてのツールが利用可能になります!
セキュリティ機能
- ✅ PKCE(RFC 7636) - Proof Key for Code Exchange
- ✅ State パラメーター - CSRF 保護
- ✅ HTTPS のみ - Cloudflare Workers により強制
- ✅ 安全なトークン保存 - Workers KV で暗号化
- ✅ トークンの有効期限 - アクセストークンは 1 時間で期限切れになります
- ✅ クライアントシークレットのハッシュ化 - SHA-256 でハッシュ化して保存
- ✅ 認可コードの使い捨て - 交換後にコードを削除
🛠️ 利用可能なツール
Drive ツール
gdrive_search- すべてのファイルを対象とした基本検索gdrive_search_advanced- フィルターを使用した高度な検索gdrive_read_file- 22 種類以上のエクスポート形式でファイルを読み取るgdrive_create_folder- フォルダーを作成gdrive_upload_file- ファイルをアップロード(最大 5MB)gdrive_delete_file- ファイルをゴミ箱に移動gdrive_move_file- フォルダー間でファイルを移動gdrive_add_permission- ファイルやフォルダーを共有
Sheets ツール
gsheets_read- 複数の範囲を読み取るgsheets_update_cell- 単一セルを更新gsheets_append_row- 行を追加
🔌 クライアントの設定
MCP Extension を使用する VS Code
.vscode/settings.json を作成します:
{
"mcp.servers": {
"gdrive": {
"url": "https://your-worker.workers.dev/sse",
"authorization": {
"type": "oauth2"
}
}
}
}
Claude Desktop / Cline
macOS/Linux: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\\Claude\\claude_desktop_config.json
{
"mcpServers": {
"gdrive": {
"url": "https://your-worker.workers.dev/sse"
}
}
}
🧪 テスト
ローカル開発
npm start
# サーバーは http://localhost:8788 で利用できます
MCP Inspector でテスト
npx @modelcontextprotocol/inspector http://localhost:8788/sse
CloudFlare のログを確認
wrangler tail --format pretty
🐛 トラブルシューティング
「OAuth メタデータの検出に失敗しました」
解決方法:
/.well-known/oauth-authorization-serverが有効な JSON を返すことを確認します- CORS ヘッダーが設定されていることを確認します
- 最新バージョンがデプロイされていることを確認します:
wrangler deploy
「トークン交換に失敗しました:HTTP 400」
解決方法:
- code_verifier が元の code_challenge と一致することを確認します
- redirect_uri が登録時の値と完全に一致することを確認します
- クライアントの認証情報が正しいことを確認します
- CloudFlare のログを確認します:
wrangler tail
ツールが動作しない
解決方法:
- Google OAuth のスコープに
driveとspreadsheetsが含まれていることを確認します - スコープを変更した場合は、
/google/authorizeにアクセスして再認証します - Worker に有効な Google アクセストークンがあることを確認します
wrangler.tomlの KV 名前空間バインディングを確認します
📊 パフォーマンスと制限
| リソース | 制限 | 備考 |
|---|---|---|
| リクエストのタイムアウト | 30 秒 | CloudFlare Workers の制限 |
| ファイルのアップロード | 5 MB | Simple upload API の制限 |
| ファイルのエクスポート | 10 MB | Google Drive のエクスポート制限 |
| トークンの保存期間 | 30 日 | 自動クリーンアップ |
| 認可コード | 10 分 | 使い捨て |
| アクセストークン | 1 時間 | 自動更新 |
🔒 セキュリティのベストプラクティス
- シークレットを絶対にコミットしない - `wrangler secret put` を使用します
- クライアントシークレットをローテーションする - OAuth 認証情報を定期的に再生成します
- アクセスを監視する - CloudFlare Analytics を使用して利用状況を追跡します
- OAuth スコープを制限する - 必要な Google の権限のみをリクエストします
- PKCE を使用する - パブリッククライアントでは常に PKCE を使用します
- リダイレクト URI を検証する - Google Console で正確な URI を許可リストに登録します
- 2FA を有効にする - CloudFlare と Google のアカウントを保護します
📄 ライセンス
MIT ライセンス
🙏 謝辞
- isaacphi/mcp-gdrive - オリジナルの STDIO 実装
- Model Context Protocol - MCP 仕様
- CloudFlare Workers - サーバーレスプラットフォーム
☁️ を添えて Brian Money が作成
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。