1. Introducción
En este codelab, aprenderás a crear un agente de IA de código profesional 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 documentación completa sobre las herramientas y la configuración disponibles, consulta Configura los servidores MCP de Google Workspace.
Actividades
- Habilita los servicios 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 de producción.
- Crea un agente del ADK local que se conecte a los servidores MCP de Google Workspace con tokens estáticos.
- Crea e implementa un agente del ADK listo para producción en Agent Runtime de Gemini Enterprise Agent Platform (GEAP) que use la inyección de tokens dinámicos.
- 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 una versión posterior instalada 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 habilitarlos con el navegador web:
Opción de CLI Ejecuta estos comandos de la 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 \
workspacemcp.googleapis.com
Configura la app de Chat
Para usar el servidor MCP de Google Chat, debes configurar una app de Chat en tu proyecto de Google Cloud.
- En la consola de Google Cloud, busca Google Chat API y haz clic en Google Chat API > Administrar > Configuración.
- 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.
- Nombre de la app:
- Haz clic en Guardar.
3. Configura el consentimiento de OAuth y los clientes
Los servidores 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.
Configura la pantalla de consentimiento de OAuth
- 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 > Desarrollo de la marca (o APIs y servicios > Pantalla de consentimiento de OAuth si Google Auth Platform no está visible).
- 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.
- Nombre de la app:
- Configura Público: Selecciona Interno.
- Configura la Información de contacto: Ingresa tu dirección de correo electrónico y, luego, haz clic en Crear.
- Ve a Acceso a datos > Agregar o quitar permisos. En Agregar permisos de forma manual, agrega los siguientes permisos para otorgar acceso a los servicios requeridos:
https://www.googleapis.com/auth/calendar.events https://www.googleapis.com/auth/calendar.calendars https://www.googleapis.com/auth/calendar.readonly 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/directory.readonly https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/contacts.readonly https://www.googleapis.com/auth/cloud-platform - 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)
- En la consola de Google Cloud, navega a Google Auth Platform > Clientes (o APIs y servicios > Credenciales). Haz clic en Crear credenciales (o Crear cliente) y selecciona ID de cliente de OAuth.
- Selecciona App de escritorio como el tipo de aplicación.
- Asígnale el nombre
Workspace Agent Local. - 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 crear el entorno del agente. Usaremos un enfoque de token estático para las pruebas, en el que recuperamos un token de OAuth con gcloud y lo pasamos 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 garantiza la coherencia en todas las plataformas.
1. Configura el directorio del entorno
Ejecuta los siguientes comandos en tu terminal para crear un directorio de proyecto y, luego, instalar los paquetes necesarios.
- Para Google Cloud Shell: Primero, haz clic en el ícono Activar Cloud Shell (
>_) en la barra de herramientas 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 de tu directorio gws-adk-agent.
- Máquina local: Mueve o copia el archivo
client_secret.jsondescargado al directoriogws-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. Autentica y genera .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 de Python personalizada con 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 elijas 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 creado 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 os
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
# Enable graceful error handling so timeouts return as tool outputs instead of crashing
os.environ["ADK_ENABLE_MCP_GRACEFUL_ERROR_HANDLING"] = "1"
MODEL = "gemini-2.5-flash"
# Inject User ADC path globally so both ADK and underlying GenAI SDKs
# load it safely, bypassing broken Compute Engine metadata fallbacks.
_adc_path = os.path.expanduser(
"~/.config/gcloud/application_default_credentials.json"
)
if not os.path.exists(_adc_path):
raise FileNotFoundError(
f"User ADC not found at {_adc_path}. "
"Please run 'python3 auth.py' first to generate credentials."
)
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = _adc_path
creds, _ = google.auth.default()
class TokenRelay:
"""Manages in-memory caching of Google OAuth access tokens.
Decouples token refresh logic from credentials validation states to
prevent infinite refresh loops during automated tool retries.
"""
def __init__(self, credentials):
self._creds = credentials
self._cached_token: str | None = None
self._expiry: datetime.datetime | None = None
def get_token(self) -> str:
now = datetime.datetime.now()
# Refresh if no cache or expiring within 5 minutes
if (
self._cached_token is None
or self._expiry is None
or now >= (self._expiry - datetime.timedelta(minutes=5))
):
self._creds.refresh(Request())
self._cached_token = self._creds.token
# Token lives for 60 mins; cache for 50 mins safely
self._expiry = now + datetime.timedelta(minutes=50)
print("\n[Agent Runtime] Access token refreshed from ADC.")
return self._cached_token or ""
# Initialize auth relay and perform startup safety check
token_relay = TokenRelay(creds)
token_relay.get_token()
def auth_header_provider(tool_context=None) -> dict[str, str]:
return {"Authorization": f"Bearer {token_relay.get_token()}"}
# Initialize the Google Workspace MCP servers with dynamic runtime 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
)
universal_search_mcp = McpToolset(
connection_params=StreamableHTTPConnectionParams(
url="https://workspacemcp.googleapis.com/mcp/v1",
),
header_provider=auth_header_provider
)
current_date = datetime.datetime.now().strftime("%Y-%m-%d")
# Define the agent and attach all configured 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, Contacts, and perform Universal Search.
If a tool returns an error indicating a timeout, inform the user that the service took too long to respond.""",
tools=[calendar_mcp, chat_mcp, drive_mcp, gmail_mcp, people_mcp, universal_search_mcp]
)
Ejecuta y prueba tu agente
Puedes interactuar con tu agente a través de la IU web interactiva o directamente dentro de tu terminal o shell.
Opción 1: IU web interactiva
Si estás en una máquina local, haz lo siguiente:
- Desde el directorio raíz del proyecto
gws-adk-agent, inicia la interfaz web del ADK:adk web - Abre
http://localhost:8000en tu navegador para chatear con tu agente.
Si estás en Google Cloud Shell, haz lo siguiente:
- Desde el directorio raíz del proyecto
gws-adk-agent, inicia la interfaz web del ADK y aplica de forma explícita el puerto 8080:adk web --port 8080 --allow_origins=* - 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 del proyecto gws-adk-agent, ejecuta el siguiente comando (funciona de forma idéntica 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]:
Intenta solicitarle información a tu agente
Independientemente de la interfaz que elijas, intenta probar el agente con consultas que aprovechen las herramientas 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 crea un archivo agent.py dentro de él:
mkdir -p enterprise_ai
Escribe el siguiente contenido en enterprise_ai/agent.py:
import os
import datetime
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
# Enable graceful error handling so timeouts return as tool outputs instead of crashing
os.environ["ADK_ENABLE_MCP_GRACEFUL_ERROR_HANDLING"] = "1"
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
)
universal_search_mcp = McpToolset(
connection_params=StreamableHTTPConnectionParams(url="https://workspacemcp.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, People, and search for information across multiple Google Workspace products.
If a tool returns an error indicating a timeout, inform the user that the service took too long to respond.""",
tools=[calendar_mcp, chat_mcp, drive_mcp, gmail_mcp, people_mcp, universal_search_mcp]
)
Implementa en Agent Runtime de GEAP
Implementa tu agente de código profesional con 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 del motor de razonamiento 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 permite un flujo de OAuth seguro del servidor. Esto permite que el agente alojado en Agent Runtime 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.
- 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 > Clientes (o APIs y servicios > Credenciales si Google Auth Platform no está visible). Haz clic en Crear credenciales (o Crear cliente) y selecciona ID de cliente de OAuth.
- Selecciona Aplicación web como el tipo de aplicación.
- Asígnale el nombre
Workspace Agent Production. - En la sección URIs de redireccionamiento autorizados, agrega los siguientes URIs:
- 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.
- Haz clic en Agregar URI y, luego, ingresa
- Haz clic en Crear. En la ventana emergente "Se creó el cliente de OAuth" (o en la lista Clientes ), copia el ID del cliente y el secreto del cliente. Los necesitarás cuando registres el agente en Gemini Enterprise.
Crea una app de Gemini Enterprise
- En la consola de Google Cloud, ve a la página Gemini Enterprise:
- En la tarjeta Gemini Enterprise, haz clic en Administrar.
- Haz clic en Crear aplicación.
- En la sección Gemini Enterprise, haz clic en Crear.
- En el campo Nombre de tu app ingresa un nombre para ella. El ID de la app aparece debajo del nombre de la app.
- 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. - Selecciona global (Global) como la ubicación de tu app.
- Haz clic en Continuar.
Registra el agente personalizado
- Abre la consola de Gemini Enterprise:
- Selecciona tu app activa, navega a Agentes y haz clic en + Agregar agente > Agregar agente personalizado a través de Agent Runtime.
- 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: Para construir el URI, reemplaza
YOUR_CLIENT_IDpor 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.events%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcalendar.calendars%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcalendar.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%2Fgmail.readonly%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fgmail.compose%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdirectory.readonly%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcontacts.readonly%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform&include_granted_scopes=true&response_type=code&access_type=offline&prompt=consent
- Nombre de autorización:
- Haz clic en Listo y, luego, en Siguiente.
- 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. - Motor de razonamiento de Agent Runtime: Pega el nombre del recurso del motor que copiaste del resultado de
adk deploy.
- Nombre del agente:
- Haz clic en Crear.
Prueba el agente en Gemini Enterprise
Puedes interactuar con tu agente a través de la vista previa de la consola de Google Cloud (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
- En la consola de Google Cloud, ve a la página Gemini Enterprise:
- En el menú de navegación, haz clic en Apps y selecciona la app que acabas de crear.
- Haz clic en Vista previa o en Abrir vista previa en la parte superior derecha.
- 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. - Presiona Intro para enviar la consulta y ver los resultados directamente en la consola.
Opción 2: App web de Gemini Enterprise
- Abre la interfaz de la app web de Gemini Enterprise.
- Ve a Menú ☰ > Agentes y selecciona Workspace Pro Agent en De tu organización.
- Escribe la misma consulta que en la opción de vista previa de la consola de Google Cloud.
- Haz clic en Autorizar cuando se te solicite que sigas el flujo de consentimiento del usuario de OAuth.
- 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 la consola
Ve al panel de APIs y servicios, selecciona los servicios 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 del motor de razonamiento de la Gemini Enterprise Console.
Opción de CLI
Ejecuta los siguientes comandos de la terminal para inhabilitar los servicios MCP:
# Disable Workspace MCP services
gcloud services disable calendarmcp.googleapis.com \
chatmcp.googleapis.com \
drivemcp.googleapis.com \
gmailmcp.googleapis.com \
workspacemcp.googleapis.com
8. Felicitaciones
¡Felicitaciones! Creaste, probaste e implementaste correctamente un agente de IA del ADK de código profesional conectado directamente a los servidores MCP de Google Workspace oficiales.
Qué aprendiste
- Cómo habilitar los servicios 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 inyección de tokens dinámicos con
header_providerpara agentes de producción - Cómo implementar un agente del ADK en Agent Runtime de GEAP y registrarlo en Gemini Enterprise