Membangun Agen AI Google Workspace dengan ADK dan MCP

1. Pengantar

Dalam codelab ini, Anda akan mempelajari cara membangun agen AI pro-code menggunakan Agent Development Kit (ADK) yang terhubung langsung ke server MCP Google Workspace resmi.

Model Context Protocol (MCP) adalah standar terbuka yang memungkinkan model AI menggunakan alat yang disediakan oleh server jarak jauh secara aman. ADK adalah framework pro-code Google untuk membangun agen otonom. Dengan menggabungkannya, Anda dapat membuat agen yang sangat disesuaikan berdasarkan data Gmail, Google Drive, Google Kalender, Google Chat, dan Orang Anda.

Untuk mengetahui dokumentasi lengkap tentang alat dan konfigurasi yang tersedia, lihat Mengonfigurasi server MCP Google Workspace.

Yang akan Anda lakukan

  • Aktifkan layanan MCP Google Workspace di project Google Cloud Anda.
  • Konfigurasi izin OAuth dan buat kredensial untuk pengujian lokal dan deployment produksi.
  • Buat agen ADK lokal yang terhubung ke 5 server MCP Workspace menggunakan token statis.
  • Bangun dan deploy agen ADK siap produksi ke Runtime Agen Gemini Enterprise Agent Platform (GEAP) yang menggunakan injeksi token dinamis.
  • Daftarkan dan uji agen kustom Anda secara native dalam Gemini Enterprise.

Yang Anda butuhkan

  • Browser web (misalnya, Chrome).
  • Project Google Cloud yang mengaktifkan penagihan.
  • Akun Google Workspace (dengan fitur smart diaktifkan).
  • Python 3.11+ diinstal di komputer lokal Anda.
  • Google Cloud CLI (gcloud) telah diinstal dan diinisialisasi.

2. Sebelum memulai

Membuat atau Memilih project Google Cloud

Opsi Konsol

Di Konsol Google Cloud, pilih atau buat project Google Cloud.

Opsi CLI

Buat project baru dan tetapkan sebagai aktif:

gcloud projects create YOUR_PROJECT_ID
gcloud config set project YOUR_PROJECT_ID

Mengaktifkan API

Untuk menggunakan server MCP Google Workspace, Anda harus mengaktifkan API Google Workspace standar dan layanan MCP khusus.

Opsi Konsol

Klik tombol berikut untuk mengaktifkannya menggunakan browser web:

Opsi CLI Jalankan perintah terminal berikut:

# Enable standard GWS APIs
gcloud services enable chat.googleapis.com \
  drive.googleapis.com \
  calendar-json.googleapis.com \
  people.googleapis.com \
  gmail.googleapis.com
# Enable dedicated MCP services
gcloud services enable calendarmcp.googleapis.com \
  chatmcp.googleapis.com \
  drivemcp.googleapis.com \
  gmailmcp.googleapis.com

Mengonfigurasi Aplikasi Chat

Untuk menggunakan server MCP Google Chat, Anda harus mengonfigurasi aplikasi Chat di project Google Cloud Anda.

  1. Buka Google Chat API > Manage > Configuration.
  2. Siapkan aplikasi Chat:
    • Nama aplikasi: ADK Workspace Agent
    • URL Avatar: https://developers.google.com/chat/images/quickstart-app-avatar.png
    • Deskripsi: MCP server connection for ADK Agent
    • Di bagian Fungsionalitas, nonaktifkan Aktifkan fitur interaktif.
    • Di bagian Logs, pilih Log errors to Logging.
  3. Klik Simpan.

3. Mengonfigurasi Izin dan Klien OAuth

