
Googleアカウントで認証して、Claudeのカスタムコネクタから自作MCPへ接続してみた
はじめに
クラスメソッドテクノロジーズの武蔵です。
今年こそはちゃんと予定を立てて紅葉を見に行きたいなと思っている今日この頃です。
おすすめのスポットがあれば教えて下さい!
今回の検証
前回の記事では、Claudeのカスタムコネクタから、Amazon Bedrock AgentCore Gateway(以下、AgentCore Gateway)上の自作MCPサーバーに接続しました。
ログインには、Amazon Cognito(以下、Cognito)のユーザープールに作成したメールアドレスとパスワードを使っていました。この方法では、利用者ごとにCognitoのユーザーを作成する必要があり、利用者も普段とは別のパスワードを管理することになります。

そこで今回は、CognitoにGoogleをIDプロバイダーとして追加し、普段使っているGoogleアカウントでカスタムコネクタにログインできるようにします。

目標
今回は、CognitoのログインページからGoogleアカウントでログインし、カスタムコネクタからMCPのツールを使用した会話ができるかを検証します。
処理の流れ

- ClaudeがMCPサーバーURLにアクセスし、AgentCore Gatewayから401と保護リソースメタデータのURLが返る。
- ブラウザでCognitoのログインページが開き、「Sign in with Google」を押す。
- Googleのログイン画面に移り、Googleアカウントでログインする。
- Googleから
https://<Cognitoドメイン>/oauth2/idpresponseに認可コードが返り、CognitoがGoogleのユーザー情報を受け取る。 - Cognitoから
https://claude.ai/api/mcp/auth_callbackに認可コードが返る。 - ClaudeがCognitoからトークンを取得し、以降のAgentCore Gatewayの呼び出しに付ける。
Googleとやり取りするのはCognitoだけです。ClaudeとAgentCore Gatewayから見ると、前回と同じくCognitoが発行したトークンを使います。
現在の認証状況
前回の記事で、カスタムコネクタの認証を次のように設定しました。
| 項目 | 前回 | 今回 |
|---|---|---|
| ログイン方法 | Cognitoのメールアドレスとパスワード | Googleアカウント |
| ユーザーの作成 | 管理者がCognitoで作成 | 初回ログイン時にCognitoが作成 |
| Cognitoのアプリクライアント | saito-sandbox-connector |
変更なし(IDプロバイダーにGoogleを追加) |
| AgentCore Gatewayのインバウンド認証 | Cognitoが発行したトークンを検証 | 変更なし |
AgentCore Gateway、ツールのLambda、Cognitoのリソースサーバーは前回のものをそのまま使います。
Googleアカウントでログインできるようにする
Google Cloudでブランディング、対象、データアクセス、OAuthクライアントの順に設定し、その後Cognitoを設定し、Claudeで再接続しました。
Google Cloudでブランディングを設定する
Google Cloudコンソールでプロジェクトを選び、「Google Auth Platform」→「ブランディング」を開きます。
| 項目 | 設定値 |
|---|---|
| アプリ名 | saito-sandbox |
| ユーザーサポートメール | 自分のメールアドレス |
| 承認済みドメイン | amazoncognito.com |
| デベロッパーの連絡先情報 | 自分のメールアドレス |
アプリ名は、Googleのログイン画面に表示されます。


Google Cloudで対象を設定する
「Google Auth Platform」→「対象」で、ユーザーの種類を「内部」にしました。公式ドキュメントによると、内部にすると、Google Cloudのプロジェクトが属する組織のGoogleアカウントだけがログインできます。

Google Cloudでデータアクセスを設定する
「Google Auth Platform」→「データアクセス」→「スコープを追加または削除」から、次の3つのスコープを追加しました。
| スコープ | 内容 |
|---|---|
openid |
Googleアカウントとの関連付け |
.../auth/userinfo.email |
メールアドレスの参照 |
.../auth/userinfo.profile |
名前などの個人情報の参照 |

