Membuat Agen Perjalanan menggunakan MCP Toolbox untuk Database dan Agent Development Kit (ADK)

1. Pengantar

Dalam codelab ini, Anda akan membuat agen menggunakan Agent Development Kit (ADK) yang memanfaatkan MCP Toolbox for Databases.

Selama mengikuti codelab, Anda akan menggunakan pendekatan langkah demi langkah sebagai berikut:

  1. Sediakan database Cloud SQL untuk PostgreSQL yang akan memiliki database hotel dan data sampel.
  2. Siapkan MCP Toolbox for Databases, yang menyediakan akses ke data.
  3. Desain dan Kembangkan Agen menggunakan Agent Development Kit (ADK) yang akan memanfaatkan MCP Toolbox untuk menjawab kueri dari pengguna.
  4. Jelajahi opsi untuk menguji Agen dan MCP Toolbox for Databases secara lokal dan di Google Cloud melalui layanan Cloud Run.

b3768488d144b8f6.png

Yang akan Anda lakukan

  • Merancang, Membangun, dan Men-deploy Agen yang akan menjawab kueri pengguna tentang hotel di suatu lokasi atau menelusuri hotel berdasarkan nama.

Yang akan Anda pelajari

  • Menyediakan dan mengisi database Cloud SQL untuk PostgreSQL dengan data sampel.
  • Siapkan MCP Toolbox for Databases untuk instance database Cloud SQL for PostgreSQL.
  • Desain dan kembangkan Agen menggunakan Agent Development Kit (ADK) untuk menjawab kueri pengguna.
  • Uji Agent dan MCP Toolbox for Databases di lingkungan lokal.
  • (Opsional) Deploy Agen dan MCP Toolbox for Databases di Google Cloud.

Yang Anda butuhkan

  • Browser web Chrome
  • Akun Gmail
  • Project Cloud dengan penagihan diaktifkan

Codelab ini, yang dirancang untuk developer dari semua level (termasuk pemula), menggunakan Python dalam aplikasi contohnya. Namun, pengetahuan Python tidak diperlukan dan kemampuan membaca kode dasar akan cukup untuk memahami konsep yang disajikan.

2. Sebelum memulai

Membuat project

  1. Di Konsol Google Cloud, di halaman pemilih project, pilih atau buat project Google Cloud.
  2. Pastikan penagihan diaktifkan untuk project Cloud Anda. Pelajari cara memeriksa apakah penagihan telah diaktifkan pada suatu project .
  3. Anda akan menggunakan Cloud Shell, lingkungan command line yang berjalan di Google Cloud yang telah dilengkapi dengan bq. Klik Activate Cloud Shell di bagian atas konsol Google Cloud.

Gambar tombol Aktifkan Cloud Shell

  1. Setelah terhubung ke Cloud Shell, Anda dapat memeriksa bahwa Anda sudah diautentikasi dan project sudah ditetapkan ke project ID Anda menggunakan perintah berikut:
gcloud auth list
  1. Jalankan perintah berikut di Cloud Shell untuk mengonfirmasi bahwa perintah gcloud mengetahui project Anda.
gcloud config list project
  1. Jika project Anda belum ditetapkan, gunakan perintah berikut untuk menetapkannya:
gcloud config set project <YOUR_PROJECT_ID>
  1. Aktifkan API yang diperlukan melalui perintah yang ditampilkan di bawah. Proses ini mungkin memerlukan waktu beberapa menit, jadi harap bersabar.
gcloud services enable cloudresourcemanager.googleapis.com \
                       servicenetworking.googleapis.com \
                       run.googleapis.com \
                       cloudbuild.googleapis.com \
                       cloudfunctions.googleapis.com \
                       aiplatform.googleapis.com \
                       sqladmin.googleapis.com \
                       compute.googleapis.com 

Jika perintah berhasil dieksekusi, Anda akan melihat pesan yang mirip dengan yang ditampilkan di bawah:

Operation "operations/..." finished successfully.

Alternatif untuk perintah gcloud adalah melalui konsol dengan menelusuri setiap produk atau menggunakan link ini.

Jika ada API yang terlewat, Anda dapat mengaktifkannya kapan saja selama pelaksanaan.

Baca dokumentasi untuk mempelajari perintah gcloud dan penggunaannya.

3. Membuat instance Cloud SQL

Kita akan menggunakan instance Google Cloud SQL untuk PostgreSQL guna menyimpan data hotel. Cloud SQL untuk PostgreSQL adalah layanan database terkelola sepenuhnya yang membantu Anda menyiapkan, memelihara, mengelola, dan mengatur database relasional PostgreSQL di Google Cloud Platform.

Jalankan perintah berikut di Cloud Shell untuk membuat instance:

