第8回。前回の学習編で「MCP は認証が生命線」と書きました。今回はそれを、実際に Google ドライブの MCP コネクタを使ってドライブ内の最新ファイルを取得する作業で、文字どおり痛い目を見ながら確かめた記録です。

ひとことで言うと:does not have permission の連発に悩まされたが、原因はクエリでもツールでもなく、Googleの同意画面で権限のチェックを入れ忘れていたこと。MCP のつまずきは、ほぼ「つなぎ方」ではなく「認証」に集中する。

やったこと ― 「最新ファイルを3つ教えて」

題材はシンプルです。「Google ドライブの最新ファイルを3つ教えて」とお願いし、MCP コネクタ経由でドライブの中身を取得する。MCP の「外部サービスへの接続」を地で行く作業でした。ところが、ここから一筋縄ではいきませんでした。

つまずきの実録

  1. 「Google ドライブの最新ファイルを3つ教えて」とお願いする。
  2. しかし最初は The caller does not have permission(権限がありません)というエラーが連発。
  3. ここで分かったのは、問題はツールの選び方ではなく、コネクタ自体の認証(OAuth トークン)が通っていなかったこと。別の取得方法(一覧取得 → 検索)に切り替えても、認証が通らない以上どれも同じエラーになる、と切り分けられた。
  4. 設定の「コネクタ」から Google ドライブをいったん切断 → 再接続し、アクセス許可を承認し直す。
  5. 再接続後にもう一度依頼すると、今度は成功。実際のドライブから最新ファイル(例:「Claude Code デスクトップ版導入作業手順書」「Git導入手順書」など)を取得できた。
教訓その1:エラー文面が「権限がない」のときは、まず再認証を疑う。 クエリやツールをいじっても、認証が通らなければどの方法でも同じエラーになります。切り分けの第一手は「コネクタの接続状態の確認」でした。

本当の落とし穴 ― 同意画面のチェック漏れ

そして今回いちばんの落とし穴がこれでした ―― Google のログイン(同意)画面で、アクセス許可のチェックボックスにチェックを入れ忘れていたことが、そもそもの原因だったのです。

Google の同意画面では、アプリが要求する権限が個別のチェックボックスで表示されることがあり、しかもデフォルトではチェックが外れている場合があります。「同意して続行」を押すだけだと、権限を渡したつもりで実は渡せておらず、接続自体は「つながっている」ように見えるのに中身にアクセスできない、という状態になります。does not have permission の正体は、この「チェック漏れで権限が付与されなかった」ことでした。

教訓その2:同意画面の権限チェックは手動で明示的に入れる。 デフォルト未チェックのことがあるので、「同意して続行」を押す前に、必要な権限(Drive の閲覧・編集など)にチェックが入っているか必ず確認する。

うまくいかないときの確認・リセット手順

  • Google 側の付与状況を確認する。 https://myaccount.google.com/permissions(Google アカウントのサードパーティ連携)で、付与した権限が残っているかを見られます。
  • クリーンにやり直す。 チェック漏れでやり直す場合は、いったんここから古い連携を削除してから接続し直すと、権限がまっさらな状態から付与できます。
  • 会社(組織)アカウントの注意点。 管理者がサードパーティ連携を制限していて、ユーザー側で再接続しても弾かれるケースがあります。個人で解決できないときは、情報システム部門への確認が必要です。

まとめ ― MCP は「つなぐ」より「認証」がヤマ場

MCP そのものの考え方はシンプルでも、実際の詰まりどころは認証(コネクタの接続状態と権限付与)に集中していました。今回得た実践知をまとめると、次のとおりです。

  • 「権限がない」エラーは、クエリより先にコネクタの再認証を疑う
  • 同意画面の権限チェックは手動で明示的に。デフォルト未チェックに注意。
  • 詰まったら myaccount.google.com/permissions で付与状況を確認し、必要なら削除 → 再接続でリセットする。
  • 組織アカウントは管理者の制限で弾かれることがある。

これで4つの部品(Skills・Subagents・Hooks・MCP)が出そろいました。次回からは最後の2回、作った部品をまとめて配る仕組み——Plugin と Marketplace を扱います。