Google MCP サーバーを使ってみる

1. はじめに

ようこそ。この Codelab では、Google マネージド Model Context Protocol(MCP)サーバーを使用して AI エージェントを強化する方法を学びます。

Model Context Protocol(MCP)は、AI モデルが外部のデータソースやツールに安全かつ効率的に接続できるようにするオープンソース標準です。ほとんどの MCP 実装はマシン上でローカルに実行されますが、Google はマネージド リモート MCP サーバーを提供しています。これらは、エージェントがサーバーサイド コードやコンテナを管理することなく Google Cloud インフラストラクチャと直接やり取りできる、フルホスト型のエンタープライズ対応エンドポイントです。

「マネージド」の利点

標準入出力(stdio)を使用するローカル MCP サーバーとは異なり、Google のマネージド サーバーは Streamable HTTP を使用します。このアーキテクチャには次のメリットがあります。

  • ゼロ インフラストラクチャ: プロビジョニングやスケーリングを行うサーバーはありません。
  • 設計によるセキュリティ: Google Cloud IAM と監査ログとのネイティブ統合。
  • ステートレス スケーリング: 標準のロードバランサとプロキシを介したシームレスなインタラクション。

学習内容

  • マネージド MCP サーバーを有効にして認証する方法。
  • Cloud Logging MCP サーバーを基本的なベースラインとして使用する方法。
  • 複数の MCP サーバー(Developer Knowledge、Firestore など)をオーケストレートして自律型ワークフローを構築する方法。

必要なもの

  • 課金が有効になっている Google Cloud プロジェクト。
  • Google Cloud コンソールと gcloud CLI に関する知識。
  • Google Cloud Shell(Gemini CLI がプリインストールされています)。

この Codelab は、初心者を含むあらゆるレベルのユーザーとデベロッパーを対象としています。

問題の報告

この Codelab で Antigravity を使用する際に、問題が発生する可能性があります。

Codelab 関連の問題(誤字脱字、誤った手順)については、この Codelab の左下にある Report a mistake ボタンを使用してバグを報告してください。

b06b582bcd847f6d.png

2. 始める前に

この手順では、Google Cloud 環境を準備します。すべてのタスクは、永続的な事前構成済みのターミナルを提供する Google Cloud Shell 内で実行します。

Cloud Shell をアクティブにする

  1. Google Cloud Console に移動します。
  2. 右上ヘッダーにある [Cloud Shell をアクティブにする] アイコンをクリックします。
  3. ターミナル セッションが開始されたら、プロンプトが表示された場合は承認します。

プロジェクト ID を設定する

Cloud Shell が正しいプロジェクトを指していることを確認します。

# Set your active project
gcloud config set project YOUR_PROJECT_ID

# Verify the setting
gcloud config list project

Foundation API を有効にする

マネージド MCP サーバーでは、基盤となるプロダクト API と MCP インターフェースの両方を有効にする必要があります。次のコマンドを実行して、Cloud Logging バックエンド(このラボのベースライン)を有効にします。

# Enable the Cloud Logging API and its MCP interface
gcloud services enable logging.googleapis.com
gcloud beta services mcp enable logging.googleapis.com

注: マネージド MCP サービスは現在ベータ版です。これらを有効にするには、gcloud ベータ版コンポーネントを使用する必要があります。

アプリケーションのデフォルト認証情報(ADC)を設定する

Gemini CLI は、ユーザー ID を使用して MCP サーバーと通信します。ユーザーに代わって操作する権限をエージェントに付与します。

gcloud auth application-default login

ターミナルの URL にアクセスしてログインし、認証コードを Cloud Shell に貼り付けます。

基盤となる IAM ロールを割り当てる

マネージド MCP サーバーは、二重レイヤ セキュリティ モデルを使用します。次の 2 つの特定の「ゲート」を開く必要があります。

  1. ゲート 1(MCP アクセス): プロトコルを呼び出すことができるロール。
  2. ゲート 2(サービス アクセス): データを表示できるロール(ログの表示など)。