gcloud sql instances create hoteldb-instance \
--database-version=POSTGRES_15 \
--tier db-g1-small \
--region=us-central1 \
--edition=ENTERPRISE \
--root-password=postgres

Perintah ini memerlukan waktu sekitar 3-5 menit untuk dijalankan. Setelah perintah berhasil dieksekusi, Anda akan melihat output yang menunjukkan bahwa perintah telah selesai, beserta informasi instance Cloud SQL Anda seperti NAME, DATABASE_VERSION, LOCATION, dll.

4. Menyiapkan database Hotel

Sekarang, tugas kita adalah membuat beberapa data contoh untuk Agen Hotel.

Buka halaman Cloud SQL di konsol Cloud.Anda akan melihat hoteldb-instance siap dan dibuat. Klik nama instance (hoteldb-instance) seperti yang ditunjukkan di bawah:

29dbc55e97f6f7b.png

Dari menu kiri Cloud SQL, buka opsi menu Cloud SQL Studio seperti yang ditunjukkan di bawah:

c11cc134c83ce327.png

Anda akan diminta untuk login ke Cloud SQL Studio tempat kami akan memberikan beberapa perintah SQL. Pilih postgres untuk opsi Database dan untuk opsi Pengguna dan Sandi, nilai yang akan digunakan adalah postgres. Klik AUTHENTICATE.

Pertama, buat tabel hotel sesuai dengan skema di bawah. Di salah satu panel Editor di Cloud SQL Studio, jalankan SQL berikut:

CREATE TABLE hotels(
 id            INTEGER NOT NULL PRIMARY KEY,
 name          VARCHAR NOT NULL,
 location      VARCHAR NOT NULL,
 price_tier    VARCHAR NOT NULL,
 checkin_date  DATE    NOT NULL,
 checkout_date DATE    NOT NULL,
 booked        BIT     NOT NULL
);

Sekarang, isi tabel hotel dengan data contoh. Jalankan SQL berikut:

INSERT INTO hotels(id, name, location, price_tier, checkin_date, checkout_date, booked)
VALUES
 (1, 'Hilton Basel', 'Basel', 'Luxury', '2024-04-20', '2024-04-22', B'0'),
 (2, 'Marriott Zurich', 'Zurich', 'Upscale', '2024-04-14', '2024-04-21', B'0'),
 (3, 'Hyatt Regency Basel', 'Basel', 'Upper Upscale', '2024-04-02', '2024-04-20', B'0'),
 (4, 'Radisson Blu Lucerne', 'Lucerne', 'Midscale', '2024-04-05', '2024-04-24', B'0'),
 (5, 'Best Western Bern', 'Bern', 'Upper Midscale', '2024-04-01', '2024-04-23', B'0'),
 (6, 'InterContinental Geneva', 'Geneva', 'Luxury', '2024-04-23', '2024-04-28', B'0'),
 (7, 'Sheraton Zurich', 'Zurich', 'Upper Upscale', '2024-04-02', '2024-04-27', B'0'),
 (8, 'Holiday Inn Basel', 'Basel', 'Upper Midscale', '2024-04-09', '2024-04-24', B'0'),
 (9, 'Courtyard Zurich', 'Zurich', 'Upscale', '2024-04-03', '2024-04-13', B'0'),
 (10, 'Comfort Inn Bern', 'Bern', 'Midscale', '2024-04-04', '2024-04-16', B'0');

Mari kita validasi data dengan menjalankan SQL SELECT seperti yang ditunjukkan di bawah ini:

SELECT * FROM hotels;

Anda akan melihat sejumlah data dalam tabel hotel seperti yang ditunjukkan di bawah:

a7dd838f1962d412.png

Kita telah menyelesaikan proses penyiapan instance Cloud SQL dan telah membuat data sampel. Di bagian berikutnya, kita akan menyiapkan MCP Toolbox for Databases.

5. Menyiapkan MCP Toolbox for Databases

MCP Toolbox for Databases adalah server MCP open source untuk database. Alat ini dirancang dengan mempertimbangkan kualitas produksi dan tingkat perusahaan. Hal ini memungkinkan Anda mengembangkan alat dengan lebih mudah, cepat, dan aman dengan menangani kompleksitas seperti penggabungan koneksi, autentikasi, dan lainnya.

Toolbox membantu Anda membangun alat AI Generatif yang memungkinkan agen Anda mengakses data dalam database Anda. Toolbox menyediakan:

  • Pengembangan yang disederhanakan: Integrasikan alat ke agen Anda dengan kurang dari 10 baris kode, gunakan kembali alat di antara beberapa agen atau framework, dan deploy versi baru alat dengan lebih mudah.
  • Performa yang lebih baik: Praktik terbaik seperti penggabungan koneksi, autentikasi, dan lainnya.
  • Keamanan yang ditingkatkan: Autentikasi terintegrasi untuk akses yang lebih aman ke data Anda
  • Kemampuan observasi menyeluruh: Metrik dan pelacakan siap pakai dengan dukungan bawaan untuk OpenTelemetry.

