0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PSA構成のLookerに、APIキーを発行せずにMCPを導入する

0
Last updated at Posted at 2026-09-19

はじめに

Lookerでは2026年6月頃にマネージド Looker MCP サーバーがでました。Claude Code、Codex などでLooker のモデルやダッシュボードを作成できるようになります。

ただし、プライベート サービス アクセス(PSA)で構成した Looker (Google Cloud core) インスタンスでは。

  • MCP クライアントを使うには、事前に AI エージェントを OAuth クライアントとして登録 する必要がある
  • 公式手順では、この登録に API Explorer を使う
しかし PSA インスタンスでは **Looker Marketplace も API Explorerが通常手順では入れられません。

代替として示されている方法は、oauth_client_apps エンドポイントを curl で直接呼ぶ こと。ただしこれには ACCESS_TOKEN が必要で、そのために API キー(クライアントID/シークレット)を発行 しなければならない

→MCP のためだけに、管理者権限を持つ API キーの管理はしたくないです。

API Explorer を GitHub から手動インストールし、管理者としてログインしたブラウザ上で OAuth クライアントを登録する ことで、API キーを一切発行せずに Looker 管理 MCP サーバーを使えるようにする手順を紹介します。

  • Looker 管理 MCP サーバーは プレビュー 機能です(2026年9月時点)。
  • API Explorer の手動インストールは、Google Developer forums のコミュニティ記事で紹介されている 回避策 です。公式ドキュメントは PSA インスタンスでの API Explorer をサポート対象外としているため、自己責任で実施してください。

全体像

  1. API Explorer を GitHub からダウンロードし、LookML プロジェクトとして手動デプロイ
  2. API Explorer の「Run It」で OAuth クライアント(AI エージェント)を登録
  3. Looker 管理画面で MCP ツールを有効化
  4. MCP クライアント(Claude Code / Gemini CLI など)を設定し、OAuth でログイン

API Explorer は Looker の拡張機能(Extension Framework)として動くので、API 呼び出しは ログイン中のユーザー自身のセッション で行われます。そのため、API キーの発行が不要になります。

前提条件

  • Looker (Google Cloud core)、PSA のプライベート接続構成
  • Looker の Looker Admin ロール を持つユーザー
  • 管理画面で Extension Framework が有効になっていること(Admin > Platform > Extension Framework)
  • LookML プロジェクトで使える 有効なデータベース接続 が1つ以上あること(名前だけ使います)
  • MCP クライアントを動かす PC が、Looker インスタンスの URL に プライベートネットワーク経由で到達できる こと(VPN、Interconnect など)