次のコマンドを実行して、必要なアクセス権を自分に付与します。

export PROJECT_ID=$(gcloud config get-value project)
export USER_EMAIL=$(gcloud config get-value account)

# Gate 1: Permission to use the MCP protocol
gcloud projects add-iam-policy-binding $PROJECT_ID \
    --member="user:$USER_EMAIL" \
    --role="roles/mcp.toolUser"

# Gate 2: Permission to view the actual logs
gcloud projects add-iam-policy-binding $PROJECT_ID \
    --member="user:$USER_EMAIL" \
    --role="roles/logging.viewer"

3. 基礎: 最初の MCP サーバーを接続する

このステップでは、AI エージェント(Gemini CLI)を Google Cloud Logging MCP サーバーにリンクします。これは、エージェントがプロジェクト内で何が起こっているかをリアルタイムで確認できるようにするための「基盤」です。

タスク 1: ロギング MCP サーバーを構成する

Gemini CLI は、settings.json ファイルを使用して接続を管理します。このファイル(~/.gemini フォルダにあります)を編集して、mcpServers ブロック内に次のスニペットを追加する必要があります。YOUR_PROJECT_ID は、実際のプロジェクト ID に置き換えます。

"logging-mcp": {
      "httpUrl": "https://logging.googleapis.com/mcp",
      "authProviderType": "google_credentials",
      "oauth": {
        "scopes": [
          "https://www.googleapis.com/auth/logging.read"
        ]
      },
      "timeout": 30000,
      "headers": {
        "x-goog-user-project": "YOUR_PROJECT_ID"
      }
}

: マネージド MCP サーバーでは、API の使用量と課金がプロジェクトに正しく関連付けられるように、x-goog-user-project ヘッダーが必要です。

タスク 2: プロジェクト アクティビティをシミュレートする(ログを作成する)

プロジェクトが新しい場合やアイドル状態の場合、最近の「興味深い」ログがない可能性があります。gcloud CLI を使用してカスタム エントリをいくつか挿入し、エージェントが検出できるようにします。

次のコマンドを 1 つずつ実行して、一連のイベントをシミュレートします。

# 1. Simulate a standard system start
gcloud logging write mcp-test-log "System boot sequence initiated" --severity=INFO
# 2. Simulate a warning about resource limits
gcloud logging write mcp-test-log "High memory pressure detected in zone us-central1-a" --severity=WARNING
# 3. Simulate a critical authentication failure
gcloud logging write mcp-test-log "ERROR: Failed to connect to Cloud SQL. Permission Denied." --severity=ERROR

タスク 3: Gemini CLI でツールを確認する

チャットを開始する前に、エージェントが Logging サーバーによって公開されたツールを「確認」できることを確認しましょう。Gemini CLI を起動します。

gemini

Gemini CLI プロンプト(>)内で、リスト コマンドを実行します。

/mcp list

確認チェックポイント: logging-mcp が [Ready] と表示され、list_log_entries を含む約 6 個のツールが利用可能になっているはずです。

タスク 4: 最初のライブ インフラストラクチャ プロンプト

次に、作成したログを検索するようにエージェントにリクエストします。先に roles/logging.viewer ロールを付与したため、エージェントは「アウトリーチ」してプロジェクトの状態を読み取ることができます。

Gemini CLI に次のプロンプトを入力します。

Show me the 3 most recent log entries from the log named 'mcp-test-log'. What is the highest severity issue you see?

エージェントを監視する:

  1. エージェントから Google Cloud プロジェクト ID の入力を求められることがあります。ご提供ください。
  2. list_log_entries ツールが必要であることが特定されます。
  3. ツールを実行するための権限を求められます。1. Yes, allow once] を選択します。
  4. JSON レスポンスを解析し、シミュレートした Cloud SQL Permission Denied エラーについて通知します。

4. ジャーニー A: ブレイン(Developer Knowledge MCP)

このジャーニーでは、Google Developer Knowledge MCP サーバーに接続して、エージェントに「脳」を与えます。

