Inspiration

Interested in Google Cloud and AI Technologies, I have decided to participate to this Cloud Run hackathon to showcase various Cloud Run project combined with other Google Cloud Technologies and Agentic AI

What it does

This project assists with agentic AI for searching air flights based on criteria (origin, destination, number of persons,...)

It proposes various integrations ( Google Agent Development Kit ADK Python Application) to a custom Airflight ModelContextProtocol MCP server based on Amadeus AIrflight API by SSE, combined with MCP-Toolbox for Databases to manage IATA airport Data.

How we built it

The system is composed of a Frontend interacting with Backend Modules.

The Backend Module leverages various Google ADK agents and tools :

  • internal Function Tools : get_current_date and time, get_weather

  • MCP Toolbox to access Database about IATA airport data

  • MCP airflight service which is a custom implementation of Amadeus service

Airflight Service is managed either interactively thru ADK Web User Interface either Asynchronously thru Cloud Pub/Sub process, whose events are created either manually using Google Cloud Pub/Sub CLI either automatically by Backend module on user query reception and associated reponse can be sent by notification to webhook url (or explicit email later on)

The Airflight service ADK root_agent associated to Google Vertex AI/Google Gemini 2.5 LLM has been designed to leverage :

  • subagents (greeting, farewell)
  • callbacks as model and tool guardrails (for instance detect in advance any invalid destination) to avoid useless LLM invocation
  • Amadeus MCP service for flights search Tool
  • Google Search as Agent Tool
  • Function Tools (weather data)
  • In Memory to save and share state

The Airflight service has been developed with Python language/ecosystem and deployed/operated with Google Cloud technologies (more details on architecture below) :

  • Google Cloud Run services : mcp toolbox database, mcp amadeus airflight, airflight adk agent, frontend, backend
  • Google Cloud Run worker pool to enable Agent to process incoming Pub/Sub query messages
  • Google Cloud Run Job to transform any Json Request data file from Google Cloud Storage Bucket into Entry published as Google Cloud Pub/Sub Topic
  • Google Cloud SQL/ Sqlite as Database
  • Google Cloud Logging
  • Google Cloud Shell for easy staging test and debugging before deployment
  • Google Container Registry hosting docker container images

Following Additional modules have been also used :

  • FastAPI to implement easily web service on Python
  • Streamlit for the frontend web interface
  • Webhook response content notification generation and reception simulation

Challenges we ran into

  • mcp toolbox to manage custom sqllite database on cloud run has required to develop a special Dockerfile

  • an existing amadeus airflight mcp service hosted on smithery web site could not be used to error on parsing json schema response, hence I have to introduce a custom airflight mcp service

  • tha Airflight "root" agent is accessible either as Cloud Run Service web service either as Cloud Run Worker Pool hence the codeset has been organized to allow this multiple reference and integration by presetting appropriate Dockerfile/Requirements/MainApp resources before building docker container image and deploying on Google Cloud Run environment.

Accomplishments that we're proud of

  • a full working frontend/backend solution combining Google ADK and several Google Cloud components (front, backend, adk web ui, mcp toolbox, custom airflight mcp server) running on Cloud Run as services and also as Cloud run worker pool to process in background incoming Pub/Sub Topic query messages

  • Any JSON query message file stored in special Bucket can be also injected as Pub/Sub topic input thanks to operational Cloud Run Job module, which can be scheduled with Cloud Scheduler.

What we learned

  • how to operate Google ADK and various features ( multi agent/tools workflow, callback) on **Cloud Run with various options : either as service either as worker pool

What's next for AirFlight Multi Agent

  • complete the airflight service with accomodation service at destination city

  • finalize asynchronous notification with webhook

Built With

  • docker
  • fastapi
  • google-adk
  • google-cloud-ai
  • google-cloud-pub-sub
  • google-cloud-registry
  • google-cloud-run
  • google-cloud-run-job
  • google-cloud-scheduler
  • google-cloud-shell
  • google-cloud-sql
  • google-gemini
  • mcp-server
  • mcp-toolbox
  • python
  • sqlite
  • streamlit
Share this project:

Updates