Crea un agente de IA de Google Workspace con ADK y MCP

1. Introducción

En este codelab, aprenderás a crear un agente de IA de código avanzado con el Kit de desarrollo de agentes (ADK) que se conecta directamente a los servidores MCP de Google Workspace oficiales.

El Protocolo de contexto del modelo (MCP) es un estándar abierto que permite que los modelos de IA usen de forma segura las herramientas que proporcionan los servidores remotos. El ADK es el framework de código profesional de Google para crear agentes autónomos. Si los combinas, puedes crear agentes altamente personalizados basados en tus datos de Gmail, Google Drive, Calendario de Google, Google Chat y Personas.

Para obtener la documentación completa sobre las herramientas disponibles y la configuración, consulta Configura servidores de MCP de Google Workspace.

Actividades

  • Habilita los servicios de MCP de Google Workspace en tu proyecto de Google Cloud.
  • Configura el consentimiento de OAuth y crea credenciales para las pruebas locales y la implementación en producción.
  • Compila un agente del ADK local que se conecte a los 5 servidores MCP de Workspace con tokens estáticos.
  • Crea e implementa un agente de ADK listo para producción en el entorno de ejecución de agentes de Gemini Enterprise Agent Platform (GEAP) que use la inserción dinámica de tokens.
  • Registra y prueba tu agente personalizado de forma nativa en Gemini Enterprise.

Requisitos

  • Un navegador web (p. ej., Chrome)
  • Un proyecto de Google Cloud con facturación habilitada.
  • Una cuenta de Google Workspace (con las funciones inteligentes activadas)
  • Python 3.11 o versiones posteriores instalado en tu máquina local
  • Google Cloud CLI (gcloud) instalada e inicializada.

2. Antes de comenzar

Crea o selecciona un proyecto de Google Cloud

Opción de la consola

En la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

Opción de CLI

Crea un proyecto nuevo y configúralo como activo:

gcloud projects create YOUR_PROJECT_ID
gcloud config set project YOUR_PROJECT_ID

Habilita las APIs

Para usar los servidores MCP de Google Workspace, debes habilitar las APIs estándar de Google Workspace y los servicios MCP dedicados.

Opción de la consola

Haz clic en los siguientes botones para habilitarlas con el navegador web:

Opción de CLI Ejecuta estos comandos de terminal:

# 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

Configura la app de Chat

Para usar el servidor de MCP de Google Chat, debes configurar una app de Chat en tu proyecto de Google Cloud.

  1. Ve a API de Google Chat > Administrar > Configuración.
  2. Configura la app de Chat:
    • Nombre de la app: ADK Workspace Agent
    • URL del avatar: https://developers.google.com/chat/images/quickstart-app-avatar.png
    • Descripción: MCP server connection for ADK Agent
    • En Funcionalidad, desactiva Habilitar funciones interactivas.
    • En Registros, selecciona Registrar errores en Logging.
  3. Haz clic en Guardar.

3. Configura el consentimiento y los clientes de OAuth

Los servidores del MCP de Google Workspace usan OAuth 2.0 para la autenticación segura. Debes configurar la pantalla de consentimiento de OAuth y crear dos IDs de cliente independientes: uno para el desarrollo local y otro para el agente implementado.

  1. En la consola de Google Cloud, haz clic en el menú de navegación (ícono de hamburguesa) en la esquina superior izquierda. Selecciona Google Auth Platform > Branding (o APIs & Services > pantalla de consentimiento de OAuth si no se ve Google Auth Platform).
  2. Configura la información de la app:
    • Nombre de la app: Workspace ADK Agent
    • Correo electrónico de asistencia del usuario: Selecciona tu correo electrónico.
  3. Configura Público: Selecciona Interno.
  4. Configura la Información de contacto: Ingresa tu dirección de correo electrónico y, luego, haz clic en Crear.
  5. Ve a Acceso a datos > Agregar o quitar permisos. En Agregar permisos manualmente, agrega los siguientes permisos para otorgar acceso a los 5 servicios:
    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. Haz clic en Agregar a la tabla, luego en Actualizar y, por último, en Guardar.