Server MCP Google Workspace menggunakan OAuth 2.0 untuk autentikasi yang aman. Anda harus mengonfigurasi layar izin OAuth dan membuat dua ID klien terpisah: satu untuk pengembangan lokal dan satu untuk agen yang di-deploy.

  1. Di konsol Google Cloud, klik Navigation menu (ikon hamburger) di pojok kiri atas. Pilih Google Auth Platform > Branding (atau APIs & Services > OAuth consent screen jika Google Auth Platform tidak terlihat).
  2. Konfigurasi Informasi Aplikasi:
    • Nama aplikasi: Workspace ADK Agent
    • Email dukungan pengguna: Pilih email Anda.
  3. Konfigurasi Audiens: Pilih Internal.
  4. Konfigurasi Contact Information: Masukkan alamat email Anda, lalu klik Create.
  5. Buka Akses Data > Tambahkan atau Hapus Cakupan. Di bagian Tambahkan cakupan secara manual, tambahkan cakupan berikut untuk memberikan akses ke semua 5 layanan:
    https://www.googleapis.com/auth/calendar.calendarlist.readonly
    https://www.googleapis.com/auth/calendar.events
    https://www.googleapis.com/auth/calendar.calendars
    https://www.googleapis.com/auth/chat.spaces
    https://www.googleapis.com/auth/chat.messages
    https://www.googleapis.com/auth/drive.readonly
    https://www.googleapis.com/auth/drive.file
    https://www.googleapis.com/auth/gmail.readonly
    https://www.googleapis.com/auth/gmail.compose
    https://www.googleapis.com/auth/gmail.send
    https://www.googleapis.com/auth/directory.readonly
    https://www.googleapis.com/auth/userinfo.profile
    https://www.googleapis.com/auth/contacts.readonly
    https://www.googleapis.com/auth/cloud-platform
    
  6. Klik Tambahkan ke Tabel, lalu Perbarui, dan terakhir Simpan.

Membuat Client ID untuk Pengembangan Lokal (Aplikasi Desktop)

  1. Di Konsol Google Cloud, buka Google Auth Platform > Clients (atau APIs & Services > Credentials). Klik Create Credentials (atau Create Client), lalu pilih OAuth client ID.
  2. Pilih Aplikasi desktop sebagai jenis aplikasi.
  3. Beri nama Workspace Agent Local.
  4. Klik Create dan download file JSON. Simpan secara lokal sebagai client_secret.json.

4. Pengembangan dan Pengujian Agen

Bagian ini menjelaskan cara membangun lingkungan agen. Kita akan menggunakan pendekatan token statis untuk pengujian, dengan mengambil token OAuth menggunakan gcloud dan meneruskannya ke McpToolset ADK. Anda dapat mengikuti langkah-langkah ini menggunakan Mesin Lokal atau Google Cloud Shell.

Pilih lingkungan Anda: Mesin Lokal atau Google Cloud Shell untuk menyiapkan lingkungan pengembangan Anda. Kedua metode akan menggunakan skrip Python bersama untuk autentikasi guna memastikan konsistensi di seluruh platform.

1. Menyiapkan Direktori Lingkungan

Jalankan perintah berikut di terminal Anda untuk membuat direktori project dan menginstal paket yang diperlukan.

  • Untuk Google Cloud Shell: Pertama, klik ikon Activate Cloud Shell (>_) di toolbar kanan atas Konsol Google Cloud.
  • Untuk Mesin Lokal: Buka terminal standar Anda.
mkdir -p gws-adk-agent/workspace_agent
cd gws-adk-agent
python3 -m venv .venv
source .venv/bin/activate
pip install google-adk poetry google-auth-oauthlib

2. Menyiapkan File Kredensial

Anda harus menempatkan file client_secret.json yang Anda download di langkah sebelumnya ke root direktori gws-adk-agent.

  • Komputer Lokal: Pindahkan atau salin file client_secret.json yang didownload ke direktori gws-adk-agent.
  • Google Cloud Shell: Buat file dengan menjalankan perintah berikut di Cloud Shell (ganti [PASTE_JSON_HERE] dengan konten JSON Anda):
cat << 'EOF' > client_secret.json
[PASTE_JSON_HERE]
EOF

3. Mengautentikasi dan Membuat .env (auth.py)

Untuk menangani autentikasi secara konsisten dan menghindari masalah perutean CLI khusus lingkungan, kami menggunakan skrip Python kustom yang didukung oleh library autentikasi Google resmi. Skrip ini mengelola alur OAuth, menyimpan Kredensial Default Aplikasi (ADC) secara lokal, dan membuat file .env yang diperlukan.

