16
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?

【まとめ】Google Cloud MCP発表!メリットからデモ手順まで徹底解説!

Last updated at Posted at 2025-12-14

Google CloudからGoogleサービス向けのモデルコンテキストプロトコル(MCP)のサポーがついに発表されました!!

これまで、ツール連携に伴うインフラ管理や認証設定に手間を感じていた方にぜひチェックしていただきたい発表です。

本記事では、そんなモデルコンテキストプロトコル (MCP)のメリットと、実際のデモを通じて感じた凄さを解説します!!

メリット

フルマネージド!

これまでは、AIエージェントとGoogleサービスを連携させる際、ローカルでのサーバー起動、コスト管理、そしてセキュリティ設定(特に認証周り)を自前で行う必要がありました。

しかし、これからは、サーバーはGoogleのクラウド上で動き続けてくれるため、インフラ管理は不要になり、開発者はインフラの管理から解放されます。

さらに、Google標準の堅牢なセキュリティ機能が組み込まれており、面倒な認証コードを記述する手間も不要です。

これにより、開発者は本来注力すべきエージェント開発というコアな部分に集中できるようになりました!

現時点(2025年12月)でフルマネージドで使用できるサービスは以下の通りです。

  • Google Maps:場所の検索、ルート案内、天気予報など
  • BigQuery:データの分析、SQLクエリの実行
  • Google Compute Engine (GCE):仮想マシンの作成・管理
  • Google Kubernetes Engine (GKE):コンテナの運用・監視

今後、Cloud RunやCloud Storageなど、他のサービスも順次対応予定とのことです!

Google関連ツールを驚くほど簡単に利用可能!

MCPが提供するもう一つの大きなメリットは、Google関連ツールの接続設定の簡素化です。

通常、複数のGoogleサービスをエージェントに組み込む場合、それぞれのサービスごとに設定やツール定義が必要です。

しかし、MCPでは、Googleが公開しているサービスごとのエンドポイントと、APIキーや認証情報などの接続設定をMCPToolsetというクラスに渡すだけで完了します。

たとえば、BigQueryとGoogle Mapsを連携させる設定は、以下のコード例のように非常にシンプルです。

tools.py
MAPS_MCP_URL = "https://mapstools.googleapis.com/mcp" 
BIGQUERY_MCP_URL = "https://bigquery.googleapis.com/mcp" 

まず、Googleが公開しているエンドポイントを確認して、

tools.py
def get_maps_mcp_toolset():
    tools = MCPToolset(
        connection_params=StreamableHTTPConnectionParams(
            url=MAPS_MCP_URL,
            headers={    
                "X-Goog-Api-Key": MAPS_API_KEY
            }
        )
    )
    print("MCP Toolset configured for Streamable HTTP connection.")
    return tools


def get_bigquery_mcp_toolset():   
        
    credentials, project_id = google.auth.default(
            scopes=["https://www.googleapis.com/auth/bigquery"]
    )

    credentials.refresh(google.auth.transport.requests.Request())
    oauth_token = credentials.token
        
    HEADERS_WITH_OAUTH = {
        "Authorization": f"Bearer {oauth_token}",
        "x-goog-user-project": project_id
    }

    tools = MCPToolset(
        connection_params=StreamableHTTPConnectionParams(
            url=BIGQUERY_MCP_URL,
            headers=HEADERS_WITH_OAUTH
        )
    )
    print("MCP Toolset configured for Streamable HTTP connection.")
    return tools

MCPToolsetというクラスに渡す。あとは今までと同じように、ツールとして登録をするだけです。

今までと比べたら飛躍的に楽になっていることが分かるかと思います。
全てのコードは公式リポジトリをご確認ください!

利用できるツール群

2025年12月時点の情報です。
詳細な情報はリンク先の公式サイトをご確認ください。

Googleマップ

ツール名 説明
search_places 場所に関する情報をリクエストし、AI によって生成された場所データの概要を取得します。
lookup_weather 天気に関する情報をリクエストし、現在の状況、1 時間ごとの天気予報、毎日の天気予報を返します。
compute_routes 2 つの地点間の車または徒歩のルートに関する情報をリクエストし、ルートの距離と所要時間の情報を返します。

BigQuery