Crea un ID de cliente para el desarrollo local (app de escritorio)

  1. En la consola de Google Cloud, navega a Google Auth Platform > Clients (o APIs & Services > Credentials). Haz clic en Crear credenciales (o Crear cliente) y selecciona ID de cliente de OAuth.
  2. Selecciona App de escritorio como el tipo de aplicación.
  3. Asígnale el nombre Workspace Agent Local.
  4. Haz clic en Crear y descarga el archivo JSON. Guárdalo de forma local como client_secret.json.

4. Desarrollo y pruebas de agentes

En esta sección, se describe cómo compilar el entorno del agente. Usaremos un enfoque de token estático para las pruebas, en el que recuperaremos un token de OAuth con gcloud y lo pasaremos a McpToolset del ADK. Puedes seguir estos pasos con tu máquina local o Google Cloud Shell.

Elige tu entorno: Máquina local o Google Cloud Shell para configurar tu entorno de desarrollo. Ambos métodos usarán una secuencia de comandos de Python compartida para la autenticación, lo que garantizará la coherencia en todas las plataformas.

1. Configura el directorio del entorno

Ejecuta los siguientes comandos en la terminal para crear un directorio de proyecto y, luego, instalar los paquetes requeridos.

  • Para Google Cloud Shell: Primero, haz clic en el ícono de Activar Cloud Shell (>_) en la barra de herramientas de la parte superior derecha de la consola de Google Cloud.
  • Para la máquina local: Abre tu terminal estándar.
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. Prepara el archivo de credenciales

Debes colocar el archivo client_secret.json que descargaste en el paso anterior en la raíz del directorio gws-adk-agent.

  • Máquina local: Mueve o copia el archivo client_secret.json descargado en el directorio gws-adk-agent.
  • Google Cloud Shell: Para crear el archivo, ejecuta el siguiente comando en Cloud Shell (reemplaza [PASTE_JSON_HERE] por el contenido JSON real):
cat << 'EOF' > client_secret.json
[PASTE_JSON_HERE]
EOF

3. Autenticación y generación de .env (auth.py)

Para controlar la autenticación de manera coherente y evitar problemas de enrutamiento de la CLI específicos del entorno, usamos una secuencia de comandos personalizada de Python que se basa en las bibliotecas de autenticación oficiales de Google. Esta secuencia de comandos administra el flujo de OAuth, guarda las credenciales predeterminadas de la aplicación (ADC) de forma local y genera el archivo .env requerido.

Crea un archivo llamado auth.py en el directorio gws-adk-agent y agrega el siguiente código:

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

Ejecuta la secuencia de comandos en tu terminal:

python3 auth.py

Crea el código del agente

Independientemente del entorno que hayas elegido en el paso anterior, el código del agente sigue siendo exactamente el mismo. Crea un archivo llamado agent.py dentro del subdirectorio workspace_agent que creaste previamente y agrega el siguiente código. Esta secuencia de comandos usa credenciales predeterminadas de la aplicación (ADC) para proporcionar autorización, validar y actualizar automáticamente las credenciales solo en la memoria a través de un proveedor de encabezado dinámico.

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

Ejecuta y prueba tu agente

Puedes interactuar con tu agente a través de la IU web interactiva o directamente en tu terminal o shell.

Opción 1: IU web interactiva

Si estás en una máquina local, haz lo siguiente:

  1. Desde el directorio raíz de tu proyecto gws-adk-agent, inicia la interfaz web del ADK:
    adk web
    
  2. Abre http://localhost:8000 en tu navegador para chatear con tu agente.

