75-Min GDE Workshop

Build a Location Intelligence
ADK Agent with MCP servers
for BigQuery and Google Maps

Hands-On Workshop • Ground a Gemini agent in enterprise data and the real world

Rabimba Karanjai • Google Developer Expert (AI/ML)
Google Cloud Layers
Google Cloud Labs Module 0 • Welcome • 00:02 – 00:04 (2 min) Google Developer Expert

💳 Redeem Your Free Cloud Credits

Credit redemption QR code g.dev/credits/latw-bigquery-100

Point your phone camera at the code → redeem → create or pick a project with billing enabled. BigQuery and Maps Grounding Lite are pay-as-you-go; today's lab fits inside these credits many times over.

Wi-Fi: LATW Dev Network  ·  Password: LATWDevs2026!
Google Cloud
Google Cloud Labs Module 0 • Welcome • 00:04 – 00:05 (1 min) Google Developer Expert

This is what you'll have running in about 40 minutes

One Gemini agent • Two managed MCP servers • Zero hand-written API clients

demo

Live demo: an ADK agent chains BigQuery SQL with Google Maps lookups (source: Google Cloud announcement, Dec 10 2025).

Google Cloud
Google Cloud Labs Module 0 • Welcome • 00:05 – 00:06 (1 min) Google Developer Expert

Workshop Hub — scan these now

Everything you need is one QR away; the codelab has all commands and prompts

</>

1. The Codelab (follow along)

codelabs.developers.google.com/adk-mcp-bigquery-maps

Full step-by-step lab: setup scripts, agent code, and every prompt we will run today.

QR Code
</>

2. Free Credits (redeem first!)

g.dev/credits/latw-bigquery-100

Maps Grounding Lite and BigQuery need billing enabled. Redeem your event credit code, then create a project.

QR Code
</>

3. Slides & Speaker Runbook

github.com/rabimba/GDE-ML-Artifacts

This deck, the verbatim facilitator script, and the copy-paste prompt sheet.

QR Code
Google Cloud
Fan Background
Google Developer Expert
Rabimba Karanjai

Rabimba
Karanjai

Google Developer Expert — AI & ML

ML Scientist — PayPal

Agentic Systems Model Context Protocol Google Cloud Run
Google Cloud Labs Module 0 • Welcome • 00:07 – 00:08 (1 min) Google Developer Expert

Start your engines — setup runs while I talk

1

Open Cloud Shell

console.cloud.google.com → Activate Cloud Shell (top bar)
2

Clone the demo repo

git clone https://github.com/google/mcp.git
3

Run setup_env.sh

cd mcp/examples/launchmybakery && ./setup/setup_env.sh
4

Run setup_bigquery.sh

./setup/setup_bigquery.sh
DO THIS NOW

Provision in the background

The two setup scripts take ~3-5 min. Kick them off now, then look up — I'll explain what everything is while your project provisions itself.

Cloud Shell
# Verify auth + project
gcloud auth list
export PROJECT_ID=$(gcloud config get project)

# Get the code
git clone https://github.com/google/mcp.git
cd mcp/examples/launchmybakery

# Kick off BOTH setup scripts
./setup/setup_env.sh
./setup/setup_bigquery.sh
Google Cloud
Google Cloud Labs Module 1 • Concepts • 00:08 – 00:10 (2 min) Google Developer Expert
Agent Icon

Your friend is opening a sourdough
bakery in Los Angeles. Where?

🎤 Quick poll: how would you actually decide which LA zip code to open in?
  • A) Walk around and 'get a feel' for neighborhoods Click to Vote
  • B) Hire a market-research firm ($$$, weeks) Click to Vote
  • C) Ask an LLM chatbot for the 'best' zip code Click to Vote
  • D) Combine real foot-traffic data with live Maps info Click to Vote
💡 C alone hallucinates — a model can't know current foot traffic or which bakeries exist. The winning move is D: data + the real world, joined by an agent. Today we build exactly that.
Google Cloud
Google Cloud Labs Module 1 • Concepts • 00:10 – 00:11 (1 min) Google Developer Expert