Toolbox berada di antara framework orkestrasi aplikasi dan database Anda, menyediakan bidang kontrol yang digunakan untuk mengubah, mendistribusikan, atau memanggil alat. Hal ini menyederhanakan pengelolaan alat Anda dengan memberi Anda lokasi terpusat untuk menyimpan dan memperbarui alat, sehingga Anda dapat membagikan alat di antara agen dan aplikasi serta memperbarui alat tersebut tanpa perlu men-deploy ulang aplikasi Anda.

e316aed02b9861a6.png

Anda dapat melihat bahwa salah satu database yang didukung oleh MCP Toolbox for Databases adalah Cloud SQL dan kita telah menyediakannya di bagian sebelumnya.

Menginstal Toolbox

Buka Terminal Cloud Shell dan buat folder bernama mcp-toolbox.

mkdir mcp-toolbox

Buka folder mcp-toolbox melalui perintah yang ditampilkan di bawah:

cd mcp-toolbox

Instal versi biner MCP Toolbox for Databases melalui skrip yang diberikan di bawah. Perintah di bawah ini adalah untuk Linux, tetapi jika Anda menggunakan Mac atau Windows, pastikan Anda mendownload biner yang benar. Lihat halaman rilis untuk Sistem Operasi dan Arsitektur Anda, lalu download biner yang benar.

export VERSION=0.8.0
curl -O https://storage.googleapis.com/genai-toolbox/v$VERSION/linux/amd64/toolbox
chmod +x toolbox

Sekarang kita memiliki versi biner toolbox yang siap digunakan. Langkah berikutnya adalah mengonfigurasi toolbox dengan sumber data dan konfigurasi lainnya.

Mengonfigurasi tools.yaml

Cara utama untuk mengonfigurasi Toolbox adalah melalui file tools.yaml. Buat file bernama tools.yaml di folder yang sama, yaitu mcp-toolbox, yang isinya ditampilkan di bawah.

Anda dapat menggunakan editor nano yang tersedia di Cloud Shell. Perintah nano adalah sebagai berikut: "nano tools.yaml".

Jangan lupa untuk mengganti nilai YOUR_PROJECT_ID dengan ID Project Google Cloud Anda.

sources:
  my-cloud-sql-source:
    kind: cloud-sql-postgres
    project: YOUR_PROJECT_ID
    region: us-central1
    instance: hoteldb-instance
    database: postgres
    user: postgres
    password: "postgres"

tools:
  search-hotels-by-name:
    kind: postgres-sql
    source: my-cloud-sql-source
    description: Search for hotels based on name.
    parameters:
      - name: name
        type: string
        description: The name of the hotel.
    statement: SELECT * FROM hotels WHERE name ILIKE '%' || $1 || '%';
  search-hotels-by-location:
    kind: postgres-sql
    source: my-cloud-sql-source
    description: Search for hotels based on location.  Result is sorted by price from least to most expensive.
    parameters:
      - name: location
        type: string
        description: The location of the hotel.
    statement: |
      SELECT *
      FROM hotels
      WHERE location ILIKE '%' || $1 || '%'
      ORDER BY
        CASE price_tier
          WHEN 'Midscale' THEN 1
          WHEN 'Upper Midscale' THEN 2
          WHEN 'Upscale' THEN 3
          WHEN 'Upper Upscale' THEN 4
          WHEN 'Luxury' THEN 5
          ELSE 99 -- Handle any unexpected values, place them at the end
        END;

toolsets:
   my_first_toolset:
     - search-hotels-by-name
     - search-hotels-by-location

Mari kita pahami file ini secara singkat:

  1. Sources mewakili berbagai sumber data yang dapat berinteraksi dengan alat. Sumber merepresentasikan sumber data yang dapat berinteraksi dengan alat. Anda dapat menentukan Sources sebagai peta di bagian sumber file tools.yaml. Biasanya, konfigurasi sumber akan berisi informasi apa pun yang diperlukan untuk terhubung dan berinteraksi dengan database. Dalam kasus ini, kita telah mengonfigurasi satu sumber yang mengarah ke instance Cloud SQL untuk PostgreSQL dengan kredensial. Untuk mengetahui informasi selengkapnya, lihat referensi Sumber.
  2. Tools menentukan tindakan yang dapat dilakukan agen – seperti membaca dan menulis ke sumber. Alat merepresentasikan tindakan yang dapat dilakukan agen Anda, seperti menjalankan pernyataan SQL. Anda dapat menentukan Tools sebagai peta di bagian alat pada file tools.yaml. Biasanya, alat akan memerlukan sumber untuk ditindaklanjuti. Dalam kasus ini, kita menentukan dua alat: search-hotels-by-name dan search-hotels-by-location serta menentukan sumber yang sedang dioperasikannya, bersama dengan SQL dan parameter. Untuk mengetahui informasi selengkapnya, lihat referensi Alat.
  3. Terakhir, ada Toolset, yang memungkinkan Anda menentukan grup alat yang ingin dimuat bersama. Hal ini dapat berguna untuk menentukan berbagai grup berdasarkan agen atau aplikasi. Dalam kasus ini, kita memiliki satu set alat bernama my_first_toolset, yang berisi dua alat yang telah kita tentukan.

