Skip to main content

From Models to Agents: Shipping Enterprise AI Faster with Google’s MCP Toolbox & Agent Development Kit

Google Agent Development Kit logo Google MCP Toolbox logo
This article is an expanded write-up of the talk I recently delivered as a Google Developer Expert during a talk in Denver. The full slide deck is embedded below for easy reference.


Why another “agent framework”?

Large-language models (LLMs) are superb at generating prose, but production-grade systems need agents that can reason, plan, call tools, and respect enterprise guard-rails. Traditionally, that means:

  • Hand-rolling connectors to databases & APIs
  • Adding authentication, rate-limits, and connection pools
  • Patching in tracing & metrics later
  • Hoping your YAML jungle survives the next refactor

Google’s new duo—MCP Toolbox and the Agent Development Kit (ADK)—eliminates that toil so you can treat agent development like ordinary software engineering.

MCP Toolbox in one minute ⏳

What Why it matters
Open-source MCP server Implements the emerging Model Context Protocol; any compliant agent can call tools with a single gRPC/HTTP hop.
YAML-driven “sources → tools → toolsets” Declarative config auto-generates secure SQL & vector-search endpoints—zero boilerplate.
Built-in auth & RBAC authRequired and authenticatedParameters enforce per-call identity without leaking tokens to the LLM.
Observability out of the box OpenTelemetry traces and structured logs flow straight to Cloud Monitoring.

Minimal YAML example

# tools.yaml
sources:
  flights-db:
    kind: cloud-sql-postgres
    project: corp-air
    region: us-central1
    instance: prod
    user: agent_app
    password: $POSTGRES_PASS
    database: flights

tools:
  get_flight_by_id:
    kind: postgres-sql
    source: flights-db
    statement: "SELECT * FROM flights WHERE id = $1"
    parameters:
      - name: id
        type: int
        description: Unique flight id

toolsets:
  flight_tools:
    - get_flight_by_id
$ pip install genai-toolbox
$ mcp-toolbox serve --tools tools.yaml

The MCP Toolbox now exposes get_flight_by_id; any MCP-aware agent can invoke it by name, and Toolbox handles pooling, auth, and SQL-injection safety.

Meet the Agent Development Kit (ADK)

ADK is a model-agnostic runtime that lets you compose single agents or multi-agent teams in Python or Java—think “FastAPI for agents.”

from adk import Agent, Tool
from adk.models import GeminiPro  # or OpenAI, Ollama, etc.

llm = GeminiPro()

# Wrap the MCP tool as an ADK Tool object
flight_tool = Tool.from_mcp("http://localhost:8080", "get_flight_by_id")

flight_agent = Agent(
    name="FlightLookup",
    model=llm,
    tools=[flight_tool],
    system_prompt="You are a helpful flight assistant."
)

if __name__ == "__main__":
    print(flight_agent("When does flight 714 depart?"))

ADK handles function-call serialization, retries, and schema validation—so you stay focused on business logic.

Reference Architecture

  1. User → front-end (chat, Slack, REST API)
  2. ADK agent(s) → route intent, orchestrate planners/executors
  3. MCP Toolbox → exposes SQL, vector search, NL2SQL patterns over Cloud SQL / AlloyDB / BigQuery
  4. Databases & external APIs → secure data plane
  5. Observability → OpenTelemetry → Cloud Trace + Cloud Monitoring

End-to-end sample ✈️

# 1  Provision a Postgres instance on Cloud SQL
gcloud sql instances create flights --database-version=POSTGRES_15 ...

# 2  Load sample data (omitted)

# 3  Start MCP Toolbox
export POSTGRES_PASS=$(gcloud sql users ...)
mcp-toolbox serve --tools tools.yaml

# 4  Run the ADK agent script
python flight_agent.py

Ask the agent: “Is there a later flight to Boston with an empty window seat?”
Behind the scenes it chains NL2SQL → MCP Toolbox → Postgres query → reasoning → answer.

Deployment tips

  • Cloud Run for stateless REST/gRPC endpoints; autoscale to zero.
  • GKE for high-QPS multi-agent clusters—mount MCP config as a secret and use Cloud SQL Auth Proxy.
  • CI/CD – treat tools.yaml like code; linting failures block production deploys, giving you SQL-level change review.

Resources & next steps

Happy hacking — and let me know what agents you build!

Comments

Popular posts from this blog

Curious case of Cisco AnyConnect and WSL2

One thing Covid has taught me is the importance of VPN. Also one other thing COVID has taught me while I work from home  is that your Windows Machine can be brilliant  as long as you have WSL2 configured in it. So imagine my dismay when I realized I cannot access my University resources while being inside the University provided VPN client. Both of the institutions I have affiliation with, requires me to use VPN software which messes up WSL2 configuration (which of course I realized at 1:30 AM). Don't get me wrong, I have faced this multiple times last two years (when I was stuck in India), and mostly I have been lazy and bypassed the actual problem by side-stepping with my not-so-noble  alternatives, which mostly include one of the following: Connect to a physical machine exposed to the internet and do an ssh tunnel from there (not so reliable since this is my actual box sitting at lab desk, also not secure enough) Create a poor man's socks proxy in that same box to have...

Deep Dive into the Google Agent Development Kit (ADK): Features and Code Examples

In our previous overview, we introduced the Google Agent Development Kit (ADK) as a powerful Python framework for building sophisticated AI agents. Now, let's dive deeper into some of the specific features that make ADK a compelling choice for developers looking to create agents that can reason, plan, use tools, and interact effectively with the world. 1. The Core: Configuring the `LlmAgent` The heart of most ADK applications is the LlmAgent (aliased as Agent for convenience). This agent uses a Large Language Model (LLM) for its core reasoning and decision-making. Configuring it effectively is key: name (str): A unique identifier for your agent within the application. model (str | BaseLlm): Specify the LLM to use. You can provide a model name string (like 'gemini-1.5-flash') or an instance of a model class (e.g., Gemini() ). ADK resolves string names using its registry. instruction (str | Callable): This is crucial for guiding the agent's be...

My Google I/O 2024 Adventure: A GDE's Front-Row Seat to the Gemini Era

Hey tech enthusiasts! Rabimba Karanjai here, your friendly neighborhood Google Developer Expert (GDE), back from an exhilarating whirlwind tour of Google I/O 2024. Let me tell you, this wasn't just your average tech conference – it was an AI-infused extravaganza that left me utterly mind-blown! And you know what made it even sweeter? I had front-row seats, baby! Huge shoutout to the GDE program for this incredible opportunity. Feeling grateful and a tad spoiled, I must admit. 😉 Gemini: The AI Marvel That's Stealing the Show Now, let's dive into the star of the show: Gemini . This ain't your grandpa's AI model – it's the multimodal powerhouse that's set to redefine how we interact with technology. Imagine an AI that doesn't just understand text, but images, videos, code, and even your wacky doodles. Yep, that's Gemini for you! Google's been cooking up this AI masterpiece, and boy, did they deliver! The keynote demo had us all gawk...