Two data worlds, one question

icon

Enterprise Data — BigQuery

  • Demographics & foot-traffic index by zip
  • Competitor product pricing
  • Weekly sales history per store
  • Your private, governed numbers
An agent must reason across BOTH to answer 'where should I open?'
icon

The Real World — Google Maps

  • Which bakeries actually exist nearby?
  • Drive time to the supplier
  • Weather for opening weekend
  • Fresh, public, geospatial truth
Google Cloud
Google Cloud Labs Module 1 • Concepts • 00:11 – 00:13 (2 min) Google Developer Expert

What makes an LLM an Agent?

Build the definition up piece by piece — press → to reveal each part

icon

1. MODEL

Gemini 3.5 Flash — the reasoning brain. Alone, it only predicts text.

icon

2. + INSTRUCTIONS

A system prompt that defines the goal, persona, and rules of the game.

icon

3. + TOOLS

Functions the model may call to act on the world — query BigQuery, search Maps.

icon

4. + LOOP

Reason → pick a tool → act → observe result → reason again, until the goal is met.

Agent = Model + Instructions + Tools, running in a Reason-Act-Observe loop
Google Cloud
Google Cloud Labs Module 1 • Concepts • 00:13 – 00:14 (1 min) Google Developer Expert

The three pillars we'll use today

Tech Icon

Gemini 3.5 Flash
(on Vertex AI)

The reasoning model. Our .env sets GOOGLE_GENAI_USE_VERTEXAI=1, so ADK calls it through your project's Vertex AI endpoint.

Tech Icon

ADK
Agent Development Kit

Google's open-source framework for building agents: LlmAgent, tool wiring, sessions, and a built-in web UI for debugging.

Tech Icon

MCP
Model Context Protocol

The open standard (started by Anthropic) that lets any agent discover and call tools on any server — one protocol instead of N custom integrations.

Google Cloud
Google Cloud Labs Module 1 • Concepts • 00:14 – 00:15 (1 min) Google Developer Expert

An ADK agent in ~15 lines

adk_agent/mcp_bakery_app/agent.py — the entire agent definition

python
root_agent = LlmAgent(
    model='gemini-3.5-flash',
    name='root_agent',
    instruction=f"""
      Help the user answer questions by strategically
      combining insights from two sources:
      1. **BigQuery toolset:** Access demographic (inc.
         foot traffic index), product pricing, and
         historical sales data in the mcp_bakery
         dataset. Do not use any other dataset.
         Run all query jobs from project id: {PROJECT_ID}.
      2. **Maps Toolset:** Use this for real-world
         location analysis, finding competition/places
         and calculating necessary travel routes.
         Include a hyperlink to an interactive map in
         your response where appropriate.
    """,
    tools=[maps_toolset, bigquery_toolset]
)

The three control surfaces:

  • model — Which Gemini does the thinking
  • instruction — The agent's job description — notice it scopes the data AND names the project
  • tools — Two MCP toolsets = every tool from both servers
Google Cloud
Google Cloud Labs Module 1 • Concepts • 00:15 – 00:17 (2 min) Google Developer Expert

MCP: from N×M integrations to N+M

The 'USB-C for AI' — Anthropic's open standard, adopted across the industry

Without MCP: every agent hand-codes every API
ADK Agent
Gemini CLI
Any MCP client
✕ ✕ ✕
✕ ✕ ✕
BigQuery
Google Maps
Your API?
With MCP: each side implements the protocol once
ADK Agent
Gemini CLI
Any MCP client
MCP
BigQuery
Google Maps
Your API?
Google Cloud
Google Cloud Labs Module 1 • Concepts • 00:17 – 00:18 (1 min) Google Developer Expert

MCP anatomy: Host, Client, Server

And the transport that carries it — today that's Streamable HTTP

icon

HOST

ADK's web UI — the app the user chats with.

icon

CLIENT

An MCP client inside the host keeps a dedicated connection per server.

icon

SERVER

BigQuery & Maps servers expose a catalog of named, typed tools.

icon

