Claude Code・CodexからGoogle Workspaceを操作する完全セットアップガイド|GCPプロジェクト作成からtoken.json取得まで
Claude CodeやCodexにGmail・Drive・Calendar・Chatを操作させたいとき、最初の関門はGoogle Cloud側の設定です。この記事では、GCPプロジェクトの作成、必要なAPIの有効化、OAuth同意画面の設定、Chatアプリの作成、そしてブラウザ認証でtoken.jsonを取得するところまでを、実際の画面操作の流れに沿って解説します。
この記事で作るもの・前提知識
Google WorkspaceをAIツールから操作する方法には、大きく2つの系統があります。
| 方式 | 認証の仕組み | 向いている用途 |
|---|---|---|
| Google公式のリモートMCPサーバー | Web applicationタイプのOAuthクライアント。claude.aiのコールバックURLへリダイレクト | claude.aiアプリでの利用。token.jsonのようなローカルファイルは発生しない |
| Desktop app OAuth+ローカルMCPサーバー(この記事で扱う方式) | Desktop appタイプのOAuthクライアント。ブラウザ認証後、credentials.jsonとtoken.jsonがローカルに保存される | Claude Code・Codexなど、CLIから使うツール全般 |
今回扱うのは後者です。Claude CodeとCodexのどちらでも同じ設定を使い回せるのが最大のメリットで、一度この認証情報を作ってしまえば、どちらのツールからでも同じMCPサーバー経由でGoogle Workspaceを操作できます。
2025〜2026年にかけて、OAuth関連の設定画面は「Google Auth Platform」という新しいUIに統合されました。以前は複数の画面に分かれていた設定が、Branding(ブランディング)・Audience(対象ユーザー)・Data Access(データアクセス)・Clients(クライアント)という4つのタブに整理されています。この記事はこの新UIに基づいています。
ステップ1:Google Cloudプロジェクトを作成する
手順
- Google Cloud Consoleにアクセスする
- 画面上部のプロジェクト選択メニューから「新しいプロジェクト」を選ぶ
- プロジェクト名を入力して作成する(例:
my-workspace-mcp)
ステップ2:必要なAPIを有効化する
操作したいGoogle Workspaceサービスに応じて、対応するAPIを有効化します。gcloud CLIが使える場合は、次のコマンドでまとめて有効化できます。
gcloud services enable \
gmail.googleapis.com \
drive.googleapis.com \
docs.googleapis.com \
sheets.googleapis.com \
slides.googleapis.com \
calendar-json.googleapis.com \
chat.googleapis.com \
people.googleapis.com \
--project=あなたのプロジェクトID
gcloudを使わない場合は、Google Cloud Consoleの「APIとサービス」→「ライブラリ」から、それぞれのAPI名を検索して個別に「有効にする」をクリックしても構いません。
| サービス | APIの正式名 |
|---|---|
| Gmail | Gmail API |
| Drive | Google Drive API |
| Docs | Google Docs API |
| Sheets | Google Sheets API |
| Slides | Google Slides API |
| Calendar | Google Calendar API |
| Chat | Google Chat API |
| 連絡先・組織情報 | People API |
ステップ3:OAuth同意画面(Google Auth Platform)を設定する
「APIとサービス」→「OAuth同意画面」(英語UIではGoogle Auth Platform)を開き、ウィザードに沿って設定します。
Branding(ブランディング)
- アプリ名:任意の名前(例:
Workspace MCP for Claude) - ユーザーサポートメール:自分のメールアドレス
Audience(対象ユーザー)
Google Workspaceの組織アカウントであれば「Internal」(組織内限定・審査不要)を選べます。個人のGoogleアカウント(Gmail.comなど)の場合は「External」一択になります。
Externalモードのアプリは、Googleの審査を受けるまで「テスト」状態で運用されます。この間は、Audience画面で自分自身のGoogleアカウントを「テストユーザー」として明示的に追加しておかないと、後の認証ステップでaccess_deniedエラーになります。個人利用が目的なら、審査は不要でテストユーザー登録だけで十分です。
Contact Information・Finish
通知用のメールアドレスを入力し、Google API Services User Data Policyに同意して完了します。
Data Access(データアクセス・スコープの追加)
「Data Access」タブの「Add or Remove Scopes」から、使いたい機能に応じたスコープを追加します。代表的なものは次の通りです。
| サービス | スコープ例 |
|---|---|
| Gmail(読み取り+下書き作成) | gmail.readonly、gmail.compose |
| Drive(読み取り+自分が作成したファイル) | drive.readonly、drive.file |
| Docs | documents.readonly、documents |
| Sheets | spreadsheets.readonly、spreadsheets |
| Calendar | calendar.events.readonly、calendar.calendarlist.readonly |
| Chat | chat.spaces.readonly、chat.messages.readonly、chat.messages.create |
書き込み系スコープ(gmail.sendなど強い権限)は、必要になってから追加する方針がおすすめです。スコープを絞るほど、認証情報が漏れたときの被害範囲も小さくなります。
ステップ4(Chatを使う場合のみ):Chatアプリを設定する
Google Chatを操作したい場合は、API有効化だけでは不十分です。Chatアプリとしての設定が別途必要になります。
手順
- Google Cloud Consoleで「Google Chat API」のページを開く
- 「管理」→「構成」タブを開く
- アプリ名(例:
Chat MCP)、アバターURL(正方形画像)、説明文を入力する - 「インタラクティブ機能を有効にする」はオフのままでよい(読み書きだけなら不要)
- 「エラーをLoggingに記録」を選択して保存する
この設定を済ませておかないと、Chat APIを有効化していても実際の読み書きリクエストが失敗します。
ステップ5:OAuthクライアントIDを作成する(Desktop app)
手順
- 「Google Auth Platform」→「Clients」タブを開く
- 「Create Client」をクリック
- Application typeで「Desktop app」を選ぶ(Webサーバーを立てるわけではないため)
- 任意の名前を付けて作成する
- 作成後に表示されるJSONファイルをダウンロードし、
credentials.jsonという名前で作業ディレクトリに保存する
Google公式のリモートMCPサーバー(claude.ai向け)を使う場合は「Web application」タイプでリダイレクトURIにhttps://claude.ai/api/mcp/auth_callbackを設定する必要がありますが、この記事で扱うローカルMCPサーバー方式では「Desktop app」を選びます。Web applicationを選んでしまうと、この後のブラウザ認証フローがうまく機能しません。
ステップ6:ブラウザ認証を実行してtoken.jsonを取得する
ここからはローカル環境での作業です。Google公式のクライアントライブラリを使い、実際にブラウザ経由でユーザー認証を行います。
pip install google-api-python-client google-auth-httplib2 google-auth-oauthlib
次のようなスクリプトを用意します(Google公式クイックスタートの標準的な構成です)。
import os.path
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
SCOPES = [
"https://www.googleapis.com/auth/gmail.readonly",
"https://www.googleapis.com/auth/gmail.compose",
]
def get_credentials():
creds = None
if os.path.exists("token.json"):
creds = Credentials.from_authorized_user_file("token.json", SCOPES)
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file("credentials.json", SCOPES)
creds = flow.run_local_server(port=0)
with open("token.json", "w") as token:
token.write(creds.to_json())
return creds
if __name__ == "__main__":
get_credentials()
print("認証完了。token.jsonを保存しました。")
実行すると起きること
- スクリプトを実行すると、既定のブラウザが自動的に開く
- Googleアカウントでログインし、要求されたスコープへのアクセスを許可する画面が表示される(External・テストモードの場合は「このアプリはGoogleで確認されていません」という警告が出るが、「詳細」→「(アプリ名)に移動」で進める)
- 許可すると、ローカルで待ち受けているスクリプトに認証コードが渡され、
token.jsonが作業ディレクトリに自動生成される - 2回目以降の実行では、この
token.jsonを読み込むだけでブラウザは開かず、有効期限が切れていれば自動的にリフレッシュされる
token.jsonにはユーザーのアクセストークン・リフレッシュトークンが含まれており、そのままGoogleアカウントへのアクセス権になります。credentials.json単体では直接アカウントにアクセスできませんが、OAuthクライアントの識別情報であるため、こちらも公開すべきではありません。両方とも.gitignoreに追加し、リポジトリにコミットしないでください。
ステップ7:Claude Code・Codexに接続する
取得したcredentials.json・token.jsonは、MCPサーバー経由でClaude Code・Codexから利用します。ここでは、Desktop app方式のOAuthに対応したコミュニティ製MCPサーバー(google_workspace_mcp)を例に接続方法を示します。
Google Workspace向けのMCPサーバーは、Google公式の(Web application OAuth・リモート型)ものと、コミュニティ製の(Desktop app OAuth・ローカル型)ものが複数存在します。パッケージ名・具体的な設定項目は更新されやすいため、実際に導入する際は採用するMCPサーバーの公式リポジトリの最新手順を必ず確認してください。この記事では、Desktop app方式の認証がClaude Code・Codex双方から使える、という「仕組みの理解」を主眼に解説しています。
Claude Codeに接続する
claude mcp add --transport http workspace-mcp http://localhost:8000/mcp
MCPサーバー自体をローカルで起動しておく必要があります(uvx workspace-mcp --transport streamable-httpのような形)。詳細な起動オプションは利用するMCPサーバーのドキュメントに従ってください。
Codexに接続する
Codexは~/.codex/config.tomlに[mcp_servers.名前]のブロックを追記する形で設定します。
# ~/.codex/config.toml
[mcp_servers.workspace]
command = "uvx"
args = ["workspace-mcp", "--transport", "stdio"]
[mcp_servers.workspace.env]
GOOGLE_OAUTH_CREDENTIALS = "/path/to/credentials.json"
Claude CodeとCodexのどちらも、同じcredentials.json・token.jsonを参照する設定にしておけば、片方で認証を済ませれば、もう片方でも再認証は不要です。
もう1つの選択肢:Google公式のリモートMCPサーバー(claude.aiアプリ向け)
ここまではCLI(Claude Code・Codex)向けの構成でしたが、claude.aiのブラウザ版・デスクトップアプリで使うだけなら、Google自身がホストする公式のリモートMCPサーバーという選択肢もあります。この場合の設定は大きく異なります。
Google公式のリモートMCPサーバーは、2026年7月時点でDeveloper Preview(開発者向けプレビュー)段階です。利用にはClaudeのPro・Max・Team・Enterpriseのいずれかの有料プランが必要で、通常のAPI(Gmail API等)に加えてMCP専用のサービスも別途有効化する必要があります。
gcloud services enable \
gmailmcp.googleapis.com \
drivemcp.googleapis.com \
calendarmcp.googleapis.com \
chatmcp.googleapis.com \
people.googleapis.com \
--project=あなたのプロジェクトID
- OAuthクライアントは「Web application」タイプで作成し、リダイレクトURIに
https://claude.ai/api/mcp/auth_callbackを指定する - claude.aiの「設定」→「コネクタ」→「カスタムコネクタを追加」で、サービスごとのURL(例:Gmailなら
https://gmailmcp.googleapis.com/mcp/v1)とクライアントID・シークレットを登録する - 認証はclaude.ai側のブラウザフローで完結し、ローカルに
token.jsonのようなファイルは生成されない
「サーバーは自分で立てたくない、claude.aiだけで完結させたい」という場合はこちらが手軽です。なお、Googleは現時点でCodex向けの公式接続手順を公開していません。Codex自体はStreamable HTTPとOAuthに対応していますが、Google Workspaceのリモート MCPが要求するクライアント登録との互換性は、2026年7月時点で公式には確認されていません。Codexから使う場合は、この記事で解説したDesktop app方式(ローカルMCPサーバー)が確実です。
よくある質問
Q. 「このアプリはGoogleで確認されていません」という警告が出ます
OAuth同意画面がExternal・テストモードのままだと表示される、想定通りの警告です。自分のアカウントをテストユーザーに追加していれば、警告画面の「詳細」から先に進めば問題なく認証できます。第三者に配布するアプリでない限り、Google審査を受ける必要はありません。
Q. token.jsonにrefresh_tokenが含まれず、毎回ブラウザ認証が必要になります
Googleの公式仕様では、Desktop app(installed application)タイプのクライアントには通常refresh_tokenが発行されます。含まれない場合は、次の点を順に確認してください。①作成したOAuthクライアントが本当にDesktop appタイプになっているか(Web applicationだと挙動が異なります)②token.jsonが壊れている、または古いスコープのまま残っていないか③Externalかつテストモードの場合、同意の有効期限(最短7日)が切れていないか。それでも解決しない場合は、Googleアカウントのアプリ権限一覧から該当アプリのアクセスを一度削除し、token.jsonを削除したうえで認証フローをやり直してください。
Q. Chatだけ動きません
Chat APIは「APIの有効化」と「Chatアプリの構成」が別ステップになっている点を見落としがちです。ステップ4のChatアプリ設定(App name・Avatar・Description)が完了しているか確認してください。
Q. 組織のGoogle Workspaceアカウントで使う場合の注意点は?
組織のWorkspaceアカウントでは、管理者がサードパーティアプリへのアクセスを制限している場合があります。Internal設定でも認証が通らない場合は、Google Workspace管理者にAPIアクセスの許可を確認してください。
まとめ
- Claude Code・Codex双方から使うには、Web applicationではなくDesktop appタイプのOAuthクライアントを作成する
- 手順は「GCPプロジェクト作成→API有効化→OAuth同意画面(Branding/Audience/Data Access)→(Chatならアプリ設定)→Desktop appクライアント作成→ブラウザ認証」の順
- Google Cloud Consoleからダウンロードした
credentials.jsonを使ってブラウザ認証を行うとtoken.jsonが生成され、以降は自動的にリフレッシュされる - この2つのファイルをMCPサーバーに渡せば、Claude Code・Codexのどちらからも同じ認証情報を使い回せる
- claude.aiアプリだけで完結させたい場合は、Google公式のリモートMCPサーバー(Web application OAuth)という別の選択肢もある
まずはGmailなど1つのサービスだけでスコープを絞り、実際にtoken.jsonが生成されるところまで確認してみてください。他のサービスへ拡張する際は、対象APIの有効化・Data Accessでのスコープ追加・コード側のSCOPES変更・既存トークンへの再同意(またはtoken.jsonの再生成)・MCPサーバー側でのツール有効化が必要になります。仕組みそのものはここまでと同じなので、1つ理解すれば残りは横展開しやすいはずです。

