Tworzenie agenta AI Google Workspace za pomocą pakietu ADK i MCP

1. Wprowadzenie

Z tego ćwiczenia dowiesz się, jak utworzyć agenta AI wymagającego zaawansowanej wiedzy programistycznej za pomocą pakietu Agent Development Kit (ADK), który łączy się bezpośrednio z oficjalnymi serwerami MCP Google Workspace.

Model Context Protocol (MCP) to otwarty standard, który umożliwia modelom AI bezpieczne korzystanie z narzędzi udostępnianych przez serwery zdalne. ADK to profesjonalna platforma Google do tworzenia autonomicznych agentów. Łącząc je, możesz tworzyć wysoce spersonalizowane modele oparte na danych z Gmaila, Dysku Google, Kalendarza Google, Google Chat i Kontakty.

Pełną dokumentację dostępnych narzędzi i konfiguracji znajdziesz w artykule Konfigurowanie serwerów MCP Google Workspace.

Jakie zadania wykonasz

  • Włącz usługi Google Workspace MCP w projekcie Google Cloud.
  • Skonfiguruj zgodę OAuth i utwórz dane logowania zarówno do testów lokalnych, jak i do wdrożenia w środowisku produkcyjnym.
  • Utwórz lokalnego agenta ADK, który łączy się z 5 serwerami MCP Workspace za pomocą statycznych tokenów.
  • Tworzenie i wdrażanie agenta ADK gotowego do wdrożenia w środowisku produkcyjnym na platformie agentów Gemini Enterprise (GEAP), który korzysta z dynamicznego wstrzykiwania tokenów.
  • Rejestruj i testuj agenta niestandardowego natywnie w Gemini Enterprise.

Czego potrzebujesz

  • przeglądarka (np. Chrome);
  • Projekt Google Cloud z włączonymi płatnościami.
  • konto Google Workspace (z włączonymi inteligentnymi funkcjami);
  • Python 3.11 lub nowszy zainstalowany na komputerze lokalnym.
  • Zainstalowany i zainicjowany interfejs Google Cloud CLI (gcloud).

2. Zanim zaczniesz

Tworzenie lub wybieranie projektu Google Cloud

Opcja konsoli

W konsoli Google Cloud wybierz lub utwórz projekt w chmurze Google Cloud.

Opcja interfejsu wiersza poleceń

Utwórz nowy projekt i ustaw go jako aktywny:

gcloud projects create YOUR_PROJECT_ID
gcloud config set project YOUR_PROJECT_ID

Włączanie interfejsów API

Aby korzystać z serwerów MCP Google Workspace, musisz włączyć zarówno standardowe interfejsy Google Workspace API, jak i dedykowane usługi MCP.

Opcja konsoli

Aby włączyć je w przeglądarce, kliknij te przyciski:

Opcja interfejsu wiersza poleceń Uruchom te polecenia w terminalu:

# 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

Konfigurowanie aplikacji do obsługi czatu

Aby korzystać z serwera MCP Google Chat, musisz skonfigurować aplikację do obsługi Google Chat w projekcie Google Cloud.

  1. Otwórz Google Chat API > Zarządzaj > Konfiguracja.
  2. Skonfiguruj aplikację Google Chat:
    • Nazwa aplikacji: ADK Workspace Agent
    • Adres URL awatara: https://developers.google.com/chat/images/quickstart-app-avatar.png
    • Opis: MCP server connection for ADK Agent
    • W sekcji Funkcjonalność wyłącz opcję Włącz funkcje interaktywne.
    • W sekcji Logi wybierz Loguj błędy w usłudze Logging.
  3. Kliknij Zapisz.

3. Konfigurowanie zgody i klientów OAuth

Serwery MCP Google Workspace używają protokołu OAuth 2.0 do bezpiecznego uwierzytelniania. Musisz skonfigurować ekran zgody OAuth i utworzyć 2 osobne identyfikatory klienta: jeden na potrzeby lokalnego programowania, a drugi na potrzeby wdrożonego agenta.

  1. W konsoli Google Cloud kliknij Menu nawigacyjne (ikonę menu) w lewym górnym rogu. Wybierz Platforma uwierzytelniania Google > Branding (lub Interfejsy API i usługi > ekran zgody OAuth, jeśli nie widzisz Platformy uwierzytelniania Google).
  2. Skonfiguruj Informacje o aplikacji:
    • Nazwa aplikacji: Workspace ADK Agent
    • Adres e-mail dla użytkowników potrzebujących pomocy: wybierz swój adres e-mail.
  3. Skonfiguruj Odbiorców: kliknij Wewnętrzny.
  4. Skonfiguruj dane kontaktowe: wpisz adres e-mail, a następnie kliknij Utwórz.
  5. Kliknij Dostęp do danych > Dodaj lub usuń zakresy. W sekcji Ręczne dodawanie zakresów dodaj te zakresy, aby przyznać dostęp do wszystkich 5 usług:
    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. Kliknij kolejno Dodaj do tabeli, AktualizujZapisz.