TRANSPORT

Stdio for local servers; Streamable HTTP for remote, Google-hosted ones — what we use today.

Our agent never runs BigQuery or Maps code — it calls remote tools over HTTP
Google Cloud
Google Cloud Labs Module 1 • Concepts • 00:18 – 00:20 (2 min) Google Developer Expert

Google's managed, remote MCP servers

Announced Dec 10, 2025 — Google's API infrastructure now speaks MCP

No local servers to install, patch, or secure. You point your client at a globally-consistent endpoint.

  • BigQuery: https://bigquery.googleapis.com/mcp
  • Google Maps (Grounding Lite): https://mapstools.googleapis.com/mcp
  • Also live: GCE & GKE today — rolling out next: Spanner, AlloyDB, Cloud Run, Developer Knowledge...
  • Enable per project: gcloud beta services mcp enable <service> (setup_env.sh did this)
  • Governance: IAM (roles/mcp.toolUser), audit logging, Model Armor for prompt-injection defense
Architecture Diagram 🔍 Click diagram to enlarge full-screen
Google Cloud
Google Cloud Labs Module 1 • Concepts • 00:20 – 00:21 (1 min) Google Developer Expert
icon

BigQuery MCP server — the 6 tools

The agent discovers these itself; column descriptions become its documentation

list_dataset_idsWhat datasets exist in this project?
list_table_idsWhat tables are in mcp_bakery?
get_dataset_infoMetadata about a dataset
get_table_infoSchema + column descriptions for a table
execute_sqlRun any SQL — including AI.FORECAST
execute_sql_readonlySame, but mutations blocked by design
The agent reads get_table_info output to write its own SQL. Rich column descriptions in setup_bigquery.sh = a better agent. Your schema docs ARE the prompt.
Google Cloud
Google Cloud Labs Module 1 • Concepts • 00:21 – 00:22 (1 min) Google Developer Expert
icon

Maps Grounding Lite — the 5 tools

Trusted geospatial grounding with required Google Maps attribution

search_placesFind places + AI summaries + Maps links
compute_routesDistance & duration between two points
lookup_weatherCurrent conditions & forecasts
resolve_namesFree-text address/place -> Place ID
resolve_maps_urlsGoogle Maps URL -> Place ID
Grounding Lite returns distance & duration — NOT turn-by-turn directions. Every grounded answer must show its Google Maps source link (the agent is instructed to include it).
Google Cloud
Google Cloud Labs Module 1 • Concepts • 00:22 – 00:23 (1 min) Google Developer Expert

Two servers, two auth patterns — tools.py

Same MCPToolset, different credentials

Both toolsets use StreamableHTTPConnectionParams; only the header differs.

  • Maps: Simple API key in the X-Goog-Api-Key header (restricted to mapstools.googleapis.com).
  • BigQuery: OAuth 2.0 bearer token from your Application Default Credentials + x-goog-user-project for billing.
  • ⚠️ Token lifetime: ADC tokens expire ~60 min and ADK does not auto-refresh — re-run gcloud auth application-default login if a long session dies.
adk_agent/mcp_bakery_app/tools.py (excerpt)
# --- Maps: API key header ---
MCPToolset(
  connection_params=StreamableHTTPConnectionParams(
    url="https://mapstools.googleapis.com/mcp",
    headers={"X-Goog-Api-Key": maps_api_key},
    timeout=30.0, sse_read_timeout=300.0))

# --- BigQuery: OAuth bearer from ADC ---
credentials, project_id = google.auth.default(
    scopes=["https://www.googleapis.com/auth/bigquery"])
credentials.refresh(
    google.auth.transport.requests.Request())
HEADERS_WITH_OAUTH = {
    "Authorization": f"Bearer {credentials.token}",
    "x-goog-user-project": project_id}
MCPToolset(
  connection_params=StreamableHTTPConnectionParams(
    url="https://bigquery.googleapis.com/mcp",
    headers=HEADERS_WITH_OAUTH,
    timeout=30.0, sse_read_timeout=300.0))