ツール名 説明
list_dataset_ids Google Cloud プロジェクト内の BigQuery データセット ID を一覧表示します。
get_dataset_info BigQuery データセットのメタデータ情報を取得します。
list_table_ids BigQuery データセット内のテーブル ID を一覧表示します。
get_table_info BigQuery テーブルのメタデータ情報を取得します。
execute_sql BigQueryに対してSQLクエリ(SELECT文のみ)を実行し、結果を取得します。

Google Compute Engine (GCE)

Command Description
create_instance 新しいGoogle Compute Engine仮想マシン(VM)インスタンスを作成します。
delete_instance GCE VM インスタンスを削除します。
start_instance GCE VM インスタンスを起動します。
stop_instance GCE VM インスタンスを停止します。
reset_instance GCE VM インスタンスをリセット(再起動)します。
get_instance_basic_info Compute Engine VMインスタンスの基本情報、名前、ID、ステータス、マシンタイプ、作成タイムスタンプ、そして接続されたゲストアクセラレータなどを取得します。
set_instance_machine_type 停止中のGoogle Compute Engine (GCE) インスタンスのマシンタイプを、指定されたタイプに変更します。
list_instance_attached_disks Compute Engine 仮想マシン (VM) インスタンスにアタッチされているディスクの一覧を取得します。
list_instances Compute Compute Engine 仮想マシン (VM) インスタンスの一覧を取得します。
get_instance_group_manager_basic_info Compute Engine マネージド インスタンス グループ (MIG) の基本情報(名前、ID、インスタンステンプレート、ベースインスタンス名、ターゲットサイズ、ターゲット停止サイズ、ターゲット一時停止サイズ、ステータス、作成日時など)を取得します。
list_instance_group_managers Compute Engine マネージド インスタンス グループ (MIG) の一覧を取得します。
list_managed_instances 指定したマネージド インスタンス グループ (MIG) 内で管理されているインスタンスの一覧(ID、URL、インスタンスのステータス、現在のアクションなど)を取得します。
list_instance_templates Compute Engine インスタンス テンプレートの一覧を取得します。
get_instance_template_basic_info Compute Engine インスタンス テンプレートの基本情報を取得します。
get_instance_template_properties Compute Engine インスタンス テンプレートのインスタンスプロパティを取得します。
get_disk_basic_info Compute Engine ディスクの基本情報を取得します。 取得される情報には、名前、ID、説明、作成日時、サイズ、タイプ、ステータス、最終アタッチ日時、最終デタッチ日時が含まれます。 実行にはプロジェクト、ゾーン、ディスク名の指定が必要です。
get_disk_performance_config Compute Engine ディスクのパフォーマンス構成を取得します。
list_disks Compute Engine ディスクの一覧を取得します。
list_accelerator_types 利用可能な Google Compute Engine アクセラレータタイプの一覧を取得します。
list_machine_types 利用可能な Google Compute Engine マシンタイプの一覧を取得します。
list_images Compute Engine イメージの一覧を取得します。
get_zone_operation Compute Engine ゾーンオペレーションの詳細を取得します。
get_reservation_basic_info 予約の基本情報(名前、ID、作成日時、ゾーン、ステータス、特定の予約が必要かどうか、コミットメント、リンクされたコミットメントなど)を取得します。
list_reservations Compute Engine 予約の一覧を取得します。
list_commitments 指定されたリージョンの Compute Engine コミットメントの一覧を取得します。
get_commitment_basic_info 確約利用割引の基本情報を取得します。
list_snapshots プロジェクト内のスナップショットの一覧を取得します。

Google Kubernetes Engine (GKE)

ツール名 説明
kube_api_resources Kubernetes クラスターから、利用可能な API グループとリソースを取得します。
kube_get クラスターから 1 つまたは複数の Kubernetes リソースを取得します。リソースの種類、名前、名前空間、ラベルセレクターによるフィルタリングが可能で、結果は YAML 形式で返されます。
list_clusters 指定されたプロジェクトとロケーションにある GKE クラスターを一覧表示します。
get_cluster 特定の GKE クラスターの詳細を取得します。
list_operations 指定されたプロジェクトとロケーションにある GKE オペレーション(操作)を一覧表示します。
get_operation 特定の GKE オペレーションの詳細を取得します。
list_node_pools 特定の GKE クラスターのノードプールを一覧表示します。
get_node_pool GKE クラスター内の特定のノードプールの詳細を取得します。