Buat file bernama auth.py di direktori gws-adk-agent, lalu tambahkan kode berikut:

import json
import os
from urllib.parse import urlparse, parse_qs
import google.auth
from google_auth_oauthlib.flow import InstalledAppFlow

CLIENT_SECRET_FILE = 'client_secret.json'

SCOPES = [
    "https://www.googleapis.com/auth/cloud-platform",
    "https://www.googleapis.com/auth/calendar",
    "https://www.googleapis.com/auth/chat.spaces.readonly",
    "https://www.googleapis.com/auth/chat.messages",
    "https://www.googleapis.com/auth/drive.readonly",
    "https://www.googleapis.com/auth/gmail.readonly",
    "https://www.googleapis.com/auth/gmail.compose",
    "https://www.googleapis.com/auth/directory.readonly",
    "https://www.googleapis.com/auth/contacts.readonly"
]

# Initialize the flow from the client secrets JSON
flow = InstalledAppFlow.from_client_secrets_file(
    CLIENT_SECRET_FILE,
    scopes=SCOPES,
    redirect_uri='http://localhost:8085/'
)

# Generate the Auth URL
auth_url, expected_state = flow.authorization_url(prompt='consent', access_type='offline')

print("\n=== GOOGLE OAUTH OFFICIAL LIBRARY FLOW ===")
print("1. Copy the following link and paste it into your browser (or click it if supported):\n")
print(auth_url)
print("\n2. Authorize the application.")
print("3. Your browser will redirect to a 'localhost' page (it will show a 'Site can't be reached' error, which is EXPECTED and normal).")
print("4. Copy the ENTIRE URL from your browser's address bar (including the http://localhost:8085/ part).\n")

# Get the redirected URL from the user
redirected_url = input("Paste the full localhost URL here: ").strip()

# Exchange the redirect URL for tokens
print("\nExchanging code for tokens...")
try:
    parsed_url = urlparse(redirected_url)
    query_params = parse_qs(parsed_url.query)
    
    returned_state = query_params.get('state', [None])[0]
    code = query_params.get('code', [None])[0]
    
    if not code:
        raise ValueError("No 'code' parameter found in the URL.")
    if returned_state != expected_state:
        raise ValueError("CSRF Warning! State mismatch.")
        
    flow.fetch_token(code=code)
    creds = flow.credentials
except Exception as e:
    print(f"Authentication failed: {e}")
    exit(1)

if not creds.refresh_token:
    print("\nError: No refresh token returned. You may need to revoke access and try again.")
    exit(1)

# Save Application Default Credentials
adc_data = {
    "client_id": creds.client_id,
    "client_secret": creds.client_secret,
    "refresh_token": creds.refresh_token,
    "type": "authorized_user"
}

adc_dir = os.path.expanduser("~/.config/gcloud")
os.makedirs(adc_dir, exist_ok=True)
adc_path = os.path.join(adc_dir, "application_default_credentials.json")

with open(adc_path, "w") as f:
    json.dump(adc_data, f, indent=2)

# Detect Project ID
try:
    _, project_id = google.auth.default()
except Exception:
    project_id = None

project_id = project_id or os.environ.get("GOOGLE_CLOUD_PROJECT", "YOUR_PROJECT_ID")

# Save to .env for local development (relative to project root)
env_dir = "workspace_agent"
os.makedirs(env_dir, exist_ok=True)
env_path = os.path.join(env_dir, ".env")

with open(env_path, "w") as f:
    f.write("GOOGLE_GENAI_USE_VERTEXAI=1\n")
    f.write(f"GOOGLE_CLOUD_PROJECT={project_id}\n")
    f.write("GOOGLE_CLOUD_LOCATION=us-central1\n")

print(f"\nSuccess! Application Default Credentials saved to: {adc_path}")
print(f"Environment variables saved to: {env_path}")
if project_id == "YOUR_PROJECT_ID":
    print("NOTE: Could not automatically detect Project ID. Please update it manually in .env")

Jalankan skrip di terminal Anda:

python3 auth.py

Buat Kode Agen