Google Cloud
Google Cloud Labs Module 1 • Concepts • 00:23 – 00:25 (2 min) Google Developer Expert

The reasoning journey: macro → micro → money

Watch how one conversation walks down the decision funnel, switching tools

Q1 Which zip has the highest morning foot traffic? BigQuery • execute_sql → 90403 (Santa Monica)
Q2 Is 90403 already saturated with bakeries? Maps • search_places → competitor scan
Q3 Max price of a Sourdough Loaf in LA Metro? BigQuery • execute_sql → Erewhon ≈ $18.50
Q4 Forecast Dec sales from my best store @ $18 BigQuery • AI.FORECAST → revenue projection
Q5 Is Restaurant Depot < 30 min away? Maps • compute_routes → logistics check
Google Cloud
Google Cloud Labs Module 1 • Concepts • 00:25 – 00:26 (1 min) Google Developer Expert

The full architecture

Everything on one slide — this is your 'you are here' map for the lab

Trace one request end to end:

  • 1. User: asks in the ADK web UI (adk web)
  • 2. Agent (Gemini 3.5 Flash): reasons on Vertex AI, picks a tool
  • 3. MCP toolset: sends a signed Streamable HTTP call
  • 4a. BigQuery MCP: interprets schema & runs SQL in place — data never leaves BigQuery
  • 4b. Maps MCP: grounds in live places, routes, weather
  • 5. Agent: combines both into one grounded business answer
Architecture Diagram 🔍 Click diagram to enlarge full-screen
Google Cloud
Google Cloud Labs Module 1 • Concepts • 00:26 – 00:27 (1 min) Google Developer Expert

Concept Check

Click to reveal each answer

  • Q1: Agent needs today's weather at the site?
  • Q2: Agent must forecast December revenue?
  • Q3: Agent must list tables before writing SQL?

Why not just…?

Common objections

  • Paste CSVs into the prompt?: 40k+ rows won't fit, goes stale, and leaves governance.
  • Call Maps with curl?: You'd hand-write auth, parsing & schemas — MCP already did it.
  • Fine-tune on my data?: Teaches style, not fresh facts. Tools > training for live data.
🎯 Answers: Q1 → Maps lookup_weather • Q2 → BigQuery execute_sql + AI.FORECAST • Q3 → BigQuery list_table_ids / get_table_info
Rule of thumb: facts that live in your warehouse → BigQuery tool. Facts about the physical world right now → Maps tool. The agent learns the tools exist from the toolsets, not from you hard-coding the path.
Google Cloud
Google Cloud Labs Module 1 • Concepts • 00:27 – 00:28 (1 min) Google Developer Expert

Taking this to production — the guardrails that matter

The demo uses your personal credentials for speed. Before this pattern ships, layer on:

  • • Least privilege: grant only roles/mcp.toolUser + bigquery.jobUser + bigquery.dataViewer; nothing broader
  • • Separate agent identity: run the agent as its own service account so tool calls are attributable & revocable
  • • Prefer read-only SQL: use execute_sql_readonly, or an IAM deny policy on execute_sql, so the agent can't mutate
  • • Restrict the Maps key: scope it to mapstools.googleapis.com only (setup_env.sh already did)
  • • Defend the prompt: Model Armor screens tool output for indirect prompt injection
  • • Watch the logs: every MCP tool call lands in Cloud Audit Logs — alert on anomalies
Google Cloud
Google Cloud Labs Module 2 • Lab A: Setup • 00:28 – 00:29 (1 min) Google Developer Expert

Let's build this!

Google G Part A: finish provisioning • Part B: run the agent • Part C: the full journey
Google Cloud
Google Cloud Labs Module 2 • Lab A: Setup • 00:29 – 00:31 (2 min) Google Developer Expert

Step 1: Project, auth & the code

If you did the 'engines' step, just verify — else run it now

Confirm you're authenticated and the repo is cloned.

  • gcloud auth list: must show your account as ACTIVE
  • export PROJECT_ID=$(gcloud config get project): every later script reads this
  • gcloud auth application-default login: creates the ADC the BigQuery MCP toolset needs
  • ⚠️ Billing: Maps Grounding Lite & BigQuery both require billing — redeem your credit first