Tworzenie identyfikatora klienta na potrzeby lokalnego programowania (aplikacja na komputer)

  1. W konsoli Google Cloud otwórz Platformę uwierzytelniania Google > Klienci (lub Interfejsy API i usługi > Dane logowania). Kliknij Utwórz dane logowania (lub Utwórz klienta) i wybierz Identyfikator klienta OAuth.
  2. Jako typ aplikacji wybierz Aplikacja na komputery.
  3. Nazwij go Workspace Agent Local.
  4. Kliknij Utwórz i pobierz plik JSON. Zapisz go lokalnie jako client_secret.json.

4. Tworzenie i testowanie agentów

W tej sekcji dowiesz się, jak utworzyć środowisko agenta. Do testowania użyjemy statycznego tokena, w przypadku którego pobierzemy token OAuth za pomocą gcloud i przekażemy go do McpToolset pakietu ADK. Możesz wykonać te czynności na maszynie lokalnej lub w Google Cloud Shell.

Aby skonfigurować środowisko programistyczne, wybierz środowisko: Komputer lokalny lub Google Cloud Shell. Obie metody będą używać wspólnego skryptu w Pythonie do uwierzytelniania, aby zapewnić spójność na różnych platformach.

1. Konfigurowanie katalogu środowiska

Aby utworzyć katalog projektu i zainstalować wymagane pakiety, wykonaj w terminalu te polecenia:

  • W przypadku Google Cloud Shell: najpierw kliknij ikonę Aktywuj Cloud Shell (>_) na pasku narzędzi w prawym górnym rogu konsoli Google Cloud.
  • Na komputerze lokalnym: otwórz standardowy terminal.
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. Przygotowywanie pliku z danymi logowania

Pobrany w poprzednim kroku plik client_secret.json musisz umieścić w katalogu głównym gws-adk-agent.

  • Komputer lokalny: przenieś lub skopiuj pobrany plik client_secret.json do katalogu gws-adk-agent.
  • Google Cloud Shell: utwórz plik, uruchamiając w Cloud Shell to polecenie (zastąp [PASTE_JSON_HERE] rzeczywistą treścią JSON):
cat << 'EOF' > client_secret.json
[PASTE_JSON_HERE]
EOF

3. Uwierzytelnianie i generowanie pliku .env (auth.py)

Aby spójnie obsługiwać uwierzytelnianie i uniknąć problemów z routingiem interfejsu CLI w poszczególnych środowiskach, używamy niestandardowego skryptu w języku Python opartego na oficjalnych bibliotekach uwierzytelniania Google. Ten skrypt zarządza przepływem OAuth, zapisuje lokalnie domyślne uwierzytelnianie aplikacji (ADC) i generuje wymagany plik .env.

Utwórz w katalogu gws-adk-agent plik o nazwie auth.py i dodaj ten kod:

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")

Uruchom skrypt w terminalu:

python3 auth.py

Tworzenie kodu agenta

Niezależnie od środowiska wybranego w poprzednim kroku kod agenta pozostaje dokładnie taki sam. Utwórz w wcześniej utworzonym podkatalogu workspace_agent plik o nazwie agent.py i dodaj do niego ten kod. Ten skrypt używa domyślnego uwierzytelniania aplikacji (ADC) do autoryzacji, automatycznie weryfikując i odświeżając dane logowania w pamięci za pomocą dynamicznego dostawcy nagłówków.

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]
)

Uruchamianie i testowanie agenta

Z agentem możesz wchodzić w interakcje za pomocą interaktywnego interfejsu internetowego lub bezpośrednio w terminalu/powłoce.

Opcja 1. Interaktywny interfejs internetowy

Jeśli korzystasz z urządzenia lokalnego:

  1. gws-adk-agent katalogu głównym projektu uruchom interfejs internetowy ADK:
    adk web
    
  2. Otwórz http://localhost:8000 w przeglądarce, aby porozmawiać z pracownikiem obsługi klienta.

Jeśli korzystasz z Google Cloud Shell:

  1. gws-adk-agent katalogu głównym projektu uruchom interfejs internetowy ADK, wymuszając użycie portu 8080:
    adk web --port 8080 --allow_origins=*
    
  2. Kliknij przycisk Podgląd w przeglądarce w prawym górnym rogu paska narzędzi Cloud Shell i wybierz Podejrzyj na porcie 8080, aby otworzyć interfejs w nowej karcie.