Terlepas dari lingkungan yang Anda pilih pada langkah sebelumnya, kode agen akan tetap sama. Buat file bernama agent.py di dalam subdirektori workspace_agent yang telah dibuat sebelumnya, lalu tambahkan kode berikut. Skrip ini menggunakan Kredensial Default Aplikasi (ADC) untuk memberikan otorisasi, yang secara otomatis memvalidasi dan memperbarui kredensial hanya dalam memori melalui penyedia header dinamis.

import datetime
import google.auth
from google.auth.transport.requests import Request
from google.adk.agents.llm_agent import LlmAgent
from google.adk.tools.mcp_tool.mcp_toolset import McpToolset
from google.adk.tools.mcp_tool.mcp_session_manager import StreamableHTTPConnectionParams

MODEL = "gemini-2.5-flash"

# Load credentials from Application Default Credentials (ADC) saved by auth.py
creds, _ = google.auth.default()

# 1. STARTUP SAFETY: Ensure valid token at import time for static tool discovery (e.g. adk web UI load)
if not creds.valid:
    creds.refresh(Request())
    print("\n[Agent Startup] Access token refreshed from ADC.")

def auth_header_provider(tool_context=None) -> dict[str, str]:
    """2. RUNTIME SAFETY: Dynamically provides auth headers, refreshing if expired during the session."""
    if not creds.valid:
        creds.refresh(Request())
        print("\n[Agent Runtime] Access token refreshed from ADC.")
    return {"Authorization": f"Bearer {creds.token}"}

# Initialize the 5 GWS MCP servers with combined startup headers and dynamic runtime provider
calendar_mcp = McpToolset(
    connection_params=StreamableHTTPConnectionParams(
        url="https://calendarmcp.googleapis.com/mcp/v1",
        headers={"Authorization": f"Bearer {creds.token}"}
    ),
    header_provider=auth_header_provider
)
chat_mcp = McpToolset(
    connection_params=StreamableHTTPConnectionParams(
        url="https://chatmcp.googleapis.com/mcp/v1",
        headers={"Authorization": f"Bearer {creds.token}"}
    ),
    header_provider=auth_header_provider
)
drive_mcp = McpToolset(
    connection_params=StreamableHTTPConnectionParams(
        url="https://drivemcp.googleapis.com/mcp/v1",
        headers={"Authorization": f"Bearer {creds.token}"}
    ),
    header_provider=auth_header_provider
)
gmail_mcp = McpToolset(
    connection_params=StreamableHTTPConnectionParams(
        url="https://gmailmcp.googleapis.com/mcp/v1",
        headers={"Authorization": f"Bearer {creds.token}"}
    ),
    header_provider=auth_header_provider
)
people_mcp = McpToolset(
    connection_params=StreamableHTTPConnectionParams(
        url="https://people.googleapis.com/mcp/v1",
        headers={"Authorization": f"Bearer {creds.token}"}
    ),
    header_provider=auth_header_provider
)

current_date = datetime.datetime.now().strftime("%Y-%m-%d")

# Define the agent and attach all 5 toolsets
root_agent = LlmAgent(
    model=MODEL,
    name='gws_adk_agent',
    instruction=f"""You are a helpful assistant grounded in the user's Google Workspace data.
    Today's current date is {current_date}. Always calculate relative dates (like 'this week' or 'upcoming meetings') using this reference.
    Use the provided MCP tools to answer questions about their Calendar, Chat, Drive, Gmail, and Contacts.""",
    tools=[calendar_mcp, chat_mcp, drive_mcp, gmail_mcp, people_mcp]
)

Menjalankan dan Menguji Agen Anda

Anda dapat berinteraksi dengan agen menggunakan UI Web interaktif atau langsung di dalam Terminal/Shell.

Opsi 1: UI Web Interaktif

Jika Anda menggunakan Mesin Lokal:

  1. Dari direktori root project gws-adk-agent, mulai antarmuka web ADK:
    adk web
    
  2. Buka http://localhost:8000 di browser Anda untuk memulai percakapan dengan agen.