Cloud Shell
gcloud auth list
gcloud config get project
export PROJECT_ID=$(gcloud config get project)

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

# Required so ADK can call BigQuery via MCP
gcloud auth application-default login
Codelab Screenshot 🔍 Click screenshot to zoom
Google Cloud
Google Cloud Labs Module 2 • Lab A: Setup • 00:31 – 00:33 (2 min) Google Developer Expert

What those two setup scripts just did

Press → to walk through the provisioning you kicked off at minute 5

icon

setup_env.sh • 1

Enables APIs: aiplatform, apikeys, mapstools, bigquery — plus the MCP endpoints (gcloud beta services mcp enable).

icon

setup_env.sh • 2

Creates a Maps API key restricted to mapstools.googleapis.com and writes .env (VERTEXAI flag, project, key).

icon

setup_bigquery.sh • 1

Creates a Cloud Storage bucket and uploads the 4 CSVs (demographics, prices, sales, foot traffic).

icon

setup_bigquery.sh • 2

Creates dataset mcp_bakery and 4 tables — each column carrying a description the agent will read.

Result: a governed dataset + a restricted key + MCP endpoints switched on
Google Cloud
Google Cloud Labs Module 2 • Lab A: Setup • 00:33 – 00:35 (2 min) Google Developer Expert

✋ Checkpoint 1: Your data is live

⏱️ Hands-On Lab Timer: 02:00
  • Open: the BigQuery console in your project
  • Confirm: dataset mcp_bakery exists with 4 tables
  • Peek: at foot_traffic → rows where time_of_day='morning' carry a foot_traffic_score
  • Stuck?: re-run ./setup/setup_bigquery.sh; check PROJECT_ID is set
Codelab Screenshot

BigQuery console: mcp_bakery dataset with its 4 tables (Click to zoom)

Google Cloud
Google Cloud Labs Module 2 • Lab A: Setup • 00:35 – 00:38 (3 min) Google Developer Expert

Step 2: Install ADK in a virtualenv

google-adk[mcp] — the [mcp] extra brings the MCP client

Isolate the install, then install ADK with MCP support.

  • python3 -m venv .venv: keep Cloud Shell's system Python clean
  • pip install "google-adk[mcp]": the extra pulls in the MCP client libraries
  • Trouble?: the repo pins a known-good: pip install google-adk==1.28.0
  • Then: cd adk_agent/ — adk web discovers apps under the CWD
Cloud Shell
python3 -m venv .venv
source .venv/bin/activate

# The [mcp] extra = MCP client support
pip install "google-adk[mcp]"

# adk web scans the current dir for agents
cd adk_agent/
Google Cloud
Google Cloud Labs Module 3 • Lab B: Run It • 00:38 – 00:40 (2 min) Google Developer Expert

Step 3: Read the agent you'll run

  • Open Editor: in Cloud Shell, browse mcp/examples/launchmybakery
  • agent.py: find the LlmAgent — model, instruction, tools
  • tools.py: find the two MCPToolset calls & their headers
  • .env: confirm GOOGLE_GENAI_USE_VERTEXAI=1 and MAPS_API_KEY are set
Codelab Screenshot

Cloud Shell Editor showing the launchmybakery layout (Click to zoom)

Google Cloud
Google Cloud Labs Module 3 • Lab B: Run It • 00:40 – 00:43 (3 min) Google Developer Expert

Step 4: Launch the agent UI

adk web + Cloud Shell Web Preview on port 8000

Start the dev server, then open it through Web Preview.

  • --allow_origins: required in Cloud Shell so the IDE proxy origin is accepted
  • Web Preview: top-right of Cloud Shell → Change port → 8000 → Change and Preview
  • Pick the app: select mcp_bakery_app in the UI's dropdown
  • Empty dropdown?: you ran adk web from the wrong directory — cd adk_agent/ first
Cloud Shell (inside adk_agent/)
adk web --allow_origins \
  'regex:https://.*\.cloudshell\.dev'