Menjalankan MCP Toolbox for Databases Server

Jalankan perintah berikut (dari folder mcp-toolbox) untuk memulai server:

./toolbox --tools-file "tools.yaml"

Idealnya, Anda akan melihat output bahwa Server telah dapat terhubung ke sumber data kami dan telah memuat toolset dan alat. Contoh output diberikan di bawah:

./toolbox --tools-file "tools.yaml"
2025-04-23T14:32:29.564903079Z INFO "Initialized 1 sources." 
2025-04-23T14:32:29.565009291Z INFO "Initialized 0 authServices." 
2025-04-23T14:32:29.565070176Z INFO "Initialized 2 tools." 
2025-04-23T14:32:29.565120847Z INFO "Initialized 2 toolsets." 
2025-04-23T14:32:29.565510068Z INFO "Server ready to serve!" 

Server MCP Toolbox berjalan secara default di port 5000. Jika Anda mendapati bahwa port 5000 sudah digunakan, Anda dapat menggunakan port lain (misalnya 7000) sesuai perintah yang ditunjukkan di bawah. Sebagai gantinya, gunakan 7000, bukan port 5000 dalam perintah berikutnya.

./toolbox --tools-file "tools.yaml" --port 7000

Mari kita gunakan Cloud Shell untuk mengujinya.

Klik Pratinjau Web di Cloud Shell seperti yang ditunjukkan di bawah:

f990712162e8e924.png

Klik Ubah port dan tetapkan port ke 5000 seperti yang ditunjukkan di bawah, lalu klik Ubah dan Pratinjau.

d1b9de0c46ecef8a.png

Ini akan menghasilkan output berikut:

2fdcdac326034d41.png

Di URL browser, tambahkan berikut ini ke bagian akhir URL:

/api/toolset

Tindakan ini akan memunculkan alat yang saat ini dikonfigurasi. Contoh output ditampilkan di bawah:

{
  "serverVersion": "0.3.0+container.12222fe27ae070f2689a0632d60fda45412d1f97",
  "tools": {
    "search-hotels-by-location": {
      "description": "Search for hotels based on location.",
      "parameters": [
        {
          "name": "location",
          "type": "string",
          "description": "The location of the hotel.",
          "authSources": []
        }
      ]
    },
    "search-hotels-by-name": {
      "description": "Search for hotels based on name.",
      "parameters": [
        {
          "name": "name",
          "type": "string",
          "description": "The name of the hotel.",
          "authSources": []
        }
      ]
    }
  }
}

MCP Toolkit for Databases menjelaskan cara Pythonic bagi Anda untuk memvalidasi dan menguji alat, yang didokumentasikan di sini. Kita akan melewatinya dan langsung membahas Agent Development Kit (ADK) di bagian berikutnya yang akan menggunakan alat ini.

6. Menulis Agen dengan Agent Development Kit (ADK)

Menginstal Agent Development Kit (ADK)

Buka tab terminal baru di Cloud Shell dan buat folder bernama my-agents sebagai berikut. Buka juga folder my-agents.

mkdir my-agents
cd my-agents

Sekarang, mari kita buat lingkungan Python virtual menggunakan venv sebagai berikut:

python -m venv .venv

Aktifkan lingkungan virtual sebagai berikut:

source .venv/bin/activate

Instal paket ADK dan MCP Toolbox for Databases beserta dependensi langchain sebagai berikut:

pip install google-adk toolbox-core

Sekarang Anda dapat memanggil utilitas adk sebagai berikut.

adk

Daftar perintah akan ditampilkan.

$ adk
Usage: adk [OPTIONS] COMMAND [ARGS]...

  Agent Development Kit CLI tools.

Options:
  --help  Show this message and exit.

Commands:
  api_server  Starts a FastAPI server for agents.
  create      Creates a new app in the current folder with prepopulated agent template.
  deploy      Deploys agent to hosted environments.
  eval        Evaluates an agent given the eval sets.
  run         Runs an interactive CLI for a certain agent.
  web         Starts a FastAPI server with Web UI for agents.

Membuat Aplikasi Agen pertama kita

Sekarang kita akan menggunakan adk untuk membuat scaffolding bagi Aplikasi Agen Hotel melalui perintah adk create dengan nama aplikasi **(hotel-agent-app)**seperti yang diberikan di bawah.