Jika Anda berada di Google Cloud Shell:

  1. Dari direktori root project gws-adk-agent, mulai antarmuka web ADK dengan secara eksplisit menerapkan port 8080:
    adk web --port 8080 --allow_origins=*
    
  2. Klik tombol Web Preview di kanan atas toolbar Cloud Shell, lalu pilih Preview on port 8080 untuk membuka antarmuka di tab baru.

Opsi 2: Mode CLI Terminal (Alternatif)

Jika Anda lebih suka tetap berada di terminal atau ingin menghindari penyiapan pratinjau browser web, ADK menyediakan mode chat REPL interaktif native.

Dari direktori root project gws-adk-agent, jalankan perintah berikut (perintah ini berfungsi sama di Komputer Lokal dan Google Cloud Shell):

adk run workspace_agent

Anda akan langsung masuk ke sesi chat interaktif di shell Anda:

Running agent gws_adk_agent, type exit to exit.
[user]: 

Mencoba Memberi Perintah kepada Agen Anda

Terlepas dari antarmuka yang Anda pilih, coba uji agen dengan kueri yang memanfaatkan alat MCP Workspace:

  • What are my upcoming meetings this week?
    
  • Summarize the last 3 unread emails in my Gmail.
    

5. Deployment Produksi

Untuk men-deploy agen ke produksi, kita tidak dapat menggunakan token lokal hardcode. Sebagai gantinya, kita menggunakan header_provider ADK untuk mengekstrak token akses OAuth yang disuntikkan secara dinamis oleh platform Gemini Enterprise saat pengguna berinteraksi dengan agen.

Buat Kode Agen Produksi

Buat paket direktori bernama enterprise_ai dan buat file agent.py di dalamnya:

mkdir -p enterprise_ai

Tulis konten berikut ke enterprise_ai/agent.py:

import datetime
import os
import re
from google.adk.agents.llm_agent import LlmAgent
from google.adk.tools.mcp_tool.mcp_toolset import McpToolset
from google.adk.tools.mcp_tool.mcp_session_manager import StreamableHTTPConnectionParams
from google.adk.tools.tool_context import ToolContext

MODEL = "gemini-2.5-flash"
# This name MUST match the Authorization Name used during Gemini Enterprise registration
CLIENT_AUTH_NAME = "workspace-adk-auth"

def _get_access_token_from_context(tool_context: ToolContext) -> str:
    """Dynamically parses the user bearer token injected into the ToolContext state."""
    escaped_name = re.escape(CLIENT_AUTH_NAME)
    pattern = re.compile(fr"^{escaped_name}_\d+$")
    state_dict = tool_context.state.to_dict() if hasattr(tool_context.state, 'to_dict') else tool_context.state
    matching_keys = [k for k in state_dict.keys() if pattern.match(k)]
    if matching_keys:
        return state_dict.get(matching_keys[0])
    raise Exception(f"No bearer token found in ToolContext state matching pattern {pattern.pattern}")

def auth_header_provider(tool_context: ToolContext) -> dict[str, str]:
    """Provides the dynamic Authorization header for MCP requests."""
    token = _get_access_token_from_context(tool_context)
    return {"Authorization": f"Bearer {token}"}

# Initialize toolsets using the dynamic header_provider
calendar_mcp = McpToolset(
    connection_params=StreamableHTTPConnectionParams(url="https://calendarmcp.googleapis.com/mcp/v1"),
    header_provider=auth_header_provider
)
chat_mcp = McpToolset(
    connection_params=StreamableHTTPConnectionParams(url="https://chatmcp.googleapis.com/mcp/v1"),
    header_provider=auth_header_provider
)
drive_mcp = McpToolset(
    connection_params=StreamableHTTPConnectionParams(url="https://drivemcp.googleapis.com/mcp/v1"),
    header_provider=auth_header_provider
)
gmail_mcp = McpToolset(
    connection_params=StreamableHTTPConnectionParams(url="https://gmailmcp.googleapis.com/mcp/v1"),
    header_provider=auth_header_provider
)
people_mcp = McpToolset(
    connection_params=StreamableHTTPConnectionParams(url="https://people.googleapis.com/mcp/v1"),
    header_provider=auth_header_provider
)

current_date = datetime.datetime.now().strftime("%Y-%m-%d")