# Then in Cloud Shell:
#  Web Preview (top right)
#    → Change port → 8000
#    → Change and Preview
Codelab Screenshot 🔍 Click screenshot to zoom
Google Cloud
Google Cloud Labs Module 3 • Lab B: Run It • 00:43 – 00:46 (3 min) Google Developer Expert

✋ Checkpoint 2: First tool call (macro)

⏱️ Hands-On Lab Timer: 03:00
  • Ask: "I want to open a bakery in Los Angeles. Find the zip code with the highest morning foot traffic score."
  • Watch the trace: agent calls get_table_info, then execute_sql on foot_traffic
  • Expect: zip 90403 (Santa Monica) surfaces to the top
  • Auth error?: re-run gcloud auth application-default login (60-min token)
Codelab Screenshot

ADK web: execute_sql finds the top morning-traffic zip (Click to zoom)

Google Cloud
Google Cloud Labs Module 3 • Lab B: Run It • 00:46 – 00:49 (3 min) Google Developer Expert

✋ Checkpoint 3: Validate on the ground (micro)

⏱️ Hands-On Lab Timer: 03:00
  • Follow up: "Can you search for 'Bakeries' in that zip code to see if it's saturated?"
  • Notice: no zip in your prompt — the agent carried 90403 from memory
  • Watch: the trace switch servers: Maps search_places
  • Click: the Google Maps link in the answer — that's the required attribution
Codelab Screenshot

ADK web: Maps search_places scans 90403 for bakeries (Click to zoom)

Google Cloud
Google Cloud Labs Module 3 • Lab B: Run It • 00:49 – 00:52 (3 min) Google Developer Expert

Your turn: run the rest of the journey

Three more prompts — predict the tool before you run each (answers in the codelab)

Q3 Max price of a Sourdough Loaf in LA Metro? BigQuery Erewhon ≈ $18.50
Q4 Forecast Dec '25 from best store, price $18 BigQuery + AI.FORECAST qty → ×$18 revenue
Q5 Closest Restaurant Depot under 30 min away? Maps compute_routes check
★ Chain them yourself — one thread, all five both servers full business case
Google Cloud
Google Cloud Labs Module 3 • Lab B: Run It • 00:52 – 00:54 (2 min) Google Developer Expert

⚡ Finished early? Break it (productively)

Tweak the instruction

The cheapest way to change behavior

Prompt / Snippet
# agent.py — edit the instruction, e.g.:
"Position the brand as budget-friendly
 and always cite the source table."
# save → adk web reloads → re-ask Q3
  • Watch: the price recommendation shift with one sentence
  • Try: a persona: 'You are a skeptical CFO'

Stretch the tools

Push past the script

Prompt / Snippet
# Ask about the weather on opening day
"Weather in 90403 this Saturday?"
   → Maps lookup_weather

# Safety: force read-only SQL
# MCPToolset(tool_filter=['execute_sql_readonly'])
# or an IAM deny on execute_sql
  • Weather: a 3rd tool you never configured — it was just there
  • Read-only: one change removes the agent's ability to mutate data
Google Cloud
Google Cloud Labs Module 3 • Lab B: Run It • 00:54 – 00:57 (3 min) Google Developer Expert

Quick fixes — the 6 ways today breaks

Hit a wall? It's almost certainly one of these:

  • • Auth errors mid-lab: ADC token expired (~60 min) → gcloud auth application-default login
  • • 'API not enabled' / 403: MCP endpoint off → gcloud beta services mcp enable bigquery.googleapis.com && gcloud beta services mcp enable mapstools.googleapis.com
  • • Empty app dropdown: adk web run from wrong dir → cd mcp/examples/launchmybakery/adk_agent
  • • Web Preview refuses: missing --allow_origins 'regex:https://.*\.cloudshell\.dev'
  • • Maps calls fail: key missing/restricted wrong → check .env MAPS_API_KEY, target service mapstools.googleapis.com
  • • Billing errors: project has no billing → redeem the event credit and re-attach