adk create hotel-agent-app

Ikuti langkah-langkahnya dan pilih opsi berikut:

  • Model Gemini untuk memilih model agen root.
  • Pilih Vertex AI untuk backend.
  • Project ID dan region Google default Anda akan ditampilkan. Pilih default itu sendiri.
Choose a model for the root agent:
1. gemini-2.0-flash-001
2. Other models (fill later)

Choose model (1, 2): 1
1. Google AI
2. Vertex AI
Choose a backend (1, 2): 2

You need an existing Google Cloud account and project, check out this link for details:
https://google.github.io/adk-docs/get-started/quickstart/#gemini---google-cloud-vertex-ai

Enter Google Cloud project ID [gcp-experiments-349209]: 
Enter Google Cloud region [us-central1]: 

Agent created in /home/romin/hotel-agent-app:
- .env
- __init__.py
- agent.py

Amati folder tempat template default dan file yang diperlukan untuk Agen telah dibuat.

Yang pertama adalah file .env. Isinya ditampilkan di bawah:

GOOGLE_GENAI_USE_VERTEXAI=1
GOOGLE_CLOUD_PROJECT=YOUR_GOOGLE_PROJECT_ID
GOOGLE_CLOUD_LOCATION=YOUR_GOOGLE_PROJECT_REGION

Nilai tersebut menunjukkan bahwa kita akan menggunakan Gemini melalui Vertex AI bersama dengan nilai masing-masing untuk Project ID dan lokasi Google Cloud.

Kemudian, kita memiliki file __init__.py yang menandai folder sebagai modul dan memiliki satu pernyataan yang mengimpor agen dari file agent.py.

from . import agent

Terakhir, mari kita lihat file agent.py. Isinya ditampilkan di bawah:

from google.adk.agents import Agent

root_agent = Agent(
    model='gemini-2.0-flash-001',
    name='root_agent',
    description='A helpful assistant for user questions.',
    instruction='Answer user questions to the best of your knowledge',
)

Ini adalah Agen paling sederhana yang dapat Anda tulis dengan ADK. Dari halaman dokumentasi ADK, Agen adalah unit eksekusi mandiri yang dirancang untuk bertindak secara mandiri guna mencapai tujuan tertentu. Agen dapat melakukan tugas, berinteraksi dengan pengguna, menggunakan alat eksternal, dan berkoordinasi dengan agen lain.

Secara khusus, LLMAgent, yang umumnya diberi alias sebagai Agent, menggunakan Model Bahasa Besar (LLM) sebagai mesin intinya untuk memahami bahasa alami, melakukan penalaran, membuat rencana, menghasilkan respons, dan secara dinamis memutuskan cara melanjutkan atau alat yang akan digunakan, sehingga ideal untuk tugas yang fleksibel dan berfokus pada bahasa. Pelajari lebih lanjut Agen LLM di sini.

Mari kita ubah kode untuk agent.py sebagai berikut:

from google.adk.agents import Agent

root_agent = Agent(
    model='gemini-2.0-flash-001',
    name='hotel_agent',
    description='A helpful assistant that answers questions about a specific city.',
    instruction='Answer user questions about a specific city to the best of your knowledge. Do not answer questions outside of this.',
)

Menguji Aplikasi Agen secara lokal

Dari jendela terminal yang ada, berikan perintah berikut. Pastikan Anda berada di folder induk (my-agents) yang berisi folder hotel-agent-app.

adk web

Contoh eksekusi ditampilkan di bawah:

INFO:     Started server process [5015]
INFO:     Waiting for application startup.

+-----------------------------------------------------------------------------+
| ADK Web Server started                                                      |
|                                                                             |
| For local testing, access at http://localhost:8000.                         |
+-----------------------------------------------------------------------------+

INFO:     Application startup complete.
INFO:     Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)

Klik link terakhir dan konsol web akan muncul untuk menguji Agen. Anda akan melihat tampilan berikut diluncurkan di browser seperti yang ditunjukkan di bawah:

fe775e0eac5df274.png

Perhatikan bahwa di kiri atas, aplikasi agen hotel telah diidentifikasi. Sekarang Anda dapat mulai berkomunikasi dengan Agen. Berikan beberapa perintah yang menanyakan tentang kota. Contoh percakapan ditampilkan di bawah ini:

b732feb383668869.png

Anda dapat mematikan proses yang berjalan di terminal Cloud Shell (Ctrl-C).

Cara alternatif untuk menguji Agen adalah melalui perintah adk run seperti yang diberikan di bawah dari folder my-agents.

adk run hotel-agent-app

Coba perintahnya dan Anda dapat berkomunikasi dengan Agen melalui command line (terminal). Ketik exit untuk menutup percakapan.

7. Menghubungkan Agen ke Alat