AI エージェントの最大のリスクの 1 つは、ハルシネーションです。つまり、古い CLI コマンドや非推奨の API パラメータを自信を持って提供することです。この MCP サーバーは、Google の公式のライブ デベロッパー ドキュメント コーパス(Google Cloud、Firebase、Android など)にエージェントを配置することで、この問題を解決します。

タスク 1: ナレッジ サービスを有効にする

基盤ステップと同様に、バックエンド API と MCP サービス エンドポイントの両方を有効にする必要があります。

# 1. Enable the Developer Knowledge API
gcloud services enable developerknowledge.googleapis.com

# 2. Enable the MCP Server interface
gcloud beta services mcp enable developerknowledge.googleapis.com

タスク 2: 制限付き API キーをプロビジョニングする

Developer Knowledge MCP は、認証に API キーを使用します。セキュリティのため、キーを作成し、この特定の API でのみ使用できるように制限します。

  1. 次のスクリプトを実行して、鍵を作成して取得します。
# Create the restricted API key
gcloud alpha services api-keys create \
    --display-name="MCP-Knowledge-Key" \
    --api-target service=developerknowledge.googleapis.com

# Wait a few seconds for the key to propagate, then fetch the string
gcloud alpha services api-keys get-key-string \
    $(gcloud alpha services api-keys list \
    --filter="displayName='MCP-Knowledge-Key'" \
    --format="value(name)") \
    --format="value(keyString)"
  1. 2 番目のコマンドで返された長い文字列をコピーします。これが YOUR_API_KEY です。

タスク 3: Gemini CLI を構成する

次に、Knowledge MCP サーバーをエージェントに登録します。これにより、エージェントは 100% の確信を持って回答できない技術的な質問に遭遇したときに、公式ドキュメントを検索できます。

~/.gemini/settings.json ファイルの mcpServers セクションに次のスニペットを追加し、YOUR_API_KEY をコピーした文字列に置き換えます。

"developer-knowledge-mcp": {
      "httpUrl": "https://developerknowledge.googleapis.com/mcp",
      "headers": {
        "X-Goog-Api-Key": "YOUR_API_KEY"
      }
}

タスク 4: 幻覚防止テスト

エージェントが「推測」ではなく「調査」を行うようになったことを確認しましょう。

Gemini CLI を起動します。

gemini

サーバーが Ready であることを確認します。/mcp list と入力します。google-developer-knowledge に 2 つのツール(search_documentsget_document)が表示されます。

プロンプト: 特定の最新のコマンドを見つけるようエージェントに依頼します。

I want to create a Google Cloud Storage bucket using the modern gcloud storage command. Search the official documentation for the exact syntax and show me an example for a bucket in the 'us-central1' region.

確認すべき点:

  • Gemini は search_documents の使用許可を求めます。
  • その後、get_document を呼び出して、見つかった特定のページを読み取る可能性があります。
  • 最終的な回答には、ドキュメントから直接引用した gcloud storage buckets create ... コマンドを含める必要があります。

5. ジャーニー B: トリアージ(自律的なトラブルシューティング)

前提条件: このジャーニーでは、エージェントが修正を調査できるように、ジャーニー A: ブレインを完了している必要があります。

このジャーニーでは、エージェントの Eyes(Cloud Logging MCP)と Brain(Developer Knowledge MCP)を組み合わせて、自律型トラブルシューティング ループを構築します。

エラーコードを検索エンジンに手動でコピーする代わりに、エージェントに 1 つのプロンプトを指定して、プロジェクトのエラーをスキャンし、公式の解決策を調査して、実行可能な修正レポートを生成します。

タスク 1: GCP で「Bad Day」をシミュレートする

自律型トラブルシューティングの威力を確認するには、現実的な障害セットが必要です。Python スクリプトを使用して、権限拒否エラーから割り当ての問題まで、さまざまなインフラストラクチャのハードルをログに直接挿入します。

  1. Cloud Shell で、任意のフォルダを作成してそのフォルダに移動します。
  2. simulate_errors.py という名前のファイルを作成します。