Si estás en Google Cloud Shell, haz lo siguiente:

  1. Desde el directorio raíz del proyecto gws-adk-agent, inicia la interfaz web del ADK y aplica el puerto 8080 de forma explícita:
    adk web --port 8080 --allow_origins=*
    
  2. Haz clic en el botón Vista previa en la Web en la parte superior derecha de la barra de herramientas de Cloud Shell y selecciona Vista previa en el puerto 8080 para abrir la interfaz en una pestaña nueva.

Opción 2: Modo de CLI de la terminal (alternativa)

Si prefieres permanecer en la terminal o evitar configurar vistas previas del navegador web, el ADK proporciona un modo de chat REPL interactivo nativo.

Desde el directorio raíz de tu proyecto gws-adk-agent, ejecuta el siguiente comando (funciona de la misma manera en una máquina local y en Google Cloud Shell):

adk run workspace_agent

Ingresarás a una sesión de chat interactiva directamente en tu shell:

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

Cómo probar las instrucciones de tu agente

Independientemente de la interfaz que elijas, intenta probar el agente con preguntas que aprovechen las herramientas de MCP de Workspace:

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

5. Implementación de producción

Para implementar el agente en producción, no podemos usar un token local codificado. En su lugar, usamos header_provider del ADK para extraer de forma dinámica el token de acceso de OAuth que inyecta la plataforma de Gemini Enterprise cuando un usuario interactúa con el agente.

Crea el código del agente de producción

Crea un paquete de directorio llamado enterprise_ai y un archivo agent.py dentro de él:

mkdir -p enterprise_ai

Escribe el siguiente contenido en 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]
)

Implementa en el entorno de ejecución de agentes de GEAP

Implementa tu agente con código profesional usando la CLI del ADK:

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

Espera a que finalice la implementación y copia el nombre del recurso de Reasoning Engine generado del resultado de la terminal (p.ej., projects/PROJECT_ID/locations/us-central1/reasoningEngines/ENGINE_ID).

6. Regístrate en Gemini Enterprise

Ahora, incorporamos el agente del ADK personalizado a Gemini Enterprise para que los usuarios puedan chatear con él de forma nativa.

Crea un ID de cliente para producción (aplicación web)

Para implementar tu agente en producción, debes crear un ID de cliente de aplicación web. A diferencia del cliente de escritorio que se usa para las pruebas locales, un cliente de aplicación web habilita un flujo de OAuth seguro del lado del servidor. Esto permite que el agente alojado en el entorno de ejecución del agente de GEAP reciba de forma segura los tokens de autenticación del usuario que reenvía Gemini Enterprise, con el URI de redireccionamiento especificado. Esta configuración es necesaria para que el agente acceda de forma segura a los datos de Google Workspace en nombre del usuario en un entorno de producción.

  1. En la consola de Google Cloud, haz clic en el menú de navegación (ícono de hamburguesa) en la esquina superior izquierda. Selecciona Google Auth Platform > Clients (o APIs & Services > Credentials si no se ve Google Auth Platform). Haz clic en Crear credenciales (o Crear cliente) y selecciona ID de cliente de OAuth.
  2. Selecciona Aplicación web como el tipo de aplicación.
  3. Asígnale el nombre Workspace Agent Production.
  4. En la sección URI de redireccionamiento autorizados, agrega los siguientes URI:
    • Haz clic en Agregar URI y, luego, ingresa https://vertexaisearch.cloud.google.com/oauth-redirect.
    • Vuelve a hacer clic en Agregar URI y, luego, ingresa https://vertexaisearch.cloud.google.com/static/oauth/oauth.html.
  5. Haz clic en Crear. En la ventana emergente "Se creó el cliente de OAuth" (o en la lista Clientes), copia el ID de cliente y el secreto del cliente. Los necesitarás cuando registres el agente en Gemini Enterprise.