Sekarang kita tahu cara menulis Agen dan mengujinya secara lokal. Kita akan menghubungkan Agen ini ke Alat. Dalam konteks ADK, Alat merepresentasikan kemampuan spesifik yang diberikan kepada agen AI, sehingga memungkinkannya melakukan tindakan dan berinteraksi dengan dunia di luar kemampuan inti pembuatan teks dan penalaran.

Dalam kasus ini, kita akan melengkapi Agen kita dengan Alat yang telah kita konfigurasi di Toolbox MCP untuk Database.

Ubah file agent.py dengan kode berikut. Perhatikan bahwa kita menggunakan port default 5000 dalam kode, tetapi jika Anda menggunakan nomor port alternatif, gunakan nomor tersebut.

from google.adk.agents import Agent
from toolbox_core import ToolboxSyncClient

toolbox = ToolboxSyncClient("http://127.0.0.1:5000")

# Load single tool
# tools = toolbox.load_tool('search-hotels-by-location')

# Load all the tools
tools = toolbox.load_toolset('my_first_toolset')

root_agent = Agent(
    name="hotel_agent",
    model="gemini-2.0-flash",
    description=(
        "Agent to answer questions about hotels in a city or hotels by name."
    ),
    instruction=(
        "You are a helpful agent who can answer user questions about the hotels in a specific city or hotels by name. Use the tools to answer the question"
    ),
    tools=tools,
)

Sekarang kita dapat menguji Agen yang akan mengambil data sebenarnya dari database PostgreSQL yang telah dikonfigurasi dengan MCP Toolbox for Databases.

Untuk melakukannya, ikuti urutan berikut:

Di salah satu terminal Cloud Shell, luncurkan MCP Toolbox for Databases. Anda mungkin sudah menjalankannya secara lokal di port 5000 seperti yang kita uji sebelumnya. Jika tidak, jalankan perintah berikut (dari folder mcp-toolbox) untuk memulai server:

./toolbox --tools_file "tools.yaml"

Idealnya, Anda akan melihat output bahwa Server telah dapat terhubung ke sumber data kami dan telah memuat toolset dan alat. Contoh output diberikan di bawah:

./toolbox --tools-file "tools.yaml"
2025-04-23T14:32:29.564903079Z INFO "Initialized 1 sources." 
2025-04-23T14:32:29.565009291Z INFO "Initialized 0 authServices." 
2025-04-23T14:32:29.565070176Z INFO "Initialized 2 tools." 
2025-04-23T14:32:29.565120847Z INFO "Initialized 2 toolsets." 
2025-04-23T14:32:29.565510068Z INFO "Server ready to serve!" 

Setelah server MCP berhasil dimulai, di terminal lain, luncurkan Agen seperti yang telah kita lakukan sebelumnya melalui perintah adk run (dari folder my-agents) yang ditunjukkan di bawah. Anda juga dapat menggunakan perintah adk web jika mau.

$ adk run hotel-agent-app/

Log setup complete: /tmp/agents_log/agent.20250423_170001.log
To access latest log: tail -F /tmp/agents_log/agent.latest.log
Running agent hotel_agent, type exit to exit.

user: what can you do for me?
[hotel_agent]: I can help you find hotels in a specific city or search for hotels by name.

user: I would like to search for hotels
[hotel_agent]: Great, do you have a specific city or hotel name in mind?

user: Yes a specific city
[hotel_agent]: Great, which city are you interested in?

user: Basel
[hotel_agent]: OK. I found three hotels in Basel: Hilton Basel, Hyatt Regency Basel, and Holiday Inn Basel.

Perhatikan bahwa Agen kini menggunakan dua alat yang telah kita konfigurasi di MCP Toolbox for Databases (search-hotels-by-name dan search-hotels-by-location) dan memberikan opsi yang benar kepada kita. Kemudian, aplikasi dapat mengambil data dari database instance PostgreSQL secara lancar dan memformat respons dengan tepat.

Dengan demikian, pengembangan dan pengujian lokal Agen Hotel yang kami buat menggunakan Agent Development Kit (ADK) dan didukung oleh alat yang kami konfigurasi di MCP Toolbox for Databases telah selesai.

8. (Opsional) Men-deploy MCP Toolbox for Databases and Agent ke Cloud Run

Di bagian sebelumnya, kita menggunakan terminal Cloud Shell untuk meluncurkan server MCP Toolbox dan menguji alat dengan Agent. Aplikasi ini berjalan secara lokal di lingkungan Cloud Shell.

Anda memiliki opsi untuk men-deploy server MCP Toolbox dan Agen ke layanan Google Cloud yang dapat menghosting aplikasi ini untuk kami.

Menghosting server MCP Toolbox di Cloud Run