MCPの凄さがわかるデモ解説!(事前準備)

今回ご紹介するデモはこちらになります。

デモ概要:ベーカリー出店計画をAIがサポート

このデモは、AIエージェント(Gemini 3 Pro)と協力し、「ロサンゼルスで高級ベーカリーを出店するのに最適な場所と価格を決定する」という内容です。

architecture_diagram (1).png

今回のデモのアーキテクチャ図です。

【知能(Gemini 3 Pro)】
Agent Development Kit (ADK)を通じて指示を受け、タスク実行計画を策定

【連携メカニズム(MCP)】
モデルコンテキストプロトコル (MCP) サーバーを経由し、シームレスな接続を実現

【データソース】
BigQuery(販売・人流データ)とMaps API(地理情報)から情報を取得

これにより、Gemini 3 Proが複数のGoogleサービスを統合的に利用し、複雑なビジネス上の意思決定を支援します。

前提条件

デモを行うにあたって、請求を有効にしたGoogle Cloud Projectが必要になります。
Google Cloud Shell(推奨)か、gcloud CLIをインストールしたローカル端末を使います。
今回は、Shell上で実行していきます!

1. リポジトリのクローン

以下のコマンドを実行し、リポジトリをクローンし、そこへ移動します。

git clone https://github.com/google/mcp.git
cd mcp/examples/launchmybakery

2. 認証

以下のコマンドを実行してください

gcloud config set project [YOUR-PROJECT-ID]
gcloud auth application-default login

すると認証用のURLが表示されるので開きます。
その後Googleの認証画面に遷移するので指示に従い、生成されたトークンをShell上に貼り付けてください。

3. 環境の設定

以下のコマンドを実行してください。
setup_env.shというファイルに実行権を与え、実行します。

chmod +x setup/setup_env.sh
./setup/setup_env.sh

4.BigQueryの設定

setup_bigquery.shというファイルを実行します。

chmod +x ./setup/setup_bigquery.sh
./setup/setup_bigquery.sh
  • バケットの作成
  • CSVデータのアップロード
  • データセット作成
  • データをテーブルに読み込む

以上を自動で行ってくれます。

5.ADKをインストールしてエージェントを実行する

# Create virtual environment
python3 -m venv .venv

# If the above fails, you may need to install python3-venv:
# apt update && apt install python3-venv

# Activate virtual environment
source .venv/bin/activate

# Install ADK
pip install google-adk

# Navigate to the app directory
cd adk_agent/

# Run the ADK web interface
adk web

仮想環境を作成し、有効化。
必要なライブラリをインストールし、起動します。

6.エージェントとチャット

これまでの手順を正しく行うと以下のような画面を起動することが出来ます。

スクリーンショット 2025-12-14 18.55.42.png

MCPの凄さがわかるデモ解説!(実践)

早速エージェントと協力して、適切な出店場所を探していきましょう!

ステップ1

まずは、朝の時間帯に人通りが最も多い地域を探します。

【質問】
ロサンゼルスで4店舗目のベーカリー出店を検討しています。
朝の時間帯に人通りが最も多い地域を探したいのですが、フットトラフィックのスコアが一番高い郵便番号を教えてもらえますか?

スクリーンショット 2025-12-14 19.14.21.png

【エージェントの動作】

  • BogQueryのget_table_infoツールを使用し、でテーブル構造を確認
  • execute_sql ツールを用いて、SQLクエリをBigQueryに送信

【結果】
郵便番号「90403」(サンタモニカ)を候補地として教えてくれました!
また、GoogleMAPで確認できるリンクも添付してくれました!

実際にBigQueryに格納されているデータを確認してみると、、

スクリーンショット 2025-12-14 20.15.47.png

サンタモニカ morning(早朝)のスコアは100ということが確認できました。

Googleマップのリンクも正しく該当箇所の情報を提示しています!

スクリーンショット 2025-12-14 19.10.03.png

ステップ2

次に、特定されたエリアで市場の飽和度をチェックします。

【質問】
では、その郵便番号内でベーカリーを検索して、市場が飽和していないかを確認してもらえますか?
もし競合が多すぎるようであれば、代わりにスペシャリティコーヒーの店を探してください。その近くに出店することで、既存客の集客を狙いたいと考えています。