nano simulate_errors.py
  1. 次のコードをエディタに貼り付けます。
import argparse
from google.cloud import logging

def simulate_errors(project_id):
    client = logging.Client(project=project_id)
    logger = client.logger("mcp-scenario-logger")

    print(f"Simulating realistic errors for project: {project_id}...")

    # 1. GCS Permission Error
    logger.log_text("ERROR: GCS Upload failed for 'gs://my-app-bucket/data.json'. Status: 403 Forbidden. Missing 'storage.objects.create' for service account.", severity="ERROR")

    # 2. Cloud Run Startup Error
    logger.log_text("ERROR: Cloud Run service 'api-gateway' failed to start. Container failed to listen on port 8080. Check 'Cloud Run container startup requirements'.", severity="ERROR")

    # 3. Secret Manager Access Error
    logger.log_text("ERROR: Access denied to secret 'API_KEY'. The identity lacks 'secretmanager.versions.access'.", severity="ERROR")

    print("Log entries written to 'mcp-scenario-logger'.")

if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument("--project", required=True)
    args = parser.parse_args()
    simulate_errors(args.project)
  1. Ctrl+O、Enter、Ctrl+X の順にキーを押して、保存して終了します。
  2. Google Cloud Logging ライブラリをインストールしてスクリプトを実行します。
python -m venv mcp_env
source mcp_env/bin/activate
pip install google-cloud-logging
python simulate_errors.py --project $(gcloud config get-value project)

タスク 2: 自律ループを実行する

次に、Gemini に両方の MCP サーバーを同時にオーケストレートするように指示する複雑なプロンプトを送信します。

Gemini CLI を起動します。

gemini

この「マスター プロンプト」をエージェントに入力します。

I need to troubleshoot recent issues in my project. Perform the following autonomous loop:

Step 1 : Retrieval: Use the Logging MCP to fetch the 5 most recent ERROR entries from the log 'mcp-scenario-logger'.
Step 2 : Iteration: For every unique error found, extract the service and specific error message.
Step 3 : Research: Use the Developer Knowledge MCP to find the official resolution or gcloud command to fix each issue.
Step 4 : Resolution: Consolidate everything into a markdown table with columns: | Service | Error Summary | Recommended Fix |.

その後の流れ

エージェント ワークフローがリアルタイムで実行されています。エージェントは次の対応を行います。

  1. list_log_entries を呼び出して、シミュレートした「Bad Day」を確認します。
  2. テキストを分析して、GCS、Cloud Run、Secret Manager が失敗していることを特定します。
  3. これらのサービスごとに search_documentsget_document を呼び出して、正しい IAM ロールまたは構成の修正を見つけます。
  4. 次のような構造化された表が表示されます(推奨事項は異なる場合があります)。

サービス

エラーの概要

推奨の解決方法

Cloud Storage

アップロード時に 403 Forbidden エラーが発生する

サービス アカウントに roles/storage.objectCreator ロールを付与します。

Cloud Run

ポート 8080 でリッスンできませんでした

アプリが $PORT で定義されたポートの 0.0.0.0 にバインドされていることを確認します。

Secret Manager

バージョンのアクセスロールがない

ID に roles/secretmanager.secretAccessor を割り当てます。

6. ジャーニー C: データ(Firestore MCP)

このジャーニーでは、Firestore MCP サーバーを使用して、自然言語のみで NoSQL ドキュメント データベースを管理します。

Firestore は柔軟でスケーラブルなデータベースですが、管理には複雑な SDK コードの記述やコンソールの操作が必要になることがよくあります。MCP を使用すると、エージェントは データベース管理者になり、データのシード、レコードのクエリ、チャット経由での複雑なスキーマ移行を実行できます。

タスク 1: Firestore サービスを有効にする

まず、Firestore API と対応する MCP エンドポイントを有効にします。

# 1. Enable the Firestore API
gcloud services enable firestore.googleapis.com

# 2. Enable the MCP Server interface
gcloud beta services mcp enable firestore.googleapis.com

タスク 2: Firestore IAM ロールを割り当てる