root_agent = LlmAgent(
    model=MODEL,
    name='enterprise_ai',
    instruction=f"""You are an enterprise assistant grounded securely in the user's Workspace data.
    Today's current date is {current_date}. Always calculate relative dates (like 'this week' or 'upcoming meetings') using this reference.
    Always use the provided MCP tools to fetch context from Calendar, Chat, Drive, Gmail, and People.""",
    tools=[calendar_mcp, chat_mcp, drive_mcp, gmail_mcp, people_mcp]
)

Men-deploy ke GEAP Agent Runtime

Deploy agen pro-code Anda menggunakan ADK CLI:

adk deploy agent_engine \
  --project=$(gcloud config get-value project) \
  --region=us-central1 \
  --display_name="Workspace ADK Agent" \
  enterprise_ai

Tunggu hingga deployment selesai dan salin nama resource Reasoning Engine yang dihasilkan dari output terminal (misalnya, projects/PROJECT_ID/locations/us-central1/reasoningEngines/ENGINE_ID).

6. Mendaftar di Gemini Enterprise

Sekarang, kita akan memasukkan agen ADK kustom ke Gemini Enterprise sehingga pengguna dapat melakukan chat dengan agen tersebut secara native.

Membuat Client ID untuk Produksi (Aplikasi Web)

Untuk men-deploy agen ke produksi, Anda harus membuat client ID Aplikasi web. Tidak seperti klien desktop yang digunakan untuk pengujian lokal, klien aplikasi web memungkinkan alur OAuth sisi server yang aman. Hal ini memungkinkan agen yang dihosting di GEAP Agent Runtime menerima token autentikasi pengguna yang diteruskan oleh Gemini Enterprise secara aman, menggunakan URI pengalihan yang ditentukan. Penyiapan ini diperlukan agar agen dapat mengakses data Google Workspace dengan aman atas nama pengguna di lingkungan produksi.

  1. Di konsol Google Cloud, klik Navigation menu (ikon hamburger) di pojok kiri atas. Pilih Google Auth Platform > Clients (atau APIs & Services > Credentials jika Google Auth Platform tidak terlihat). Klik Create Credentials (atau Create Client), lalu pilih OAuth client ID.
  2. Pilih Web application sebagai jenis aplikasi.
  3. Beri nama Workspace Agent Production.
  4. Di bagian URI pengalihan yang sah, tambahkan URI berikut:
    • Klik Tambahkan URI, lalu masukkan https://vertexaisearch.cloud.google.com/oauth-redirect.
    • Klik Tambahkan URI lagi, lalu masukkan https://vertexaisearch.cloud.google.com/static/oauth/oauth.html.
  5. Klik Buat. Di pop-up "OAuth client created" (atau dari daftar Clients), salin Client ID dan Client Secret. Anda akan memerlukan ID ini saat mendaftarkan agen di Gemini Enterprise.

Membuat Aplikasi Gemini Enterprise

  1. Di konsol Google Cloud, buka halaman Gemini Enterprise:

  1. Di bagian kartu Gemini Enterprise, klik Kelola.
  2. Klik Buat aplikasi.
  3. Di bagian Gemini Enterprise, klik Buat.
  4. Di kolom Your app name, masukkan nama untuk aplikasi Anda. ID aplikasi akan muncul di bawah nama aplikasi.
  5. Di kolom External name of your company or organization, masukkan nama perusahaan atau organisasi. Untuk tutorial ini, Anda dapat menggunakan Cymbal Bank.
  6. Pilih global (Global) sebagai lokasi untuk aplikasi Anda.
  7. Klik Lanjutkan.