Pertama, kita dapat memulai dengan server MCP Toolbox dan menghostingnya di Cloud Run. Kemudian, kita akan mendapatkan endpoint publik yang dapat diintegrasikan dengan aplikasi lain dan/atau aplikasi Agen. Petunjuk untuk menghostingnya di Cloud Run diberikan di sini. Sekarang kita akan membahas langkah-langkah utamanya.

Luncurkan Terminal Cloud Shell baru atau gunakan Terminal Cloud Shell yang ada. Buka folder mcp-toolbox, tempat biner toolbox dan tools.yaml berada.

Jalankan perintah berikut (penjelasan diberikan untuk setiap perintah):

Tetapkan variabel PROJECT_ID untuk mengarah ke Project ID Google Cloud Anda.

export PROJECT_ID="YOUR_GOOGLE_CLOUD_PROJECT_ID" 

Selanjutnya, pastikan layanan Google Cloud berikut diaktifkan di project.

gcloud services enable run.googleapis.com \
                       cloudbuild.googleapis.com \
                       artifactregistry.googleapis.com \
                       iam.googleapis.com \
                       secretmanager.googleapis.com

Mari buat akun layanan terpisah yang akan bertindak sebagai identitas untuk layanan Toolbox yang akan kita deploy di Google Cloud Run. Kami juga memastikan bahwa akun layanan ini memiliki peran yang benar, yaitu kemampuan untuk mengakses Secret Manager dan berkomunikasi dengan Cloud SQL.

gcloud iam service-accounts create toolbox-identity

gcloud projects add-iam-policy-binding $PROJECT_ID \
   --member serviceAccount:toolbox-identity@$PROJECT_ID.iam.gserviceaccount.com \
   --role roles/secretmanager.secretAccessor

gcloud projects add-iam-policy-binding $PROJECT_ID \
   --member serviceAccount:toolbox-identity@$PROJECT_ID.iam.gserviceaccount.com \
   --role roles/cloudsql.client

Kita akan mengupload file tools.yaml sebagai secret dan karena kita harus menginstal Toolbox di Cloud Run, kita akan menggunakan Image container terbaru untuk toolbox dan menyetelnya di variabel IMAGE.

gcloud secrets create tools --data-file=tools.yaml

export IMAGE=us-central1-docker.pkg.dev/database-toolbox/toolbox/toolbox:latest

Langkah terakhir dalam perintah deployment yang sudah dikenal ke Cloud Run:

gcloud run deploy toolbox \
--image $IMAGE \
--service-account toolbox-identity \
--region us-central1 \
--set-secrets "/app/tools.yaml=tools:latest" \
--args="--tools_file=/app/tools.yaml","--address=0.0.0.0","--port=8080" \
--allow-unauthenticated

Tindakan ini akan memulai proses men-deploy Toolbox Server dengan tools.yaml yang dikonfigurasi ke Cloud Run. Setelah deployment berhasil, Anda akan melihat pesan yang mirip dengan berikut ini:

Deploying container to Cloud Run service [toolbox] in project [YOUR_PROJECT_ID] region [us-central1]
OK Deploying new service... Done.                                                                                                                                                                                     
  OK Creating Revision...                                                                                                                                                                                             
  OK Routing traffic...                                                                                                                                                                                               
  OK Setting IAM Policy...                                                                                                                                                                                            
Done.                                                                                                                                                                                                                 
Service [toolbox] revision [toolbox-00001-zsk] has been deployed and is serving 100 percent of traffic.
Service URL: https://toolbox-<SOME_ID>.us-central1.run.app

Sekarang Anda dapat membuka Service URL yang tercantum di atas di browser. Pesan "Hello World" yang kita lihat sebelumnya akan ditampilkan. Selain itu, Anda juga dapat membuka URL berikut untuk melihat alat yang tersedia:

SERVICE URL/api/toolset

Anda juga dapat membuka Cloud Run dari konsol Google Cloud dan Anda akan melihat layanan Toolbox tersedia dalam daftar layanan di Cloud Run.

Catatan: Jika Anda masih ingin menjalankan Agen Hotel secara lokal dan tetap terhubung ke layanan Cloud Run yang baru di-deploy, Anda hanya perlu melakukan satu perubahan pada file my-agents/hotel-agent-app/agent.py.

Daripada berikut ini:

toolbox = ToolboxTool("http://127.0.0.1:5000")

Ubah ke URL Layanan layanan Cloud Run seperti yang diberikan di bawah:

toolbox = ToolboxTool("CLOUD_RUN_SERVICE_URL")

Uji Aplikasi Agen menggunakan adk run atau adk web seperti yang telah kita lihat sebelumnya.

Men-deploy Aplikasi Agen Hotel di Cloud Run

Langkah pertama adalah memastikan bahwa Anda telah melakukan perubahan di my-agents/hotel-agent-app/agent.py seperti yang diinstruksikan di atas untuk mengarah ke URL layanan Toolbox yang berjalan di Cloud Run, bukan host lokal.