クエリを実行するには、ID に基本的な MCP アクセス権限に加えて、特定の権限が必要です。

# Grant Firestore User role
gcloud projects add-iam-policy-binding $PROJECT_ID \
    --member="user:$USER_EMAIL" \
    --role="roles/datastore.user"

タスク 3: 専用テスト データベースを作成する

テストを安全に実施するため、mcp-lab-db という名前の専用の Firestore データベースを作成します。

gcloud firestore databases create --database=mcp-lab-db --location=nam5 --type=firestore-native

タスク 4: Gemini CLI を構成する

Firestore MCP サーバーをエージェントに追加します。~/.gemini/settings.json ファイルの mcpServers セクションに次の構成を追加します。YOUR_PROJECT_ID は、実際のプロジェクト ID に置き換えます。

"firestore-mcp": {
      "httpUrl": "https://firestore.googleapis.com/mcp",
      "authProviderType": "google_credentials",
      "oauth": {
        "scopes": [
          "https://www.googleapis.com/auth/cloud-platform"
        ]
      },
      "timeout": 30000,
      "headers": {
        "x-goog-user-project": "YOUR_PROJECT_ID"
      }
}

タスク 5: 自然言語 DB オペレーション

Gemini CLI を起動し、基本的なオペレーションを実行して接続を確認します。

Gemini CLI を起動します。

gemini

サーバーが Ready であることを確認します。/mcp list と入力します。firestore-mcp に複数のツール(add_document, create_database, list_documents, etc)が表示されます。

次のプロンプトを順番に試してください。

シードデータ:

In the 'mcp-lab-db' database, add three documents to a 'products' collection. Include a laptop (stock 5), a mouse (stock 25), and a keyboard (stock 8).

確認事項:

List all documents in the 'products' collection from the 'mcp-lab-db' database.

自然言語で Firestore データベースとコレクションを管理するのに役立つ他のプロンプトも試してみてください。

7. ジャーニー D: インテリジェンス(BigQuery と Maps)

このジャーニーでは、BigQueryMaps Grounding Lite の MCP サーバーを使用して、ペタバイト単位のデータを分析し、現実世界を理解する機能をエージェントに提供します。

このセクションの終わりまでに、エージェントは自然言語を複雑な SQL クエリに変換し、コンテキスト認識型の地理空間アドバイス(移動時間や天気など)を提供して、回答を現実に即したものにできるようになります。

タスク 1: インテリジェンス サービスを有効にする

BigQuery と Google マップの両方で API と MCP インターフェースを有効にします。

# 1. Enable product APIs
gcloud services enable bigquery.googleapis.com mapstools.googleapis.com

# 2. Enable MCP Server interfaces
gcloud beta services mcp enable bigquery.googleapis.com
gcloud beta services mcp enable mapstools.googleapis.com

タスク 2: BigQuery IAM ロールを割り当てる

クエリを実行するには、ID に基本的な MCP アクセス権限に加えて、特定の権限が必要です。

# Grant BigQuery Job User and Data Viewer roles
gcloud projects add-iam-policy-binding $PROJECT_ID \
    --member="user:$USER_EMAIL" \
    --role="roles/bigquery.jobUser"

gcloud projects add-iam-policy-binding $PROJECT_ID \
    --member="user:$USER_EMAIL" \
    --role="roles/bigquery.dataViewer"

タスク 3: Maps API キーをプロビジョニングする

IAM のみに依存する他のサービスとは異なり、Maps Grounding Lite サーバーでは割り当てと課金に API キーが必要です。

鍵を作成します。

gcloud alpha services api-keys create --display-name="MCP-Maps-Key"

キー文字列を取得します。

# Wait a few seconds for the key to propagate, then fetch the string
gcloud alpha services api-keys get-key-string \
    $(gcloud alpha services api-keys list \
    --filter="displayName='MCP-Maps-Key'" \
    --format="value(name)") \
    --format="value(keyString)"

次のステップのためにキー文字列をコピーします。

タスク 4: Gemini CLI を構成する