スクリーンショット 2025-12-14 19.19.56.png

【エージェントの動作】

  • Google Maps ツール(search_places)を使用し、サンタモニカのベーカリー市場を分析
  • ベーカリー市場が飽和していると判断し、代替案として「スペシャリティコーヒー店」の近くの具体的な出店候補地を提案

【結果】
ベーカリー市場の飽和を指摘し、集客を狙うためスペシャリティコーヒー店の近くへの出店という、戦略的な候補地を提案してくれました。

ステップ3

価格戦略を練るため、今までの情報をもとに以下のようにお願いをします。

【質問】
これを高級ブランドとして位置づけるために、LA メトロエリアにおける『サワードウ・ローフ』の最高値を把握したいです。

スクリーンショット 2025-12-14 19.37.37.png

【エージェントの動作】

  • get_table_infoツールを使用し、BigQueryのテーブル構造を確認し、分析対象の価格データにアクセス
  • execute_sql を使用し、LAメトロエリアの「サワードウ・ローフ」の最高価格($18.50)をデータから抽出

【結果】
プレミアムブランドとしての価格戦略の指針となる、最高価格($18.50)が提示されました!

ステップ4

続いて、収益を予想していきます。

【質問】
それでは、2025年12月の収益予測をお願いします。
まず、販売履歴からサワードウローフの最も実績の良い店舗のデータを選んでください。
そのデータに基づいて、2025年12月の販売数量を推定し、以前に確認したプレミアム価格をわずかに下回る単価で、予想される総売上を計算してください。

スクリーンショット 2025-12-14 19.57.03.png

【エージェントの動作】

  • get_table_info ツールを使用し、BigQueryのテーブル構造を確認。(販売履歴データへのアクセス準備)
  • execute_sql ツールを用いて、販売履歴から最も実績の良い店舗のデータを特定し、そのデータに基づき2025年12月の販売数量を推定
  • 推定された数量と戦略的な単価を用いて、月間収益予測(約7万ドル)を算出

【結果】
過去データを分析し、売上収益の予想、さらには戦術的なポイントまで教えてくれました。

ステップ5

最後に、物流面を確認します。

【質問】
これなら賃料は賄えそうですね。最後に、物流面を確認してください。
提案された出店エリアから最も近い『Restaurant Depot』を探し、車での移動時間が30分以内であることを確かめてください。

スクリーンショット 2025-12-14 20.00.43.png

【エージェントの動作】

  • search_places ツールを使用し、出店を検討しているサンタモニカの郵便番号周辺で、仕入れ先となる「Restaurant Depot」を検索
  • compute_routes ツールを使用して、車での移動時間を計算

【結果】
流石に適当なのでは、、??と思い実際に検索をしてみたところ、、

スクリーンショット 2025-12-14 20.25.41.png

距離、推定時間ともにユーザーが希望した条件以内になってしました。

エージェントと協力をして、新たなパン屋さんの出店場所を決めることが出来ました!!

MCPの凄さがわかるデモ解説!(クリーンアップ)

以下のコマンドを実行してください。
yを入力するとクリーンアップが始まります。

chmod +x cleanup/cleanup_env.sh
./cleanup/cleanup_env.sh

クリーンアップ作業の最後にこんなことを聞かれます。

スクリーンショット 2025-12-14 20.43.51.png

注意

これは、デモ環境のセットアップ時に有効化された 3つの Google Cloud API を無効化するかどうかを聞いています。

今回のデモで使用したプロジェクトにおいて、このデモ以外で、BigQueryやGoogle Maps関連の他のサービスを使用している場合は注意が必要です!

yでこれらのAPIを無効化をしてしまうと、他のサービスが動作しなくなってしまう可能性があるため、ご自身の環境をよくご確認ください。

まとめ

今回はGoogle Cloudから発表された、Googleサービス向けのモデルコンテキストプロトコル (MCP)の機能とデモについて解説しました。

実際に触れてみて最も衝撃を受けたのは、 開発の手軽さ です。

面倒なインフラ管理、ツール定義をすることなく、エンドポイントに接続をし、必要な情報を渡すだけで今回のデモのような複雑なタスクを実行できました。

これにより、エージェント開発により集中でき、開発スピードが飛躍的に向上すると思いました。

最後までお読みいただきありがとうございました!!

16
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
16
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?