Di sesi Terminal Cloud Shell baru atau Terminal yang ada, pastikan Anda berada di lingkungan virtual Python yang benar yang kita siapkan sebelumnya.

Pertama, mari kita buat file requirements.txt di folder my-agents/hotel-agent-app seperti yang ditunjukkan di bawah:

google-adk
toolbox-core

Buka folder my-agents dan tetapkan variabel lingkungan berikut terlebih dahulu:

export GOOGLE_CLOUD_PROJECT=YOUR_GOOGLE_CLOUD_PROJECT_ID
export GOOGLE_CLOUD_LOCATION=us-central1
export AGENT_PATH="hotel-agent-app/"
export SERVICE_NAME="hotels-service"
export APP_NAME="hotels-app"
export GOOGLE_GENAI_USE_VERTEXAI=True

Terakhir, deploy Aplikasi Agen ke Cloud Run melalui perintah cloud_run adk deploy seperti yang diberikan di bawah. Jika Anda diminta untuk mengizinkan pemanggilan yang tidak diautentikasi ke layanan, berikan "y" sebagai nilai untuk saat ini.

adk deploy cloud_run \
--project=$GOOGLE_CLOUD_PROJECT \
--region=$GOOGLE_CLOUD_LOCATION \
--service_name=$SERVICE_NAME  \
--app_name=$APP_NAME \
--with_ui \
$AGENT_PATH

Tindakan ini akan memulai proses men-deploy Aplikasi Agen Hotel ke Cloud Run. Tindakan ini akan mengupload sumber, mengemasnya ke dalam Container Docker, mengirimkannya ke Artifact Registry, lalu men-deploy layanan di Cloud Run. Proses ini mungkin memerlukan waktu beberapa menit, jadi harap bersabar.

Anda akan melihat pesan yang mirip dengan yang di bawah ini:

Start generating Cloud Run source files in /tmp/cloud_run_deploy_src/20250424_045623
Copying agent source code...
Copying agent source code complete.
Creating Dockerfile...
Creating Dockerfile complete: /tmp/cloud_run_deploy_src/20250424_045623/Dockerfile
Deploying to Cloud Run...
Building using Dockerfile and deploying container to Cloud Run service [hotels-service] in project [YOUR_GOOGLE_CLOUD_PROJECT] region [us-central1]
|  Building and deploying... Uploading sources.                                                                                                                                                                       
  |  Uploading sources...                                                                                                                                                                                             
OK Building and deploying... Done.                                                                                                                                                                                    
  OK Uploading sources...                                                                                                                                                                                             
  OK Building Container... Logs are available at [https://console.cloud.google.com/cloud-build/builds;region=us-central1/b02f5a74-6da6-4367-aaba-0c8aa098edf5?project=415458962931].                                  
  OK Creating Revision...                                                                                                                                                                                             
  OK Routing traffic...                                                                                                                                                                                               
Done.                                                                                                                                                                                                                 
Service [hotels-service] revision [hotels-service-00002-cpm] has been deployed and is serving 100 percent of traffic.
Service URL: https://hotels-service-<SOME_ID>.us-central1.run.app
Cleaning up the temp folder: /tmp/cloud_run_deploy_src/20250424_045623

Setelah deployment berhasil, Anda akan diberi nilai untuk URL Layanan, yang kemudian dapat Anda akses di browser untuk melihat Aplikasi Web yang sama yang memungkinkan Anda melakukan chat dengan Agen Hotel, seperti yang kita lihat sebelumnya dalam penyiapan lokal.

56bc8b29fa9c9989.png

9. Pembersihan

Agar tidak menimbulkan biaya berkelanjutan pada akun Google Cloud Anda, penting untuk menghapus resource yang kita buat selama workshop ini. Kita akan menghapus instance Cloud SQL dan secara opsional, jika Anda telah men-deploy Toolbox dan Aplikasi Hotel ke Cloud Run, kita juga akan menghapus layanan tersebut.

Pastikan variabel lingkungan berikut ditetapkan dengan benar, sesuai dengan project dan region Anda:

export PROJECT_ID="YOUR_PROJECT_ID"
export REGION="YOUR_REGION"

Dua perintah berikut akan menghapus layanan Cloud Run yang telah kita deploy:

gcloud run services delete toolbox --platform=managed --region=${REGION} --project=${PROJECT_ID} --quiet

gcloud run services delete hotels-service --platform=managed --region=${REGION} --project=${PROJECT_ID} --quiet

Perintah berikut akan menghapus instance Cloud SQL:

gcloud sql instances delete hoteldb-instance

10. Selamat

Selamat, Anda telah berhasil membuat agen menggunakan Agent Development Kit (ADK) yang memanfaatkan MCP Toolbox for Databases.

Dokumen referensi