いずれも非機密のスコープに分類されます。

Google CloudでOAuthクライアントを作成する
「Google Auth Platform」→「クライアント」→「クライアントを作成」で、次の内容で作成しました。
| 項目 | 設定値 |
|---|---|
| アプリケーションの種類 | ウェブ アプリケーション |
| 名前 | saito-sandbox-cognito |
| 承認済みの JavaScript 生成元 | https://<Cognitoドメイン> |
| 承認済みのリダイレクト URI | https://<Cognitoドメイン>/oauth2/idpresponse |
Cognitoドメインは、Cognitoのユーザープールの「ブランディング」→「ドメイン」で確認できます。

作成後に表示されるクライアントIDとクライアントシークレットを控えます。クライアントシークレットは後から表示やダウンロードができないため、作成時に控えておきます。
CognitoにGoogleのIDプロバイダーを追加する
ユーザープール →「ソーシャルプロバイダーと外部プロバイダー」→「アイデンティティプロバイダーを追加」を押します。

「Google」を選び、Google Cloudで控えたクライアントIDとクライアントシークレットを入力します。

許可されたスコープと属性のマッピングは、次のとおりです。
| 項目 | 設定値 |
|---|---|
| 許可されたスコープ | profile email openid |
| 属性のマッピング | email → email、email_verified → email_verified、name → name |
email はユーザープールの必須属性のため、最初からマッピングされています。

アプリクライアントでGoogleを有効にする
アプリケーションクライアント → saito-sandbox-connector → ログインページ →「編集」で、IDプロバイダーに「Google」を追加しました。
| 項目 | 設定値 |
|---|---|
| ID プロバイダー | Cognito ユーザープール、Google |
コールバックURL、OAuth 2.0 許可タイプ、OpenID Connectのスコープ、カスタムスコープは、前回の設定のまま変更していません。「Cognito ユーザープール」も残しているため、前回のメールアドレスとパスワードでもログインできます。

Claudeでコネクタを再接続する
前回のログイン情報が残っているため、いったんコネクタを切断してから接続し直します。
Claudeの「設定」→「コネクタ」→ saito-sandbox で「切断する」を押します。
同じコネクタの「連携/連携させる」を押すと、ブラウザが開きます。「コネクタの接続を完了しますか?」と表示されるので、「接続を続行」を押します。
Cognitoのログインページに「Sign in with Google」が表示されるようになりました。こちらを押します。

Googleのログイン画面に移り、ブランディングで設定したアプリ名 saito-sandbox が表示されます。ログインするGoogleアカウントを選びます。

Claudeの画面に戻り、コネクタが接続済みになれば完了です。
検証
Googleアカウントでログインした状態で、カスタムコネクタを有効にしてClaudeに社内FAQについて質問します。今回はログイン方法の確認が目的のため、質問は1つのみとします。
リフレッシュ休暇について聞く
リフレッシュ休暇はいつもらえる?

問題なくMCPサーバーに接続できています。
不要な設定の削除
Googleアカウントでログインできることを確認できたため、前回のメールアドレスとパスワードによるログインは不要になりました。残しておくと、Googleアカウント以外の方法でもログインできてしまうため、関係する設定を削除します。
| 対象 | 変更内容 |
|---|---|
| アプリクライアントのIDプロバイダー | 「Cognito ユーザープール」を外し、Googleのみにする |
| Cognitoのユーザー | 前回作成したメールアドレスのユーザーを削除する |
まとめ
CognitoにGoogleをIDプロバイダーとして追加することで、Googleアカウントでカスタムコネクタにログインできました。
Cognitoのユーザーを事前に作成する必要がなく、利用者も普段使っているGoogleアカウントでログインできるため、今回は私1人での確認ですが、社内で展開する際の手間を減らせると感じました。
一方で、今回の設定では、ログインできるGoogleアカウントであれば誰でも同じツールを使えます。実運用では、ユーザーごとに使えるツールや見られるデータを制御する仕組みも合わせて検討が必要です。