Google Cloud
Google Cloud Labs Module 4 • Wrap-Up • 00:57 – 00:59 (2 min) Google Developer Expert

Clean up — don't donate your credits back

One script deletes the dataset, bucket, and API key

Stop the server (Ctrl+C), then run cleanup from the repo root.

  • Deletes: BigQuery dataset mcp_bakery + the GCS bucket
  • Revokes: the restricted Maps API key created at setup
  • Keeps: your project — so you can re-run ./setup scripts any time
  • Why it matters: BigQuery storage & Maps calls are pay-as-you-go
Cloud Shell (repo root)
# Ctrl+C to stop adk web, then:
cd ~/mcp/examples/launchmybakery

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

# Deletes: mcp_bakery dataset,
#  the staging bucket, and the API key.
Google Cloud
Google Cloud Labs Module 4 • Wrap-Up • 00:59 – 01:02 (3 min) Google Developer Expert

Your Location-Intelligence Agent playbook

The four ideas to take with you

Everything today reduces to four moves you can reuse for any agent + any data.

1

Ground,
don't guess

An LLM alone hallucinates business facts. Ground it in your warehouse and live Maps data.

2

One agent,
many tools

A single ADK LlmAgent + MCP toolsets reasons across BigQuery AND Maps — no glue code.

3

Schema is
the prompt

get_table_info feeds column descriptions to the model. Documented data = smarter agent.

4

Govern by
default

Managed MCP servers bring IAM, audit logs, read-only SQL, and Model Armor. Ship with guardrails.

Google Cloud
Google Cloud Labs Module 4 • Wrap-Up • 01:02 – 01:04 (2 min) Google Developer Expert

Where to take this next

Tech Icon

Deploy the agent

Move off adk web: containerize and ship to Cloud Run or Agent Engine, with a service-account identity.

Tech Icon

More MCP servers

Live now: GCE & GKE. Rolling out: Spanner, AlloyDB, Cloud Run, Developer Knowledge — full list: google/mcp on GitHub.

Tech Icon

Your own data

Point the agent at YOUR dataset: write rich column descriptions, scope the instruction, start with execute_sql_readonly.

Google Cloud
Mission Complete 🎉

Build a Location Intelligence
ADK Agent with MCP servers
for BigQuery and Google Maps

You built it: one grounded agent over your data and the real world

Rabimba Karanjai • Google Developer Expert (AI/ML)
Google Cloud Layers
Fan Background
Google Developer Expert

Thank you!

Questions & live troubleshooting.
The codelab stays free — take it, fork it, teach it.

Codelab QR Codelab adk-mcp-bigquery-maps
LinkedIn QR Connect on LinkedIn in/rabimba-karanjai
GitHub QR Slides & Runbook GDE-ML-Artifacts
Google Cloud Labs Appendix • Reference • Reference Slide Google Developer Expert

Cheat sheet — every command from today

Setup

Run once per project

Prompt / Snippet
export PROJECT_ID=$(gcloud config get project)
git clone https://github.com/google/mcp.git
cd mcp/examples/launchmybakery
gcloud auth application-default login
./setup/setup_env.sh
./setup/setup_bigquery.sh
  • MCP endpoints: gcloud beta services mcp enable <svc>
  • Billing: required for BigQuery + Maps

Run & clean up

Each session

Prompt / Snippet
python3 -m venv .venv && source .venv/bin/activate
pip install "google-adk[mcp]"
cd adk_agent/
adk web --allow_origins \
  'regex:https://.*\.cloudshell\.dev'

# later, from the repo root:
cd ~/mcp/examples/launchmybakery
chmod +x cleanup/cleanup_env.sh
./cleanup/cleanup_env.sh
  • Token: re-login after ~60 min
  • Read-only: prefer execute_sql_readonly in prod
Google Cloud
🎤 SPEAKER NOTES & TALK SCRIPT Tip: P = Presenter Console | S = hide drawer | B = control bar
1 / 39
⏱️ Talk Clock: 00:00 / 75:00

All Workshop Slides — Click Any Slide to Jump