Mendaftarkan Agen Kustom

  1. Buka konsol Gemini Enterprise:

  1. Pilih aplikasi aktif Anda, buka Agents, lalu klik + Add agent > Add Custom agent via Agent Runtime.
  2. Di bagian Authorizations, klik Add authorization:
    • Nama otorisasi: workspace-adk-auth (Harus sama persis dengan CLIENT_AUTH_NAME dalam kode Python Anda)
    • Client ID: Tempelkan Client ID Aplikasi Web Produksi yang dibuat di atas.
    • Rahasia klien: Tempelkan Rahasia Klien Aplikasi Web Produksi yang dibuat di atas.
    • URI Token: https://oauth2.googleapis.com/token
    • URI Otorisasi: Buat URI dengan mengganti YOUR_CLIENT_ID dengan Client ID yang Anda salin pada langkah 5 di atas:
      https://accounts.google.com/o/oauth2/v2/auth?client_id=YOUR_CLIENT_ID&redirect_uri=https%3A%2F%2Fvertexaisearch.cloud.google.com%2Fstatic%2Foauth%2Foauth.html&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcalendar.readonly%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcalendar.calendars%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcalendar.events%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fgmail.send%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fgmail.readonly%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fchat.spaces%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fchat.messages%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.readonly%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.file%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdirectory.readonly&include_granted_scopes=true&response_type=code&access_type=offline&prompt=consent
      
  3. Klik Selesai, lalu klik Berikutnya.
  4. Di bagian Konfigurasi:
    • Nama agen: Workspace Pro Agent
    • Deskripsi:
      Use this agent to answer questions about your Google Workspace data, including Gmail, Google Drive, Google Calendar, Google Chat, and Contacts. It can find files, summarize emails, check your schedule, and look up contact information.
      
    • Agent Runtime reasoning engine: Tempel nama resource mesin inferensi yang Anda salin dari output adk deploy.
  5. Klik Buat.

Mencoba Agen di Gemini Enterprise

Anda dapat berinteraksi dengan agen menggunakan Pratinjau Konsol Google Cloud (tercepat untuk developer) atau Aplikasi Web Gemini Enterprise (pengalaman pengguna akhir).

Opsi 1: Pratinjau Konsol Google Cloud

  1. Di konsol Google Cloud, buka halaman Gemini Enterprise:

  1. Di menu navigasi, klik Aplikasi, lalu pilih aplikasi yang baru saja Anda buat.
  2. Klik Pratinjau atau klik Buka pratinjau di kanan atas.
  3. Di kotak penelusuran, masukkan kueri berikut:
    Search for files in Drive related to 'Project Milestone', summarize them, and tell me if I have any meetings with the project owner today.
    
  4. Tekan Enter untuk mengirimkan kueri dan melihat hasilnya langsung di konsol.

Opsi 2: Aplikasi Web Gemini Enterprise

  1. Buka antarmuka Aplikasi Web Gemini Enterprise Anda.
  2. Buka Menu ☰ > Agents, lalu pilih Workspace Pro Agent di bagian From your organization.
  3. Ketik kueri yang sama seperti di opsi Pratinjau Konsol Google Cloud.
  4. Klik Authorize saat diminta untuk melalui alur izin pengguna OAuth.
  5. Agen akan menjalankan tugas dengan lancar di beberapa layanan menggunakan protokol MCP.

7. Pembersihan

Untuk menghindari tagihan yang tidak perlu, bersihkan resource Anda:

Opsi Konsol

Buka API & Services Dashboard, pilih layanan MCP yang Anda aktifkan (misalnya, Calendar MCP, Gmail MCP), lalu klik Disable API. Hapus ID Klien OAuth di bagian Google Auth Platform > Clients, dan hapus deployment Reasoning Engine dari Gemini Enterprise Console.

Opsi CLI

Jalankan perintah terminal berikut untuk menonaktifkan layanan MCP:

# Disable Workspace MCP services
gcloud services disable calendarmcp.googleapis.com \
  chatmcp.googleapis.com \
  drivemcp.googleapis.com \
  gmailmcp.googleapis.com

8. Selamat

Selamat! Anda telah berhasil membuat, menguji, dan men-deploy agen AI ADK kode profesional yang terhubung langsung ke server MCP Google Workspace resmi.

Yang telah Anda pelajari

  • Cara mengaktifkan layanan MCP Google Workspace di Google Cloud.
  • Cara menangani kredensial OAuth untuk pengujian ADK lokal menggunakan header statis.
  • Cara menerapkan injeksi token dinamis menggunakan header_provider untuk agen produksi.
  • Cara men-deploy agen ADK ke GEAP Agent Runtime dan mendaftarkannya di Gemini Enterprise.

Dokumen referensi