両方のサーバーを登録します。次のスニペットを ~/.gemini/settings.json ファイルの mcpServers セクションに追加します。必要に応じて YOUR_PROJECT_IDYOUR_MAPS_API_KEY を置き換えます。

"bigquery-mcp": {
      "httpUrl": "https://bigquery.googleapis.com/mcp",
      "authProviderType": "google_credentials",
      "oauth": {
        "scopes": [
          "https://www.googleapis.com/auth/cloud-platform"
        ]
      },
      "timeout": 30000,
      "headers": {
        "x-goog-user-project": "YOUR_PROJECT_ID"
      }
},
"maps-grounding-lite-mcp": {
      "httpUrl": "https://mapstools.googleapis.com/mcp",
      "headers": {
        "X-Goog-Api-Key": "YOUR_MAPS_API_KEY"
      }
}

タスク 5: インテリジェンスの活用

Gemini CLI を起動して、新しい「インテリジェンス」機能をテストします。

gemini

サーバーが Ready であることを確認します。/mcp list と入力します。bigquery-mcpmaps-grounding-lite-mcp が表示され、いくつかのツールが一覧表示されます。.

シナリオ 1: 分析エンジン(BigQuery)SQL を知らなくても、一般公開データセットをクエリするようにエージェントに依頼します。

Run a query to count the number of penguins on each island in the BigQuery public dataset ml_datasets.penguins.

シナリオ 2: 地理空間コンテキスト(マップ)エージェントに現実世界の旅行の計画を立てるよう依頼します。

I am planning a drive from Mumbai to Pune tomorrow morning. Based on current weather and routing, what should I expect in terms of travel time and what should I carry?

確認すべき点:

  • BigQuery の場合、エージェントは execute_sql を呼び出してスキーマを検出し、クエリを実行します。
  • マップの場合、lookup_weather と compute_routes をオーケストレートして、根拠のある役立つ旅行プランを提供します。

8. 強化: 本番環境のセキュリティと IAM

この最後のステップでは、広範な「オーナー」権限の使用から、本番環境グレードの多層防御モデルに移行します。

AI エージェントは本質的に「役に立つ」存在です。UI レベルでツールを制限すると、スマート エージェントが代わりにシェル コマンドを実行して、その制限を回避しようとする可能性があります。インフラストラクチャを真に保護するには、Google Cloud IAM を使用してハード バウンダリを構築する必要があります。

二重層セキュリティ モデル

エージェントがアクションを実行するには、次の 2 つのゲートを通過する必要があります。

  1. ゲート 1(MCP ゲート): ID に roles/mcp.toolUser がありますか?(プロトコルを使用する権限)。
  2. ゲート 2(サービスゲート): ID に特定のプロダクトロール(roles/datastore.viewer など)がありますか?(データ閲覧権限)。