Opcja 2. Tryb interfejsu wiersza poleceń terminala (alternatywny)

Jeśli wolisz pozostać w terminalu lub nie chcesz konfigurować podglądu w przeglądarce, ADK udostępnia natywny interaktywny tryb czatu REPL.

W gws-adk-agent katalogu głównym projektu wykonaj to polecenie (działa ono tak samo na komputerze lokalnym i w Google Cloud Shell):

adk run workspace_agent

Otworzy się interaktywna sesja czatu bezpośrednio w powłoce:

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

Wypróbuj prompta

Niezależnie od wybranego interfejsu przetestuj agenta za pomocą zapytań korzystających z narzędzi MCP Workspace:

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

5. Wdrożenie produkcyjne

Aby wdrożyć agenta w środowisku produkcyjnym, nie możemy użyć zakodowanego na stałe tokena lokalnego. Zamiast tego używamy funkcji header_provider pakietu ADK, aby dynamicznie wyodrębniać token dostępu OAuth wstrzykiwany przez platformę Gemini Enterprise, gdy użytkownik wchodzi w interakcję z agentem.

Tworzenie kodu agenta produkcyjnego

Utwórz pakiet katalogu o nazwie enterprise_ai i utwórz w nim plik agent.py:

mkdir -p enterprise_ai

Wpisz w pliku enterprise_ai/agent.py tę treść:

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]
)

Wdrażanie w środowisku wykonawczym agentów GEAP

Wdróż agenta wymagającego pisania dużej ilości kodu za pomocą interfejsu ADK CLI:

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

Poczekaj na zakończenie wdrażania i skopiuj wygenerowaną nazwę zasobu silnika wnioskującego z danych wyjściowych terminala (np. projects/PROJECT_ID/locations/us-central1/reasoningEngines/ENGINE_ID).

6. Rejestracja w Gemini Enterprise

Teraz udostępniamy niestandardowego agenta ADK w Gemini Enterprise, aby użytkownicy mogli z nim czatować w sposób natywny.

Tworzenie identyfikatora klienta na potrzeby wersji produkcyjnej (aplikacja internetowa)

Aby wdrożyć agenta w środowisku produkcyjnym, musisz utworzyć identyfikator klienta aplikacji internetowej. W przeciwieństwie do klienta na komputer, który jest używany do testowania lokalnego, klient aplikacji internetowej umożliwia bezpieczny proces OAuth po stronie serwera. Dzięki temu hostowany agent w środowisku wykonawczym agenta GEAP może bezpiecznie odbierać tokeny uwierzytelniania użytkownika przekazywane przez Gemini Enterprise przy użyciu określonego identyfikatora URI przekierowania. Ta konfiguracja jest niezbędna, aby agent mógł bezpiecznie uzyskiwać dostęp do danych Google Workspace w imieniu użytkownika w środowisku produkcyjnym.

  1. W konsoli Google Cloud kliknij Menu nawigacyjne (ikonę menu) w lewym górnym rogu. Wybierz Platforma uwierzytelniania Google > Klienci (lub Interfejsy API i usługi > Dane logowania, jeśli Platforma uwierzytelniania Google nie jest widoczna). Kliknij Utwórz dane logowania (lub Utwórz klienta) i wybierz Identyfikator klienta OAuth.
  2. Jako typ aplikacji wybierz Aplikacja internetowa.
  3. Nazwij go Workspace Agent Production.
  4. W sekcji Autoryzowane identyfikatory URI przekierowania dodaj te identyfikatory URI:
    • Kliknij Dodaj identyfikator URI i wpisz https://vertexaisearch.cloud.google.com/oauth-redirect.
    • Ponownie kliknij Dodaj identyfikator URI i wpisz https://vertexaisearch.cloud.google.com/static/oauth/oauth.html.
  5. Kliknij Utwórz. W wyskakującym okienku „Utworzono klienta OAuth” (lub na liście Klienci) skopiuj Identyfikator klienta i Tajny klucz klienta. Będą one potrzebne podczas rejestrowania agenta w Gemini Enterprise.

Tworzenie aplikacji Gemini Enterprise

  1. W konsoli Google Cloud otwórz stronę Gemini Enterprise:

  1. Na karcie Gemini Enterprise kliknij Zarządzaj.
  2. Kliknij Utwórz aplikację.
  3. W sekcji Gemini Enterprise kliknij Utwórz.
  4. W polu Nazwa aplikacji wpisz nazwę aplikacji. Pod nią pojawi się identyfikator aplikacji.
  5. W polu Nazwa zewnętrzna Twojej firmy lub organizacji wpisz nazwę firmy lub organizacji. W tym samouczku możesz użyć nazwy Cymbal Bank.
  6. Jako lokalizację aplikacji wybierz lokalizację globalną (Cały świat).
  7. Kliknij Dalej.