PSA インスタンスは外部から到達できません。MCP クライアントを実行する端末から Looker の URL(https://<インスタンス>/mcp)にアクセスできること が必須です。また、Claude Desktopアプリ のような クラウド側から接続しに来るタイプ のエージェントは、PSA のプライベート専用インスタンスには届かない可能性が高いので注意してください。(Claude CodeはOK)

Step 1. API Explorer を手動インストールする

Marketplace が使えないので、GitHub で公開されているビルド済みファイルを手動で LookML プロジェクトに取り込みます。

1-1. ファイルをダウンロード

  1. looker-open-source/extension-api-explorer を開く
  2. Code > Download ZIP でダウンロードし、手元で展開

1-2. LookML プロジェクトを作成

  1. Looker にログインし、開発モード に入る
  2. 空の LookML プロジェクト を新規作成(名前は例として api_explorer)
  3. 展開したファイルを IDE のファイルブラウザに 1つずつ ドラッグ&ドロップ
    • LICENSE.lkml は入れない(LookML として不正なので検証エラーになります)

1-3. manifest.lkml を修正

Looker (Google Cloud core) 向けに2か所修正します。

# project_name: "api-explorer"   # ← Google Cloud core では非対応なのでコメントアウト

application: api-explorer {
  label: "API Explorer"
  file: "bundle.js"
  # ...entitlements は既存のまま
}

constant: CONNECTION_NAME {
  value: "your_connection_name"   # ← 有効な接続名を入れる
  export: override_optional
}

CONNECTION_NAME に入れる値

Looker に登録済みの データベース接続の名前 を入れます。

API Explorer 自体はこの接続でクエリを実行しません。LookML のモデルファイルには connection: の指定が必須なので、その形式を満たすためだけに使われます。有効な接続であれば、どれを指定しても問題ありません。

接続名は次のいずれかの方法で確認できます。

  • 管理画面:メインメニュー > Admin > Database > Connections の「Name」列(https://<LOOKER_INSTANCE_URL>/admin/connections)
  • 既存の LookML プロジェクト:モデルファイル(.model.lkml)の先頭にある connection: "xxxx" の xxxx

1-4. デプロイ

  1. Git 接続が未設定なら、bare リポジトリ(Looker サーバー上のリポジトリ) を作成
    • PSA 環境からは GitHub などの外部 Git に届かないことが多いので、bare リポジトリが手軽です
  2. Validate LookML
  3. Commit Changes and Push
  4. Deploy to Production

これで Applications メニューに API Explorer が表示されます。

Step 2. OAuth クライアント(AI エージェント)を登録する

ここからは公式ドキュメントの API Explorer 手順とほぼ同じです。Admin ロールのユーザーで 操作します。

2-1. CLIENT_GUID と redirect_uri を決める

CLIENT_GUID

AI エージェントを識別するための ID です。エージェント側で指定がなければ、グローバルに一意な文字列 を用意します。形式に決まりはありませんが、OS のコマンドで UUID を生成すると重複の心配がありません。

# Windows (PowerShell)
New-Guid
# Mac / Linux
uuidgen

3f2b8c1e-7a4d-4e5f-9b21-0c6d8e1a2b34 のような値が出力されるので、これを CLIENT_GUID として使います。

  • この値は、Step 4 の MCP クライアント設定(clientId)にも 完全一致 で使うので、控えておいてください
  • UUID だけだと、後から「どのエージェント用か」が分かりにくくなります。登録時の display_name に Claude Code (Looker MCP) のように用途を書いておくと管理しやすくなります

redirect_uri

OAuth 認証後にブラウザから戻ってくる先の URL です。MCP クライアントごとに決まっています。

クライアント redirect_uri の例 補足
Claude Code http://localhost:8080/callback .mcp.json の callbackPort を 8080 に固定する
Gemini CLI http://localhost:7777/oauth/callback 環境変数 OAUTH_CALLBACK_PORT=7777 でポートを固定する

2-2. Register OAuth App を実行

  1. API Explorer の検索欄で oauth app を検索し、Auth > Register OAuth App を開く
  2. Run It をクリック
  3. Request タブに入力
    • client_guid:2-1 で決めた値
    • Body:
   {
     "redirect_uri": "http://localhost:8080/callback",
     "display_name": "Claude Code (Looker MCP)",
     "description": "OAuth client to access MCP server using Claude Code",
     "enabled": true
   }
  1. 「この API エンドポイントがデータを変更することを理解しています」にチェック
  2. Run

2-3. 登録を確認

Get OAuth Client App で同じ client_guid を指定して実行し、登録した内容が返ってくれば成功です。

必要に応じて、Activate App User で特定ユーザーを事前に有効化することもできます(任意)。

Step 3. MCP ツールを有効化する

初期状態では、Looker 管理 MCP サーバーのツールは すべて無効 です。

Admin > Platform > Model Context Protocol (MCP) で、エージェントに使わせたいツールを明示的に有効化してください。

Step 4. MCP クライアントを設定する

サーバー URL は https://<LOOKER_INSTANCE_URL>/mcp、認証は OAuth 2.1 です。

Claude Code の場合

プロジェクトルートの .mcp.json:

{
  "mcpServers": {
    "looker": {
      "type": "http",
      "url": "https://<LOOKER_INSTANCE_URL>/mcp",
      "oauth": {
        "clientId": "<CLIENT_GUID>",
        "callbackPort": 8080
      }
    }
  }
}

Claude Code は通常ランダムなポートでコールバックを受けるため、callbackPort を redirect_uri と揃えて固定します。

コールバックポートを redirect_uri と揃えるため、環境変数も設定します。

認証

初回接続時にブラウザが開き、Looker のログイン画面が表示されます。普段の Looker アカウントでログインして許可 すれば完了です。

エージェントは ログインしたユーザーの Looker ロールとアクセス権をそのまま引き継ぐ ので、見られないデータやモデルに AI がアクセスすることはありません。

まとめ

  • PSA 構成の Looker (Google Cloud core) では、Marketplace も API Explorer も公式にはサポートされていない
  • 公式の代替手段(curl)は API キーの発行が前提になる
  • API Explorer を GitHub から手動インストールすれば、管理者のブラウザセッションで OAuth クライアントを登録できる。そのため、API キーを発行せずに Looker 管理 MCP サーバーを導入できる

API Explorer は OAuth クライアント登録以外にも、API の動作確認や OAuth 設定(BI コネクタなど)で役立つので、入れておいて損はないと思います。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?