1. Visão geral
Neste codelab, você vai criar um agente analista do Google Trends usando o ADK do Google. Esse agente usa o servidor MCP do BigQuery para descobrir e executar ferramentas que consultam o conjunto de dados públicos do Google Trends (bigquery-public-data.google_trends).
O que você vai aprender
- Como configurar um projeto para desenvolvimento com o ADK.
- Como ativar e usar servidores MCP gerenciados para o BigQuery.
- Como criar um agente que usa ferramentas do MCP.
- Como executar o agente localmente para testes.
- Como implantar o agente no Google Cloud Run.
O que é necessário
- Tenha um projeto do Google Cloud com o faturamento ativado.
- Um navegador da web, como o Chrome
- Python 3.11 ou mais recente
Este codelab é destinado a desenvolvedores intermediários que têm alguma familiaridade com Python e Google Cloud.
Este codelab leva aproximadamente de 15 a 20 minutos para ser concluído.
Os recursos criados neste codelab custam menos de US $5.
2. Configurar o ambiente
Criar um projeto do Google Cloud
- No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto na nuvem do Google Cloud.
- Verifique se o faturamento está ativado para seu projeto do Cloud. Saiba como verificar se o faturamento está ativado em um projeto.
Definir variáveis de ambiente
Defina as seguintes variáveis de ambiente.
export GOOGLE_CLOUD_PROJECT=<INSERT_YOUR_GCP_PROJECT_HERE>
export GOOGLE_GENAI_USE_VERTEXAI=1
Observação: definir GOOGLE_GENAI_USE_VERTEXAI=1 direciona o ADK a usar a Vertex AI, aproveitando o Cloud IAM para autenticação em vez de um GEMINI_API_KEY.
Autenticar e configurar o gcloud
Faça login na sua Conta do Google, defina o projeto ativo e configure as Application Default Credentials.
gcloud auth login
gcloud auth application-default login
Observação: o gcloud auth login autentica os comandos da CLI gcloud, enquanto o gcloud auth application-default login autentica o código do aplicativo local.
Defina o projeto na nuvem do Google Cloud:
gcloud config set project ${GOOGLE_CLOUD_PROJECT}
Ativar as APIs necessárias
Ative as APIs do Cloud necessárias para o Cloud Run, o Artifact Registry, o BigQuery e a Vertex AI.
gcloud services enable run.googleapis.com \
cloudbuild.googleapis.com \
artifactregistry.googleapis.com \
bigquery.googleapis.com \
aiplatform.googleapis.com
Ativar a MCP para BigQuery
Os servidores MCP gerenciados precisam ser ativados explicitamente para o projeto.
gcloud beta services mcp enable bigquery.googleapis.com
Criar uma pasta para o projeto
Comece criando uma pasta raiz para seu agente e uma pasta interna para a implementação dele.
mkdir google-trends-agent
cd google-trends-agent
mkdir google_trends
3. Criar o código do agente
Crie um arquivo vazio chamado google_trends/__init__.py:
touch google_trends/__init__.py
Em seguida, crie um arquivo chamado google_trends/agent.py e cole o seguinte código:
import os
import textwrap
import warnings
from datetime import date
import google.auth
from google.adk.agents import LlmAgent
from google.adk.apps import App
from google.adk.tools.mcp_tool import McpToolset
from google.adk.tools.mcp_tool.mcp_session_manager import StreamableHTTPConnectionParams
from google.auth.transport.requests import Request
# Suppress experimental ADK credential warnings
warnings.filterwarnings("ignore")
def get_agent_instruction(project_id: str) -> str:
"""Generates a clear and formatted prompt for the data analyst."""
instruction = f"""
# ROLE
You are a Google Search Trends Analyst. Your mission is to provide clear answers using SQL data.
# DATA CONSTRAINTS
- BigQuery tool `execute_sql` requires explicit billing project mapping. Use: '{project_id}'.
- Target dataset strictly: `bigquery-public-data.google_trends`
# SCHEMA DISCOVERY (CRITICAL)
1. DO NOT call `get_table_info` or `list_table_ids` (Triggers Permission Errors).
2. Run `SELECT * FROM table LIMIT 0` via `execute_sql` for field definition mapping.
# OUTPUT PRESENTATION
- Render purely as a cleanly aligned Markdown table.
- Use clear and descriptive headers for each column.
- Remove conversational preambles. Output only the results.
"""
return textwrap.dedent(instruction).strip()
def get_auth_headers() -> dict[str, str]:
"""Fetch auth headers for the project using Google Cloud Platform scopes."""
credentials, _ = google.auth.default(
scopes=["https://www.googleapis.com/auth/cloud-platform"]
)
request = Request()
credentials.refresh(request)
return {"Authorization": f"Bearer {credentials.token}"}
def get_todays_date() -> str:
"""Returns today's date in YYYY-MM-DD format."""
return date.today().isoformat()
# --- Application Initialization ---
project_id = os.environ.get("GOOGLE_CLOUD_PROJECT")
if not project_id:
raise ValueError("GOOGLE_CLOUD_PROJECT environment variable is not set")
mcp_headers = {
"Content-Type": "application/json",
"Accept": "application/json, text/event-stream",
} | get_auth_headers()
# Configure BigQuery Tools via MCP
bq_tools = McpToolset(
connection_params=StreamableHTTPConnectionParams(
url="https://bigquery.googleapis.com/mcp",
headers=mcp_headers,
)
)
# Initialize the LLM Agent
root_agent = LlmAgent(
name="google_trends",
model="gemini-3-flash-preview",
tools=[get_todays_date, bq_tools],
instruction=get_agent_instruction(project_id),
)
# Create the ADK App
app = App(name=root_agent.name, root_agent=root_agent)
4. Run the agent
Nesta etapa, você vai configurar um ambiente virtual Python local, instalar dependências e executar o agente para verificar o comportamento dele na sua máquina (ou no Google Cloud Shell).
- Navegue até o diretório raiz do aplicativo (
google-trends-agent). - Crie um ambiente virtual:
python -m venv mcp_demo_env
source mcp_demo_env/bin/activate
- Instale os pacotes Python necessários:
pip install google-auth google-adk
Vamos usar o ADK Web para testar nosso novo agente.
Para desenvolvimento e testes locais, execute o seguinte comando:
adk web
Para desenvolvimento e testes no Google Cloud Shell, execute o seguinte comando:
adk web --allow_origins="*"
Isso vai iniciar o servidor da Web do ADK. Você pode interagir com o agente usando a interface da Web local (geralmente em http://localhost:8000).
Observação: também é possível usar o comando adk run google_trends mais simples para testar o agente.
5. Implantar no Cloud Run
Siga estas etapas para implantar o agente com segurança no Google Cloud Run.
Conceder permissões
O Cloud Run precisa de permissão para acessar a Vertex AI e usar as ferramentas da MCP do BigQuery.
# Get your project number automatically
PROJECT_NUMBER=$(gcloud projects describe $GOOGLE_CLOUD_PROJECT --format='value(projectNumber)')
# Vertex AI Access: To talk to the Gemini model
gcloud projects add-iam-policy-binding ${GOOGLE_CLOUD_PROJECT} \
--member="serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \
--role="roles/aiplatform.user"
# MCP & BigQuery: To execute tools and run SQL jobs
gcloud projects add-iam-policy-binding ${GOOGLE_CLOUD_PROJECT} \
--member="serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \
--role="roles/mcp.toolUser"
gcloud projects add-iam-policy-binding ${GOOGLE_CLOUD_PROJECT} \
--member="serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \
--role="roles/bigquery.jobUser"
gcloud projects add-iam-policy-binding ${GOOGLE_CLOUD_PROJECT} \
--member="serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \
--role="roles/bigquery.dataViewer"
Criar o Dockerfile
Na raiz do projeto (google-trends-agent), crie um arquivo chamado Dockerfile e cole o seguinte conteúdo:
FROM python:3.11-slim
WORKDIR /app
# Create a non-root user
RUN adduser --disabled-password --gecos "" myuser
USER myuser
ENV PATH="/home/myuser/.local/bin:$PATH"
# Copy the agent folder into the container
COPY --chown=myuser:myuser google_trends/ /app/agents/google_trends/
# Install the python packages
RUN pip install google-auth google-adk
# Set environment variables
ENV GOOGLE_GENAI_USE_VERTEXAI=1
# Expose port
EXPOSE 8080
# Run ADK web server
CMD ["adk", "web", "--port=8080", "--host=0.0.0.0", "/app/agents"]
Implante o agente
Execute o seguinte comando no diretório raiz. Isso vai conteinerizar e implantar seu agente no Cloud Run.
gcloud run deploy google-trends-agent \
--source . \
--region us-west1 \
--allow-unauthenticated \
--set-env-vars="GOOGLE_CLOUD_PROJECT=${GOOGLE_CLOUD_PROJECT}"
Verificação rápida
Quando a implantação terminar, o console vai gerar um URL do serviço. Abra esse URL no navegador. Ele vai fornecer a mesma interface interativa que você viu localmente, mas agora em execução na nuvem.
Você também pode monitorar os registros para garantir que tudo esteja funcionando corretamente:
gcloud logging read "resource.type=cloud_run_revision AND resource.labels.service_name=google-trends-agent" --limit 10
6. Limpeza
Para evitar cobranças contínuas, exclua os recursos criados durante este codelab.
Exclua o serviço do Cloud Run:
gcloud run services delete google-trends-agent --region us-west1
Se você criou um projeto especificamente para este codelab, é possível excluir todo o projeto:
gcloud projects delete ${GOOGLE_CLOUD_PROJECT}
Você também pode excluir todos os arquivos relacionados a este codelab:
deactivate
cd ..
rm -rf google-trends-agent
7. Parabéns
Parabéns! Você criou e implantou um agente analista do Google Trends.
O que você aprendeu
- Como usar o MCP para ampliar as habilidades do agente de forma dinâmica
- Como criar e disponibilizar agentes de LLM com o ADK do Google
- Como implantar e escalonar agentes no Cloud Run
Próximas etapas
- Tente modificar o agente para consultar diferentes conjuntos de dados do BigQuery
- Adicione mais ferramentas do MCP para ampliar as capacidades do agente