タスク 1: レイヤ 1 - クライアントサイド フィルタリング(excludeTools

最初の防御レイヤは、エージェントからツールを隠し、ツールを使用することを「考え」させないようにすることです。

  1. Cloud Shell エディタで Gemini CLI の設定を開きます。
cloudshell edit ~/.gemini/settings.json
  1. firestore-mcp ブロックを見つけて、破壊的なアクションを非表示にする excludeTools ディレクティブを追加します。
"firestore-mcp": {
  "httpUrl": "https://firestore.googleapis.com/mcp",
  "excludeTools": ["delete_database", "update_database", "delete_document"],
  ...
}

ファイルを保存して、Gemini CLI を再起動します。/mcp list を実行すると、これらのツールが消えていることがわかります。

タスク 2: レイヤ 2 - インフラストラクチャの優位性(IAM バウンサー)

クライアントサイド フィルタリングは「ソフト」なガードレールです。エージェントに「Firestore データベースを削除して」と指示し、ツールが非表示になっている場合、gcloud firestore databases delete の実行が試行されることがあります。これを防ぐため、最小権限のサービス アカウントを使用します。

「読み取り専用」サービス アカウントを作成します。

# Create the service account
gcloud iam service-accounts create mcp-reader-sa --display-name="MCP Reader Only"

# Grant ONLY the necessary roles (Gate 1 + Gate 2)
export PROJECT_ID=$(gcloud config get-value project)
SA_EMAIL="mcp-reader-sa@$PROJECT_ID.iam.gserviceaccount.com"

gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SA_EMAIL" --role="roles/mcp.toolUser"
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SA_EMAIL" --role="roles/datastore.viewer"
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SA_EMAIL" --role="roles/aiplatform.user"

キーを生成して有効にする:

gcloud iam service-accounts keys create reader-key.json --iam-account=$SA_EMAIL
export GOOGLE_APPLICATION_CREDENTIALS=$(pwd)/reader-key.json

タスク 3: 「役に立つエージェント」のバウンサー テスト

次に、エージェントがセキュリティをバイパスできるかどうかをテストします。

最初の手順として、サービス アカウントを有効にします。これにより、エージェントが gcloud コマンドの使用にフォールバックした場合でも、作成したサービス アカウント ID で動作します。

サービス アカウントを有効にする:

次のコマンドを実行します。[PATH_TO_KEY_FILE] は、JSON キーファイルの実際のパス(reader-key.json など)に置き換えます。

gcloud auth activate-service-account --key-file=[PATH_TO_KEY_FILE]

変更を確認する:

コマンドを実行した後、次のコマンドを実行して、サービス アカウントがアクティブであることを確認できます。

gcloud auth list

出力には、サービス アカウントがアクティブな認証情報として表示されます。

Gemini CLI を起動する:

gemini

次のプロンプトを入力します。

I want to delete the 'mcp-lab-db' firestore database. If the tool is missing, try using the gcloud firestore command in the terminal.

どうなるでしょうか?

  1. エージェントは、まず Firestore MCP サーバーの delete_database ツールを使用しようとします。権限がないため、失敗します。
  2. 次に、run_shell_command ツールにフォールバックして gcloud firestore コマンドを使用することで、「役に立つ」ことを試みます。

結果:

コマンドが失敗し、Forbidden エラーが返されます。エージェントは mcp-reader-sa ID で実行されているため、datastore.databases.delete 権限がありません。IAM は究極のバックストップです。エージェントがリソースにアクセスしようとしても、Google Cloud API レベルの「バウンサー」がリクエストをブロックします。

ユーザー アカウントに戻る:

ユーザー アカウントに戻るには、次のコマンドを入力します。

gcloud config set account YOUR_EMAIL_ADDRESS

9. クリーンアップ

不要な料金が発生しないように、テストリソースを削除します。

# Delete the Firestore database
gcloud firestore databases delete --database=mcp-lab-db

# Remove the service account
gcloud iam service-accounts delete mcp-reader-sa@$PROJECT_ID.iam.gserviceaccount.com

10. まとめ

おめでとうございます!Google マネージド MCP サーバーのフルスタックを正常にナビゲートしました。

ラボの「幹」から始め、Cloud Logging への基本的な接続を確立しました。そこから、モジュール式の「アドベンチャー」に分岐し、エージェントの知識のグラウンディング、複雑なトラブルシューティング ループの自動化、Firestore でのデータの移行、BigQueryMaps からのインテリジェンスの抽出を行いました。

最も重要なことは、本番環境のセキュリティの根幹にエージェントを固定して終了したことです。エージェントは過剰に「親切」になる可能性がある一方で、Google Cloud IAM は究極のバウンサーであり、自律型ワークフローが常に最小権限の原則を尊重することを保証します。

重要ポイント

  • Managed = Scalable: 1 台のサーバーもデプロイせずに、ストリーミング可能な HTTP 経由でインフラストラクチャ レベルのツールに接続しました。
  • グラウンディングは必須: LLM の「推測」を Developer Knowledge MCP に置き換え、エージェントが最新の有効なコマンドを使用するようにします。
  • オーケストレーションは強力: エージェントが複数の MCP サーバーを組み合わせて 1 つのビジネス上の問題を解決するときに、真の魔法が起こることを説明しました。