Crea una app de Gemini Enterprise

  1. En la consola de Google Cloud, ve a la página Gemini Enterprise:

  1. En la tarjeta Gemini Enterprise, haz clic en Administrar.
  2. Haz clic en Crear aplicación.
  3. En la sección Gemini Enterprise, haz clic en Crear.
  4. En el campo Nombre de tu app ingresa un nombre para ella. El ID de la app aparece debajo del nombre de la app.
  5. En el campo Nombre externo de tu organización o empresa, ingresa el nombre de la organización o empresa. Para este instructivo, puedes usar Cymbal Bank.
  6. Selecciona global (Global) como la ubicación de tu app.
  7. Haz clic en Continuar.

Registra el agente personalizado

  1. Abre la consola de Gemini Enterprise:

  1. Selecciona tu app activa, navega a Agents y haz clic en + Add agent > Add Custom agent via Agent Runtime.
  2. En la sección Autorizaciones, haz clic en Agregar autorización:
    • Nombre de autorización: workspace-adk-auth (debe coincidir exactamente con CLIENT_AUTH_NAME en tu código de Python)
    • ID de cliente: Pega el ID de cliente de la aplicación web de producción que creaste anteriormente.
    • Secreto de cliente: Pega el secreto de cliente de la aplicación web de producción que creaste anteriormente.
    • URI del token: https://oauth2.googleapis.com/token
    • URI de autorización: Construye el URI reemplazando YOUR_CLIENT_ID por el ID de cliente que copiaste en el paso 5 anterior:
      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. Haz clic en Listo y, luego, en Siguiente.
  4. En la sección Configuración, haz lo siguiente:
    • Nombre del agente: Workspace Pro Agent
    • Descripción:
      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: Pega el nombre del recurso del motor que copiaste del resultado de adk deploy.
  5. Haz clic en Crear.

Prueba el agente en Gemini Enterprise

Puedes interactuar con tu agente a través de la consola de Google Cloud (versión preliminar) (la más rápida para los desarrolladores) o la app web de Gemini Enterprise (experiencia del usuario final).

Opción 1: Vista previa de la consola de Google Cloud

  1. En la consola de Google Cloud, ve a la página Gemini Enterprise:

  1. En el menú de navegación, haz clic en Apps y selecciona la app que acabas de crear.
  2. Haz clic en Vista previa o en Abrir vista previa en la esquina superior derecha.
  3. En la barra de búsqueda, ingresa la siguiente consulta:
    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. Presiona Intro para enviar la consulta y ver los resultados directamente en la consola.

Opción 2: App web de Gemini Enterprise

  1. Abre la interfaz de tu app web de Gemini Enterprise.
  2. Ve a Menú ☰ > Agentes y selecciona Agente de Workspace Pro en De tu organización.
  3. Escribe la misma búsqueda que en la opción Vista previa de la consola de Google Cloud.
  4. Haz clic en Autorizar cuando se te solicite que completes el flujo de consentimiento del usuario de OAuth.
  5. El agente ejecutará tareas sin problemas en varios servicios con el protocolo MCP.

7. Limpia

Para evitar cargos innecesarios, limpia tus recursos:

Opción de consola

Ve al Panel de APIs y servicios, selecciona los servicios de MCP que habilitaste (p.ej., Calendar MCP, Gmail MCP) y haz clic en Inhabilitar API. Borra los IDs de cliente de OAuth en Google Auth Platform > Clients y borra la implementación de Reasoning Engine de la consola de Gemini Enterprise.

Opción de CLI

Ejecuta los siguientes comandos de la terminal para inhabilitar los servicios de MCP:

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

8. Felicitaciones

¡Felicitaciones! Creaste, probaste y, luego, implementaste correctamente un agente de IA del ADK con código profesional conectado directamente a los servidores MCP oficiales de Google Workspace.

Qué aprendiste

  • Cómo habilitar los servicios de MCP de Google Workspace en Google Cloud
  • Cómo controlar las credenciales de OAuth para las pruebas locales del ADK con encabezados estáticos
  • Cómo implementar la inserción dinámica de tokens con header_provider para los agentes de producción
  • Cómo implementar un agente del ADK en Agent Runtime de GEAP y registrarlo en Gemini Enterprise

Documentos de referencia