Rejestrowanie agenta niestandardowego

  1. Otwórz konsolę Gemini Enterprise:

  1. Wybierz aktywną aplikację, kliknij Agenci, a potem + Dodaj agenta > Dodaj agenta niestandardowego za pomocą środowiska wykonawczego agenta.
  2. W sekcji Autoryzacje kliknij Dodaj autoryzację:
    • Nazwa autoryzacji: workspace-adk-auth (musi dokładnie odpowiadać wartości CLIENT_AUTH_NAME w kodzie Pythona)
    • Identyfikator klienta: wklej utworzony powyżej identyfikator klienta produkcyjnej aplikacji internetowej.
    • Tajny klucz klienta: wklej utworzony powyżej tajny klucz klienta produkcyjnej aplikacji internetowej.
    • Identyfikator URI tokena: https://oauth2.googleapis.com/token
    • Adres URI autoryzacji: utwórz adres URI, zastępując YOUR_CLIENT_ID identyfikatorem klienta skopiowanym w kroku 5 powyżej:
      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. Kliknij kolejno GotoweDalej.
  4. W sekcji Konfiguracja:
    • Nazwa agenta: Workspace Pro Agent
    • Opis:
      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.
      
    • Silnik rozumowania środowiska wykonawczego agenta: wklej nazwę zasobu silnika skopiowaną z danych wyjściowych adk deploy.
  5. Kliknij Utwórz.

Wypróbuj agenta w Gemini Enterprise

Z agentem możesz wchodzić w interakcje za pomocą wersji podglądowej konsoli Google Cloud (najszybszej dla deweloperów) lub aplikacji internetowej Gemini Enterprise (dla użytkowników).

Opcja 1. Podgląd konsoli Google Cloud

  1. W konsoli Google Cloud otwórz stronę Gemini Enterprise:

  1. W menu nawigacyjnym kliknij Aplikacje i wybierz aplikację, którą właśnie utworzono.
  2. W prawym górnym rogu kliknij Podgląd lub Otwórz podgląd.
  3. Na pasku wyszukiwania wpisz to zapytanie:
    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. Naciśnij Enter, aby przesłać zapytanie i wyświetlić wyniki bezpośrednio w konsoli.

Opcja 2. Aplikacja internetowa Gemini Enterprise

  1. Otwórz interfejs aplikacji internetowej Gemini Enterprise.
  2. Otwórz Menu ☰ > Agenci i w sekcji Z Twojej organizacji wybierz Agent Workspace Pro.
  3. Wpisz to samo zapytanie co w opcji podglądu w konsoli Google Cloud.
  4. Gdy pojawi się prośba, kliknij Autoryzuj, aby przejść proces uzyskiwania zgody użytkownika w ramach OAuth.
  5. Agent będzie płynnie wykonywać zadania w wielu usługach przy użyciu protokołu MCP.

7. Czyszczenie danych

Aby uniknąć niepotrzebnych opłat, zwalniaj miejsce w zasobach:

Opcja konsoli

Otwórz panel interfejsów API i usług, wybierz włączone usługi MCP (np. Kalendarz MCP, Gmail MCP) i kliknij Wyłącz interfejs API. Usuń identyfikatory klientów OAuth w sekcji Platforma uwierzytelniania Google > Klienci oraz usuń wdrożenie silnika wnioskowania z konsoli Gemini Enterprise.

Opcja interfejsu wiersza poleceń

Aby wyłączyć usługi MCP, wykonaj te polecenia w terminalu:

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

8. Gratulacje

Gratulacje! Udało Ci się utworzyć, przetestować i wdrożyć agenta AI ADK z kodem profesjonalnym, który jest połączony bezpośrednio z oficjalnymi serwerami MCP Google Workspace.

Czego się dowiedziałeś(-aś)

  • Jak włączyć usługi MCP Google Workspace w Google Cloud.
  • Jak obsługiwać dane logowania OAuth na potrzeby lokalnego testowania ADK przy użyciu statycznych nagłówków.
  • Jak wdrożyć dynamiczne wstrzykiwanie tokenów za pomocą header_provider w przypadku agentów produkcyjnych.
  • Jak wdrożyć agenta ADK w środowisku wykonawczym agentów GEAP i zarejestrować go w Gemini Enterprise.

Dokumentacja