Google Drive について
Google Driveは、Google Driveのファイル検索、整理、共有、転送、変更追跡を行うMCPサーバーです。ファイルの場所とアクセス範囲を扱い、Docs、Sheets、Slidesの内容は対象外です。
主な機能
- 01ファイル検索と場所・アクセスの確認
- 02フォルダー整理とファイルの移動・コピー
- 03ファイルのダウンロードとアップロード
- 04共有とアクセスリクエストの管理
- 05ファイル変更の追跡
- 06共有ドライブの管理
活用シーン
- 01ファイルを探し、アクセス可能な人を確認する
- 02フォルダー構成を整理してファイルを移動する
- 03ローカルとDriveの間でファイルを転送する
- 04変更内容と共有権限を確認する
MCP 対応
stdioで動作し、ファイル検索、整理、共有、転送、変更追跡のGoogle DriveツールをMCPクライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
翻訳後に原文が更新されています。最新の内容は原文をご確認ください。
google-drive-mcp
Google Drive を MCP ツールとして利用できます。ファイルの検索、整理、共有、移動を行い、変更内容を追跡します。
Model Context Protocol を標準入出力経由で扱う、単一の Go バイナリです。ご利用のマシン上でクライアントのサブプロセスとして実行され、プロファイルごとに 1 つの Google アカウントを使用します。ファイルを検索して保存場所や閲覧できるユーザーを確認し、フォルダーを整理し、ファイルの移動やコピー、コンテンツの取り込みや書き出し、誤ってアクセス範囲を広げることなく共有、変更内容の追跡、共有ドライブの管理を行えます。
google-drive-mcp を選ぶ理由
ファイルは Drive に保存されています。ファイルに関する問題の多くは、その内容よりも境界に関わるものです。ファイルの場所、すでに閲覧できるユーザー、共有範囲を広げると実際に何が公開されるのか、前回確認してから何が変わったのか、といった点です。このサーバーはその境界を扱い、そこで役割を終えます。Doc、Sheet、Slides のデッキの内容は、それらの API を基盤とするサーバーの役割です。このサーバーは、エクスポートを通じて推測することなく、その旨を明示します。
このサーバーは、お客様自身として、お客様が所有する Google Cloud プロジェクトに対して実行されるため、特定の組織やアカウントに依存しません。以下の各ツールは、テストで使用するインメモリの Drive に加え、実際の Google Workspace アカウントでも検証済みです。完全に削除する 5 つのツールも含まれており、これらはライブドライバーが作成し、再度破棄する共有ドライブ内で実行されます。次の 4 つのパスは、2 つ目のアカウントまたは管理者が必要なため、実環境では検証されていません。所有権の譲渡、リソースキーが必要なリンク共有ファイルを開くこと、組織のポリシーによって拒否される共有、ラベルの適用です。docs/architecture.md の §17a で、それぞれの代わりに何を使用しているか説明しています。
インストール
go install github.com/mmedum/google-drive-mcp/v2/cmd/google-drive-mcp@latest
これにより、Go の bin ディレクトリにバイナリが配置されます。このディレクトリは PATH に含まれていないことがよくあります。次のコマンドで command not found と表示された場合は、フルパスを使うか、ディレクトリを一度だけ追加してください。
"$(go env GOPATH)/bin/google-drive-mcp" --version # check it landed
export PATH="$(go env GOPATH)/bin:$PATH" # or add it to your shell profile
または、署名済みアーカイブを最新リリースから取得してください。Linux、macOS、Windows に対応し、amd64 と arm64 を利用できます。バイナリを PATH に配置してください。各アーカイブには、バイナリ、LICENSE、この README が含まれています。リリースの内容は、すべて検証できます。
# --ignore-missing, because checksums.txt covers every archive and you
# will have downloaded one of them.
sha256sum -c checksums.txt --ignore-missing
# checksums.txt is signed with a keyless Sigstore certificate tied to the
# release workflow's identity; the bundle carries the signature and the
# certificate together.
cosign verify-blob checksums.txt --bundle checksums.txt.bundle \
--certificate-identity-regexp '^https://github.com/mmedum/google-drive-mcp' \
--certificate-oidc-issuer https://token.actions.githubusercontent.com
# And each archive carries build provenance naming the workflow and tag
# that produced it.
gh attestation verify google-drive-mcp_*.tar.gz --repo mmedum/google-drive-mcp
各アーカイブには SBOM も含まれているため、自分でビルドしていないバイナリの内容を確認できます。
Claude Desktop
各リリースには .mcpb バンドルも含まれています。これを開くと Claude Desktop がサーバーをインストールし、OAuth クライアント JSON を要求します。設定ファイルを編集する必要はありません。macOS、Windows、Linux のそれぞれで、両方のアーキテクチャに対応しています。macOS はユニバーサルバイナリ、Windows は amd64、Linux は起動時に適切なバイナリを選択する小さなランチャーを使用します。バンドルマニフェストではプラットフォームごとにコマンドを指定しますが、アーキテクチャを指定する項目がないためです。SHA-256 は同じ署名済みの checksums.txt に記載されています。
このバンドルではログインできません。バイナリもインストールして、google-drive-mcp login を一度実行してください。バンドルは同じ認証情報を使用します。Claude Code は .mcpb ファイルをインストールできないため、以下のコマンドを使用します。
Google のセットアップ
独自の Google Cloud プロジェクトと OAuth クライアントが必要です。所要時間は約 5 分で、google-drive-mcp doctor を実行すると、抜けている手順がわかります。
-
console.cloud.google.com でプロジェクトを作成します。
-
API とサービス → ライブラリで、Google Drive API を有効にします。
-
OAuth 同意画面を設定します。
- Google Workspace アカウントの場合は、内部を選択します。リフレッシュトークンは期限切れになりません。
- 個人アカウントの場合は、外部を選択してテスト状態のままにし、自分のアドレスをテストユーザーとして追加します。テスト中のアプリのリフレッシュトークンは Google によって7 日後に期限切れになるため、約 1 週間ごとに
loginを再実行します。
-
このサーバーが要求するスコープを追加します。どのスコープが必要かは実行方法によって異なります。
loginは設定に必要なスコープだけを要求するため、使用するものを追加し、後から機能を有効にした場合はloginを再実行してください。すべて制限付きスコープですが、自分だけが使い、公開しないアプリであれば問題ありません。スコープ 要求される条件 https://www.googleapis.com/auth/drive常に。ただし、読み取り専用の場合を除く https://www.googleapis.com/auth/drive.readonlyGDRIVE_READ_ONLY=trueの場合、上記の代わりに使用https://www.googleapis.com/auth/drive.labelsGDRIVE_LABELS=trueの場合https://www.googleapis.com/auth/drive.labels.readonlyGDRIVE_LABELS=trueかつ読み取り専用の場合https://www.googleapis.com/auth/drive.activity.readonlyGDRIVE_ACTIVITY=trueの場合google-drive-mcp doctorを実行すると、トークンに不足しているスコープがわかります。フラグを変更した後に呼び出しが拒否された場合は、これを実行してください。 -
認証情報 → OAuth クライアント ID → デスクトップアプリを選択して、JSON をダウンロードします。ウェブアプリケーションクライアントは使用できません。このサーバーは、Google がデスクトップアプリ向けに説明しているループバックフローを使用します。
-
JSON をサーバーが参照する場所に配置するか、パスを指定します。
mkdir -p ~/.config/google-drive-mcp cp ~/Downloads/client_secret_*.json ~/.config/google-drive-mcp/client_secret.json -
ログインして確認します。
google-drive-mcp login google-drive-mcp doctor
login はブラウザーを開き、PKCE を使って 127.0.0.1 でコールバックを受け取り、リフレッシュトークンを OS のキーリング(Secret Service、Keychain、Credential Manager)に保存します。キーリングが利用できない場合は 0600 のファイルに保存し、その旨を表示します。logout は Google でトークンを失効させ、ローカルのトークンを削除します。
SSH 経由でログインする
コールバック先はリモートホストのループバックアドレスですが、ブラウザーはローカルにあるため、ポート転送が必要です。ポートはランダムに割り当てられ、ログイン待機が始まってから一度だけ表示されるため、表示された URL からポートを読み取ってください。URL では 127.0.0.1%3A<port> のようにパーセントエンコードされています。2 つ目のローカルターミナルで次を実行します。
ssh -N -L <port>:127.0.0.1:<port> user@remote-host
その後、ローカルのブラウザーで URL を開きます。ssh が bind: Address already in use と表示した場合は、Ctrl-C でログインをキャンセルし、再実行して別のポートを割り当ててください。
クライアントを接続する
Claude Code
claude mcp add google-drive -- google-drive-mcp
Claude Desktop(claude_desktop_config.json)と Cursor
(.cursor/mcp.json)も同じ形式です。
{
"mcpServers": {
"google-drive": {
"command": "google-drive-mcp",
"env": {
"GDRIVE_LOCAL_DIR": "/absolute/path/for/downloads"
}
}
}
}
3 つのクライアントはいずれも command、args、env のみを渡すため、すべての設定は環境変数で指定します。
設定
すべての設定は、対応するフラグを持つ GDRIVE_* 環境変数です。
デフォルト値を含む全項目は、
docs/configuration.md に記載されています。サーバーの動作を変更する主な設定は次のとおりです。
| 変数 | デフォルト | 効果 |
|---|---|---|
GDRIVE_LOCAL_DIR | 未設定 | ダウンロード先およびアップロード元となるディレクトリを 1 つ指定します。未設定の場合、ファイル転送は一切できません。 |
GDRIVE_READ_ONLY | false | 読み取りツールのみを登録し、ログイン時に読み取り専用スコープを要求します。 |
GDRIVE_SHARING | all | off にすると、共有ツールを登録せず、共有ドライブの制限、ファイルのダウンロードと再共有の設定、フォルダーの制限付きアクセスが緩和されるのを防ぎます。また、より多くの人がアイテムにアクセスできるようになる移動や、元のアイテムより多くの人がアクセスできるようになるコピーも拒否します。 |
GDRIVE_ENABLE_DESTRUCTIVE | false | 完全削除、ゴミ箱を空にする操作、その他取り消せない操作のツールを登録します。いずれも呼び出しごとに confirm: true が必要です。 |
GDRIVE_REQUIRE_PROMPT | false | クライアントがユーザーに確認できない場合、ユーザーへの確認を求める書き込みを拒否します。 |
取り消せない書き込み、リンクを知っている全員・ドメイン全体・新しい所有者・組織外の人との共有、アクセスリクエストの承認、共有ドライブの制限の解除、フォルダーの制限付きアクセスの解除、またはより多くの人がアクセスできるフォルダーや共有ドライブへの移動やコピーの前に、クライアントがエリシテーションに対応していれば、サーバーは MCP クライアントを通じて確認を求めます。「承認」以外を選択すると、書き込みは中止されます。
ツール
| ツール | 機能 |
|---|---|
get_account | サインイン中のユーザー、使用済みストレージ容量、このアカウントに共有ドライブがあるかどうか、およびこのサーバーのどのツールが登録されているかを確認します |
get_file | 1つのファイルに関するすべての情報を取得します。種類、場所、リンク、サイズ、所有者、閲覧できるユーザー、ダウンロードできないユーザー、実行可能な操作が含まれます |
list_folder | フォルダーの内容を1ページ分取得するか、その配下すべてを対象とした予算内のツリーを取得します |
search_files | マイドライブ、共有されたファイル、すべての共有ドライブを横断してファイルを検索するか、1つのフォルダー配下を深さにかかわらず検索します |
read_file | ファイルのテキストを読み取ります。Doc は Markdown として、Sheet は CSV として、Word、Excel、PowerPoint ファイル(またはそれぞれの OpenDocument 形式)はここでテキストとして読み取ります。ログファイルやソースファイルはそのまま読み取り、続きがある場合はウィンドウ単位で取得します |
extract_text | PDF または画像内のテキストを読み取ります。Google の OCR を使って一時的な Google Doc のコピーを作成し、処理後に削除します |
download_file | ファイルをローカルディレクトリに書き込みます。Google ドキュメントはダウンロード時に変換し、チェックサムを検証します |
create_file | 新しい空の Google ファイルを作成するか、ここにあるテキストからファイルを作成します。必要に応じて変換もできます |
upload_file | ローカルファイルを送信します。1回のリクエストで送信する方法と、接続が切れても続けられるようチャンクに分けて送信する方法があります |
update_content | ファイルの ID と場所、およびそのファイルを参照するすべてのものを維持したまま、ファイル内の内容を置き換えます。Google Docs が Markdown ファイル内に保持するコメントが失われる場合は処理を拒否します |
create_folder | 新しいフォルダーを作成します。許可しない限り、同じ名前のフォルダーは作成しません |
update_file | 名前や説明の変更、スターや色の設定、プロパティの設定、ダウンロードや再共有の制限、フォルダーへの限定的なアクセス権の付与を行います |
move_file | アイテムを別のフォルダーまたは共有ドライブに移動します。最大50件までまとめて移動でき、移動前後に各アイテムへアクセスできるユーザーを確認したうえで、ドライランも実行できます |
copy_file | ファイルをコピーします。Google にインポートを依頼して、PDF やスキャンからテキストを読み取れる Doc として作成することもできます。recursive を指定するとフォルダー全体をコピーし、元のファイルとコピーにアクセスできるユーザーも確認できます |
create_shortcut | 別のフォルダーにある1つのアイテムへのショートカットを作成します |
trash_file | アイテムをゴミ箱に移動します。元に戻すことができます |
restore_file | アイテムをゴミ箱から取り出し、移動先を通知します |
list_permissions | アイテムを閲覧できるユーザーを確認します。各ユーザーに付与されたロール、有効期限、アクセス権の付与元も確認できます |
share_file | アクセス権を付与または変更し、変更前後にファイルを閲覧できるユーザーを確認します |
unshare_file | アクセス権を取り消すか、誰でもファイルを開けるリンクを無効にします |
list_drives | このアカウントが閲覧できる共有ドライブと、それぞれで実行可能な操作を確認します |
manage_drive | 共有ドライブの作成、名前の変更、非表示、非表示の解除、アクセス制限を行います |
list_revisions | ファイルのバージョン履歴を取得します。Google 独自の、履歴に含まれない内容についての注意事項も確認できます |
manage_revision | バージョンを固定して Drive に保持させるか、現在の固定を解除します。古いバージョンの固定は解除できません |
list_changes | ある時点以降の変更内容と、次回に使用するトークンを取得します |
list_comments | ファイル上のスレッドと返信、および各スレッドがまだ未解決かどうかを確認します |
add_comment | Google ドキュメントかどうかを問わず、あらゆるファイルにスレッドを作成します |
reply_comment | スレッドへの返信、解決、再開、または既存の文面の編集を行います |
list_access_requests | ファイルへのアクセスを申請したユーザーと、申請内容を確認します |
resolve_access_request | アクセス申請を承認または拒否し、処理前後にファイルを閲覧できるユーザーを確認します |
list_approvals | ファイルのレビューについて、依頼者、回答が必要なユーザー、自分の回答待ちかどうかを確認します |
manage_approval | ファイルのレビューを依頼し、回答、取り消し、コメント、依頼先の変更を行います。また、内容の変更によってレビューをリセットするかどうかも選択できます |
さらに3つのツールは、それぞれに必要なスコープが通常は同意画面に含まれないため、デプロイ担当者が機能を有効にした場合にのみ登録されます。
GDRIVE_LABELS=true で list_labels と manage_labels が、GDRIVE_ACTIVITY=true で
list_activity が登録されます。
| ツール | 内容 |
|---|---|
list_labels | このアカウントで使用できる Workspace ラベルと、各フィールドおよび設定可能な値 |
manage_labels | ファイルへのラベルの付与、フィールドの設定またはクリア、ラベルの削除 |
list_activity | ファイル、またはフォルダー内のすべてのファイルに何がいつ起きたか |
さらに 5 つのツールは GDRIVE_ENABLE_DESTRUCTIVE=true の場合にのみ登録され、
いずれも呼び出し時に confirm: true も必要です:
delete_file、empty_trash、delete_drive、delete_revision、および
delete_comment。
読み取りツールのうち 3 つはリソースとしても利用できます。クライアントが
ツールを呼び出す代わりにリソースをアタッチする場合に使用します:
gdrive://<id> はファイルのテキスト、gdrive://<id>/meta は説明、
gdrive://<id>/children はフォルダーの最初のページです。パスや URL など、
スラッシュを含む参照はパーセントエンコードする必要があるため、ID を渡してください。
他の選択肢と異なる点は 5 つあります:
- 共有ドライブは最初の呼び出しから利用できます。 すべてのリクエストに
supportsAllDrivesが含まれ、一覧にはすべてのドライブのアイテムが含まれます。 検索が不完全な場合は、そのことが明示され、気付かないうちに結果が減ることはありません。 - ID が契約です。 名前やパスが複数のアイテムに一致すると、候補がすべて一覧表示された
[ambiguous]が返されます。最初に一致したものが選ばれることはありません。 - 場所は常に表示されます。 Drive では名前が一意ではないため、すべての結果に ファイルが存在するフォルダーとドライブが示されます。
- ファイルの受け渡し先は 1 か所だけです。 ダウンロード先は
GDRIVE_LOCAL_DIRで、 アップロードもそこから読み取られます。未設定の場合、ファイル転送は一切行われません。 シンボリックリンクも含め、この場所の外にあるパスは拒否されます。 - 共有の変更内容が明示されます。 共有権限の付与や取り消しでは、変更前と変更後に
ファイルを閲覧できるユーザーが報告されます。公開リンクには呼び出し時に
allow_anyone: trueが必要で、所有権の移転にはtransfer_ownership: trueが必要です。 通知メールは依頼がない限り送信されません。これは API 自体のデフォルトとは逆です。
安全性
- Google ドキュメント、スプレッドシート、スライドの内容を編集すること。Google のエクスポート機能を 使って読み取り、その旨を明示します。ここで作成したコメントはファイル自体に付加され、 ファイル内の特定の場所には付加されません。ドキュメント、スプレッドシート、スライド内に コメントをピン留めする機能は、それぞれの種類専用の API にあり、このサーバーは使用しません。
- Google ドキュメントが Markdown ファイル内に保持しているコメントを削除すること。Drive に保存された
.mdファイルを Docs がその場で編集すると、作成されたコメントはファイル自体のテキストに書き込まれ、 Drive のコメント一覧には表示されません。update_contentは、allow_comment_changesが設定されていない限り、コメントが失われる新しい内容を拒否します。 - 求められていないのにアクセス範囲を広げること。共有ツールはまず
capabilities.canShareを確認し、ファイルを閲覧できるユーザーを変更の前後で表示します。 公開リンクにはallow_anyone: trueが必要で、通知メールは依頼がない限り送信されません。 実際に共有できる範囲は組織独自のポリシーで決まり、Google はすべての呼び出しでそれを適用します。 - デフォルトで、取り消せない削除を行うこと。デフォルトで利用できるのはゴミ箱への移動と復元です。
完全削除には
GDRIVE_ENABLE_DESTRUCTIVE=trueが必要で、さらに呼び出し時にconfirm: trueも必要です。登録されたツールは、いずれモデルが呼び出すためです。 一括削除も一括共有もありません。呼び出しごとに 1 アイテムのみを扱うため、削除のたびに 承認の対象が明確になります。ドライブの最上位を削除する操作は、明示的に拒否されます。 どちらも必要とせずに完全削除される唯一のものは、extract_textが作成し、 同じ呼び出し内で削除する一時コピーです。 - Google 以外のものに接続すること。認証情報を付与する前に、すべての URL が Google 独自のホストの許可リストに照らして検証されます。テレメトリーも更新確認もありません。
- ログに機密情報を書き込むこと。ログに記録されるのは、短縮された ID、件数、バイト数、 レイテンシのみです。ファイル名、パス、アドレス、クエリ、内容は記録されません。
仕組み
MCP client ──stdio──► google-drive-mcp
├── tools one handler per tool; shapes the reply
├── service the rules: addressing, sharing policy, confinement
├── model the server's view of a file, and what you may do to it
├── render the text a result is made of
├── gapi raw REST client for Drive, Drive Labels and Drive Activity
├── gdrive hand-written wire types, no generated client
├── ref ids, URLs and paths; resolves nothing over the network
└── auth refresh token → access token
docs/architecture.md には、設計、パッケージ構成、フェーズ計画、Google の公式リファレンスと照合して確認した規約と、誤りだと判明した規約を記録した検証ログが記載されています。docs/security.md には、このツールがアクセスする対象と、その制限が記載されています。
ヘルプ
問題が発生した場合は、google-drive-mcp doctor を実行してください。認証情報、付与されたスコープ、Google から実際に返される内容を確認し、不足しているものを示します。初回実行時に起こる問題の多くは、有効化されていない API、または自分が追加されていない同意画面が原因です。
google-drive-mcp status を実行すると、Google に接続せずに同じ設定情報を確認できます。また、status --json は、起動前にこのサーバーが認証されているかを判断するスクリプト向けに、情報を 1 つの JSON オブジェクトとして出力します。分岐条件には credentials.resolved フィールドを使用してください。形式については、docs/configuration.md を参照してください。
これで解決しない場合は、
issue を作成してください。issue にはファイル ID や URL、ファイルの内容、client_secret.json、トークンを貼り付けないでください。代わりに、内容の形式を説明してください。セキュリティ上の問題は、SECURITY.md に従って非公開で報告してください。
バージョン管理
ツール名、引数、出力形式は、メジャーバージョン内で安定しています。新しいスコープの追加、別の login の実行、クライアント設定でのコマンド変更など、ユーザーによる対応が必要な変更には、CHANGELOG.md で Breaking: と記載します。リリースノートはこのファイルから作成されます。ツールをデフォルトの公開範囲からフィーチャーフラグの背後に移動する場合、またはその逆の場合も、破壊的変更として扱います。
開発
make build # the binary
make test # race detector, per-package coverage floor
make check # everything CI runs
make live # drive the binary against the signed-in account, redacted
make check に合格することが完了の条件です。gofmt、go vet、golangci-lint、パッケージごとのカバレッジ下限を設けた競合状態テスト、govulncheck、ライセンスチェック、作業ツリー内のリークチェック、バージョン固定とエラー分類のゲート、3 つすべての API の各メソッドについて記録済みの判断を求める API カバレッジゲート、コミット済みマニフェストとパッカーがステージングするファイルの一致を求めるバンドルマニフェストゲート、公開済みエントリーが MCP レジストリのコード内のルールに従っていることを求めるレジストリゲート、実アカウントを操作するプログラムがターミナルに到達する経路をレダクター経由に限定するトランスクリプトゲート、すべてのツールオプションについてライブドライバーが操作するかどうかの判断を求めるライブカバレッジゲート、リクエストではなくレスポンスに基づいて結果の文を作成するよう求める結果ゲート、stdio スモークテスト、リリース済みのツール公開範囲とのスキーマ差分チェック、この README、ドキュメント、変更履歴がコードと食い違った場合に失敗する鮮度ゲート、さらに make check と CI で同じゲートが実行されることを検証する整合性ゲートが含まれます。
規約については CONTRIBUTING.md、ビルド、テスト、リリースについては docs/development.md を参照してください。
ドキュメント
- docs/architecture.md — 設計、その根拠となる検証結果、フェーズ計画です。
- docs/configuration.md — すべての設定項目です。
- docs/security.md — このツールがアクセスする対象と、その制限です。
- docs/development.md — ビルド、テスト、リリースについて説明します。
貢献
質問やバグの報告は
issue へお寄せください。プルリクエストも歓迎します。CONTRIBUTING.md では基本ルールとプルリクエストの手順について説明しています。make check に合格する必要があります。
セキュリティ
脆弱性の報告方法については SECURITY.md を参照してください。脆弱性について公開 issue を作成しないでください。
行動規範
CODE_OF_CONDUCT.md — Contributor Covenant 3.0 です。
ライセンス
Apache-2.0 — LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。