1. บทนำ
ใน Codelab นี้ คุณจะสร้าง Agent โดยใช้ Agent Development Kit (ADK) ที่ใช้ MCP Toolbox สำหรับฐานข้อมูล
ใน Codelab นี้ คุณจะได้ใช้แนวทางแบบทีละขั้นตอนดังนี้
- จัดสรรฐานข้อมูล Cloud SQL สำหรับ PostgreSQL ที่จะมีฐานข้อมูลโรงแรมและข้อมูลตัวอย่าง
- ตั้งค่า MCP Toolbox สำหรับฐานข้อมูล ซึ่งให้สิทธิ์เข้าถึงข้อมูล
- ออกแบบและพัฒนา Agent โดยใช้ Agent Development Kit (ADK) ที่จะใช้ MCP Toolbox เพื่อตอบคำถามจากผู้ใช้
- สำรวจตัวเลือกในการทดสอบ Agent และ MCP Toolbox สำหรับฐานข้อมูลในเครื่องและใน Google Cloud ผ่านบริการ Cloud Run
สิ่งที่คุณต้องทำ
- ออกแบบ สร้าง และติดตั้งใช้งานเอเจนต์ที่จะตอบคำค้นหาของผู้ใช้เกี่ยวกับโรงแรมในสถานที่ตั้งหนึ่งๆ หรือค้นหาโรงแรมตามชื่อ
สิ่งที่คุณจะได้เรียนรู้
- การจัดสรรและป้อนข้อมูลตัวอย่างลงในฐานข้อมูล Cloud SQL สำหรับ PostgreSQL
- ตั้งค่า MCP Toolbox สำหรับฐานข้อมูลสำหรับอินสแตนซ์ฐานข้อมูล Cloud SQL สำหรับ PostgreSQL
- ออกแบบและพัฒนา Agent โดยใช้ Agent Development Kit (ADK) เพื่อตอบคำค้นหาของผู้ใช้
- ทดสอบ Agent และ MCP Toolbox สำหรับฐานข้อมูลในสภาพแวดล้อมในเครื่อง
- (ไม่บังคับ) ติดตั้งใช้งาน Agent และ MCP Toolbox สำหรับฐานข้อมูลใน Google Cloud
สิ่งที่คุณต้องมี
- เว็บเบราว์เซอร์ Chrome
- บัญชี Gmail
- โปรเจ็กต์ Cloud ที่เปิดใช้การเรียกเก็บเงิน
Codelab นี้ออกแบบมาสำหรับนักพัฒนาทุกระดับ (รวมถึงผู้เริ่มต้น) โดยใช้ Python ในแอปพลิเคชันตัวอย่าง อย่างไรก็ตาม คุณไม่จำเป็นต้องมีความรู้ด้าน Python และความสามารถในการอ่านโค้ดขั้นพื้นฐานก็เพียงพอที่จะทำความเข้าใจแนวคิดที่นำเสนอ
2. ก่อนเริ่มต้น
สร้างโปรเจ็กต์
- ในคอนโซล Google Cloud ให้เลือกหรือสร้างโปรเจ็กต์ Google Cloud ในหน้าตัวเลือกโปรเจ็กต์
- ตรวจสอบว่าโปรเจ็กต์ที่อยู่ในระบบคลาวด์เปิดใช้การเรียกเก็บเงินแล้ว ดูวิธีตรวจสอบว่าได้เปิดใช้การเรียกเก็บเงินในโปรเจ็กต์แล้วหรือไม่
- คุณจะใช้ Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานใน Google Cloud และโหลด bq ไว้ล่วงหน้า คลิกเปิดใช้งาน Cloud Shell ที่ด้านบนของคอนโซล Google Cloud

- เมื่อเชื่อมต่อกับ Cloud Shell แล้ว ให้ตรวจสอบว่าคุณได้รับการตรวจสอบสิทธิ์แล้วและตั้งค่าโปรเจ็กต์เป็นรหัสโปรเจ็กต์โดยใช้คำสั่งต่อไปนี้
gcloud auth list
- เรียกใช้คำสั่งต่อไปนี้ใน Cloud Shell เพื่อยืนยันว่าคำสั่ง gcloud รู้จักโปรเจ็กต์ของคุณ
gcloud config list project
- หากไม่ได้ตั้งค่าโปรเจ็กต์ ให้ใช้คำสั่งต่อไปนี้เพื่อตั้งค่า
gcloud config set project <YOUR_PROJECT_ID>
- เปิดใช้ API ที่จำเป็นผ่านคำสั่งที่แสดงด้านล่าง การดำเนินการนี้อาจใช้เวลาสักครู่ โปรดอดใจรอ
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
เมื่อเรียกใช้คำสั่งสำเร็จ คุณควรเห็นข้อความที่คล้ายกับข้อความที่แสดงด้านล่าง
Operation "operations/..." finished successfully.
คุณสามารถใช้คอนโซลแทนคำสั่ง gcloud ได้โดยค้นหาแต่ละผลิตภัณฑ์หรือใช้ลิงก์นี้
หากพลาด API ใดไป คุณก็เปิดใช้ได้ทุกเมื่อในระหว่างการติดตั้งใช้งาน
โปรดดูคำสั่งและการใช้งาน gcloud ในเอกสารประกอบ
3. สร้างอินสแตนซ์ Cloud SQL
เราจะใช้อินสแตนซ์ Google Cloud SQL สำหรับ PostgreSQL เพื่อจัดเก็บข้อมูลโรงแรม Cloud SQL สำหรับ PostgreSQL เป็นบริการฐานข้อมูลที่มีการจัดการครบวงจร ซึ่งช่วยให้คุณตั้งค่า บำรุงรักษา จัดการ และดูแลระบบฐานข้อมูลเชิงสัมพันธ์ PostgreSQL ใน Google Cloud Platform ได้
เรียกใช้คำสั่งต่อไปนี้ใน Cloud Shell เพื่อสร้างอินสแตนซ์
gcloud sql instances create hoteldb-instance \
--database-version=POSTGRES_15 \
--tier db-g1-small \
--region=us-central1 \
--edition=ENTERPRISE \
--root-password=postgres
คำสั่งนี้จะใช้เวลาดำเนินการประมาณ 3-5 นาที เมื่อเรียกใช้คำสั่งสำเร็จแล้ว คุณควรเห็นเอาต์พุตที่ระบุว่าคำสั่งเสร็จสมบูรณ์แล้ว พร้อมกับข้อมูลอินสแตนซ์ Cloud SQL เช่น NAME, DATABASE_VERSION, LOCATION เป็นต้น
4. เตรียมฐานข้อมูลโรงแรม
ตอนนี้เราจะสร้างข้อมูลตัวอย่างสำหรับตัวแทนโรงแรม
ไปที่หน้า Cloud SQL ในคอนโซลระบบคลาวด์ คุณควรเห็น hoteldb-instance พร้อมใช้งานและสร้างแล้ว คลิกชื่ออินสแตนซ์ (hoteldb-instance) ดังที่แสดงด้านล่าง

จากเมนูด้านซ้ายของ Cloud SQL ให้ไปที่ตัวเลือกเมนู Cloud SQL Studio ดังที่แสดงด้านล่าง

ซึ่งจะขอให้คุณลงชื่อเข้าใช้ Cloud SQL Studio ซึ่งเราจะให้คำสั่ง SQL 2-3 คำสั่ง เลือก postgres สำหรับตัวเลือกฐานข้อมูล และสำหรับทั้งผู้ใช้และรหัสผ่าน ค่าที่จะใช้คือ postgres คลิก AUTHENTICATE
ก่อนอื่นเรามาสร้างตารางโรงแรมตามสคีมาที่ระบุไว้ด้านล่างกัน ในบานหน้าต่างเอดิเตอร์บานใดบานหนึ่งใน Cloud SQL Studio ให้เรียกใช้ SQL ต่อไปนี้
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
);
ตอนนี้มาป้อนข้อมูลตัวอย่างลงในตารางโรงแรมกัน เรียกใช้ SQL ต่อไปนี้
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');
มาตรวจสอบข้อมูลโดยเรียกใช้ SQL ของ SELECT ดังที่แสดงด้านล่าง
SELECT * FROM hotels;
คุณควรเห็นระเบียนจำนวนหนึ่งในตารางโรงแรมดังที่แสดงด้านล่าง

เราได้ดำเนินการตั้งค่าอินสแตนซ์ Cloud SQL และสร้างข้อมูลตัวอย่างเสร็จเรียบร้อยแล้ว ในส่วนถัดไป เราจะตั้งค่า MCP Toolbox สำหรับฐานข้อมูล
5. ตั้งค่า MCP Toolbox สำหรับฐานข้อมูล
MCP Toolbox สำหรับฐานข้อมูลคือเซิร์ฟเวอร์ MCP แบบโอเพนซอร์สสำหรับฐานข้อมูล ซึ่งออกแบบมาโดยคำนึงถึงคุณภาพระดับองค์กรและระดับการใช้งานจริง ซึ่งช่วยให้คุณพัฒนาเครื่องมือได้ง่ายขึ้น เร็วขึ้น และปลอดภัยยิ่งขึ้นด้วยการจัดการความซับซ้อนต่างๆ เช่น การจัดกลุ่มการเชื่อมต่อ การตรวจสอบสิทธิ์ และอื่นๆ
กล่องเครื่องมือช่วยคุณสร้างเครื่องมือ Gen AI ที่ช่วยให้ตัวแทนเข้าถึงข้อมูลในฐานข้อมูลได้ กล่องเครื่องมือมีฟีเจอร์ต่อไปนี้
- การพัฒนาที่ง่ายขึ้น: ผสานรวมเครื่องมือกับเอเจนต์โดยใช้โค้ดไม่ถึง 10 บรรทัด นำเครื่องมือไปใช้ซ้ำระหว่างเอเจนต์หรือเฟรมเวิร์กหลายรายการ และติดตั้งใช้งานเครื่องมือเวอร์ชันใหม่ได้ง่ายขึ้น
- ประสิทธิภาพที่ดีขึ้น: แนวทางปฏิบัติแนะนำ เช่น การรวมการเชื่อมต่อ การตรวจสอบสิทธิ์ และอื่นๆ
- การรักษาความปลอดภัยที่ดียิ่งขึ้น: การตรวจสอบสิทธิ์แบบผสานรวมเพื่อการเข้าถึงข้อมูลที่ปลอดภัยยิ่งขึ้น
- ความสามารถในการสังเกตแบบครบวงจร: เมตริกและการติดตามที่พร้อมใช้งานพร้อมการรองรับ OpenTelemetry ในตัว
Toolbox อยู่ระหว่างเฟรมเวิร์กการจัดระเบียบของแอปพลิเคชันกับฐานข้อมูล โดยมี Control Plane ที่ใช้ในการแก้ไข แจกจ่าย หรือเรียกใช้เครื่องมือ ซึ่งจะช่วยให้คุณจัดการเครื่องมือได้ง่ายขึ้นด้วยการจัดหาตำแหน่งส่วนกลางสำหรับจัดเก็บและอัปเดตเครื่องมือ ทำให้คุณแชร์เครื่องมือระหว่างตัวแทนและแอปพลิเคชัน รวมถึงอัปเดตเครื่องมือเหล่านั้นได้โดยไม่ต้องติดตั้งแอปพลิเคชันใหม่

คุณจะเห็นว่าฐานข้อมูลหนึ่งที่ MCP Toolbox for Databases รองรับคือ Cloud SQL และเราได้จัดสรรฐานข้อมูลดังกล่าวในส่วนก่อนหน้าแล้ว
การติดตั้งกล่องเครื่องมือ
เปิดเทอร์มินัล Cloud Shell แล้วสร้างโฟลเดอร์ชื่อ mcp-toolbox
mkdir mcp-toolbox
ไปที่โฟลเดอร์ mcp-toolbox ผ่านคำสั่งที่แสดงด้านล่าง
cd mcp-toolbox
ติดตั้ง MCP Toolbox สำหรับฐานข้อมูลเวอร์ชันไบนารีผ่านสคริปต์ที่ระบุไว้ด้านล่าง คำสั่งด้านล่างนี้ใช้สำหรับ Linux แต่หากคุณใช้ Mac หรือ Windows โปรดตรวจสอบว่าคุณดาวน์โหลดไบนารีที่ถูกต้อง ดูหน้าเผยแพร่สำหรับระบบปฏิบัติการและสถาปัตยกรรมของคุณ แล้วดาวน์โหลดไบนารีที่ถูกต้อง
export VERSION=1.13.1
curl -L -o toolbox https://storage.googleapis.com/mcp-toolbox-for-databases/v$VERSION/linux/amd64/toolbox
chmod +x toolbox
ตอนนี้เรามีกล่องเครื่องมือเวอร์ชันไบนารีพร้อมใช้งานแล้ว มาตรวจสอบกันว่าเราได้ตั้งค่าไบนารีของกล่องเครื่องมืออย่างถูกต้องและระบุเวอร์ชันที่ถูกต้อง
ป้อนคำสั่งต่อไปนี้เพื่อตรวจสอบเวอร์ชันของกล่องเครื่องมือ
./toolbox -v
ขั้นตอนถัดไปคือการกำหนดค่ากล่องเครื่องมือด้วยแหล่งข้อมูลและการกำหนดค่าอื่นๆ
การกำหนดค่า tools.yaml
วิธีหลักในการกำหนดค่า Toolbox คือผ่านไฟล์ tools.yaml สร้างไฟล์ชื่อ tools.yaml ในโฟลเดอร์เดียวกัน เช่น mcp-toolbox โดยมีเนื้อหาดังที่แสดงด้านล่าง
คุณใช้โปรแกรมแก้ไข nano ที่มีอยู่ใน Cloud Shell ได้ คำสั่ง nano มีดังนี้ "nano tools.yaml"
อย่าลืมแทนที่ค่า YOUR_PROJECT_ID ด้วยรหัสโปรเจ็กต์ Google Cloud
kind: source
name: my-cloud-sql-source
type: cloud-sql-postgres
project: YOUR_PROJECT_ID
region: us-central1
instance: hoteldb-instance
database: postgres
user: postgres
password: postgres
---
kind: tool
name: search-hotels-by-name
type: 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 || '%';
---
kind: tool
name: search-hotels-by-location
type: 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;
---
kind: toolset
name: my_first_toolset
tools:
- search-hotels-by-name
- search-hotels-by-location
มาทำความเข้าใจไฟล์โดยย่อกัน
Sourcesแสดงถึงแหล่งข้อมูลต่างๆ ที่เครื่องมือโต้ตอบด้วยได้ แหล่งที่มาแสดงถึงแหล่งข้อมูลที่เครื่องมือโต้ตอบด้วยได้ คุณกำหนดSourcesเป็นแผนที่ได้ในส่วนแหล่งที่มาของไฟล์ tools.yaml โดยปกติแล้ว การกำหนดค่าแหล่งข้อมูลจะมีข้อมูลที่จำเป็นในการเชื่อมต่อและโต้ตอบกับฐานข้อมูล ในกรณีของเรา เราได้กำหนดค่าแหล่งข้อมูลเดียวที่ชี้ไปยังอินสแตนซ์ Cloud SQL สำหรับ PostgreSQL พร้อมข้อมูลเข้าสู่ระบบ ดูข้อมูลเพิ่มเติมได้ที่ข้อมูลอ้างอิงแหล่งที่มาToolsกำหนดการดำเนินการที่เอเจนต์สามารถทำได้ เช่น การอ่านและการเขียนไปยังแหล่งที่มา เครื่องมือแสดงถึงการดำเนินการที่เอเจนต์ทำได้ เช่น การเรียกใช้คำสั่ง SQL คุณกำหนดToolsเป็นแผนที่ได้ในส่วนเครื่องมือของไฟล์ tools.yaml โดยปกติแล้ว เครื่องมือจะต้องมีแหล่งข้อมูลเพื่อดำเนินการ ในกรณีของเรา เราจะกําหนดเครื่องมือ 2 อย่าง ได้แก่search-hotels-by-nameและsearch-hotels-by-locationพร้อมระบุแหล่งที่มาที่เครื่องมือทํางาน รวมถึง SQL และพารามิเตอร์ ดูข้อมูลเพิ่มเติมได้ที่ข้อมูลอ้างอิงเครื่องมือ- สุดท้ายคือ
Toolsetซึ่งช่วยให้คุณกำหนดกลุ่มเครื่องมือที่ต้องการโหลดพร้อมกันได้ ซึ่งอาจมีประโยชน์ในการกำหนดกลุ่มต่างๆ ตามตัวแทนหรือแอปพลิเคชัน ในกรณีของเรา เรามีชุดเครื่องมือเดียวที่ชื่อmy_first_toolsetซึ่งมีเครื่องมือ 2 อย่างที่เรากำหนดไว้
บันทึกไฟล์ tools.yaml ในโปรแกรมแก้ไข nano โดยทำตามขั้นตอนต่อไปนี้
- กด
Ctrl + O(คำสั่ง "เขียนออก") - โดยจะขอให้คุณยืนยัน "ชื่อไฟล์ที่จะเขียน" เพียงกด
Enter - ตอนนี้ให้กด
Ctrl + Xเพื่อออก
เรียกใช้เซิร์ฟเวอร์ MCP Toolbox สำหรับฐานข้อมูล
เรียกใช้คำสั่งต่อไปนี้ (จากโฟลเดอร์ mcp-toolbox) เพื่อเริ่มเซิร์ฟเวอร์
./toolbox --config "tools.yaml"
คุณควรเห็นเอาต์พุตที่เซิร์ฟเวอร์เชื่อมต่อกับแหล่งข้อมูลของเราได้ และโหลดชุดเครื่องมือและเครื่องมือต่างๆ ตัวอย่างเอาต์พุตมีดังนี้
2026-09-26T14:00:35.898358+05:30 INFO "Starting MCP Toolbox for Databases version 1.13.1+binary.darwin.arm64.e14cda6"
2026-09-26T14:00:39.571556+05:30 INFO "Initialized 1 sources: my-cloud-sql-source"
2026-09-26T14:00:39.571634+05:30 INFO "Initialized 0 authServices: "
2026-09-26T14:00:39.571648+05:30 INFO "Initialized 0 embeddingModels: "
2026-09-26T14:00:39.571728+05:30 INFO "Initialized 2 tools: search-hotels-by-name, search-hotels-by-location"
2026-09-26T14:00:39.571745+05:30 INFO "Initialized 0 prompts: "
2026-09-26T14:00:39.571756+05:30 INFO "Initialized 0 resources: "
2026-09-26T14:00:39.571767+05:30 INFO "Initialized 0 resource templates: "
2026-09-26T14:00:39.571851+05:30 INFO "Initialized 2 groups: my_first_toolset, default"
2026-09-26T14:00:39.571905+05:30 WARN "wildcard (*) allows any website to access the primitives. This creates a security risk regardless of whether you are in a production or local development environment. Recommended to use --allowed-origins with specific local addresses."
2026-09-26T14:00:39.571939+05:30 WARN "wildcard (*) hosts allow any domain to access this resource, making it vulnerable to DNS rebinding attacks regardless of whether you are in a production or local development environment. For improved security, use the --allowed-hosts flag to specify trusted domains."
2026-09-26T14:00:39.572261+05:30 INFO "Server ready to serve!"
เซิร์ฟเวอร์ MCP Toolbox จะทำงานในพอร์ต 5000 โดยค่าเริ่มต้น หากพบว่ามีการใช้พอร์ต 5000 อยู่แล้ว คุณสามารถใช้พอร์ตอื่น (เช่น 7000) ตามคำสั่งที่แสดงด้านล่าง โปรดใช้ 7000 แทนพอร์ต 5000 ในคำสั่งถัดไป
./toolbox --config "tools.yaml" --port 7000
มาใช้ Cloud Shell เพื่อทดสอบกัน
คลิกตัวอย่างเว็บใน Cloud Shell ดังที่แสดงด้านล่าง
คลิกเปลี่ยนพอร์ตและตั้งค่าพอร์ตเป็น 5000 ตามที่แสดงด้านล่าง แล้วคลิกเปลี่ยนและแสดงตัวอย่าง

ซึ่งควรแสดงผลลัพธ์ต่อไปนี้

ทดสอบเครื่องมือผ่าน UI ของ MCP Toolbox สำหรับฐานข้อมูล
กล่องเครื่องมือมีอินเทอร์เฟซแบบภาพ (UI ของกล่องเครื่องมือ) เพื่อโต้ตอบกับเครื่องมือโดยตรงด้วยการแก้ไขพารามิเตอร์ จัดการส่วนหัว และดำเนินการเรียกใช้ ทั้งหมดนี้อยู่ใน UI เว็บที่เรียบง่าย
หากต้องการทดสอบ คุณสามารถเรียกใช้คำสั่งก่อนหน้าที่เราใช้เพื่อเปิดใช้เซิร์ฟเวอร์กล่องเครื่องมือด้วยตัวเลือก --ui
โดยปิดอินสแตนซ์ก่อนหน้าของเซิร์ฟเวอร์ MCP Toolbox สำหรับฐานข้อมูลที่คุณอาจใช้งานอยู่ แล้วป้อนคำสั่งต่อไปนี้
./toolbox --config "tools.yaml" --ui
คุณควรเห็นเอาต์พุตที่เซิร์ฟเวอร์เชื่อมต่อกับแหล่งข้อมูลของเราได้ และโหลดชุดเครื่องมือและเครื่องมือต่างๆ ตัวอย่างเอาต์พุตแสดงอยู่ด้านล่าง และคุณจะเห็นว่าเอาต์พุตจะระบุว่า UI ของกล่องเครื่องมือพร้อมใช้งานแล้ว
2026-09-26T14:01:17.208487+05:30 INFO "Starting MCP Toolbox for Databases version 1.13.1+binary.darwin.arm64.e14cda6"
2026-09-26T14:01:20.823447+05:30 INFO "Initialized 1 sources: my-cloud-sql-source"
2026-09-26T14:01:20.82353+05:30 INFO "Initialized 0 authServices: "
2026-09-26T14:01:20.823545+05:30 INFO "Initialized 0 embeddingModels: "
2026-09-26T14:01:20.823629+05:30 INFO "Initialized 2 tools: search-hotels-by-name, search-hotels-by-location"
2026-09-26T14:01:20.823649+05:30 INFO "Initialized 0 prompts: "
2026-09-26T14:01:20.82366+05:30 INFO "Initialized 0 resources: "
2026-09-26T14:01:20.823671+05:30 INFO "Initialized 0 resource templates: "
2026-09-26T14:01:20.823745+05:30 INFO "Initialized 2 groups: my_first_toolset, default"
2026-09-26T14:01:20.823795+05:30 WARN "wildcard (*) allows any website to access the primitives. This creates a security risk regardless of whether you are in a production or local development environment. Recommended to use --allowed-origins with specific local addresses."
2026-09-26T14:01:20.823829+05:30 WARN "wildcard (*) hosts allow any domain to access this resource, making it vulnerable to DNS rebinding attacks regardless of whether you are in a production or local development environment. For improved security, use the --allowed-hosts flag to specify trusted domains."
2026-09-26T14:01:20.824193+05:30 INFO "Server ready to serve!"
2026-09-26T14:01:20.824231+05:30 INFO "Toolbox UI is up and running at: http://127.0.0.1:5000/ui"
คลิก URL ของ UI และตรวจสอบว่าคุณมี
/ui
ที่ส่วนท้ายของ URL (หากคุณเรียกใช้คำสั่งนี้ใน Cloud Shell การเปลี่ยนเส้นทางของเบราว์เซอร์จะทำให้ไม่มี /ui อยู่ที่ส่วนท้าย) ซึ่งจะแสดง UI ดังที่แสดงด้านล่าง

คลิกตัวเลือกเครื่องมือทางด้านซ้ายเพื่อดูเครื่องมือที่กำหนดค่าไว้ ในกรณีนี้ควรมี 2 รายการ ได้แก่ search-hotels-by-name และ search-hotels-by-location ดังที่แสดงด้านล่าง

เพียงคลิกเครื่องมือใดเครื่องมือหนึ่ง (search-hotels-by-location) ระบบจะแสดงหน้าเว็บให้คุณทดสอบเครื่องมือโดยระบุค่าพารามิเตอร์ที่จำเป็น แล้วคลิกเรียกใช้เครื่องมือเพื่อดูผลลัพธ์ ตัวอย่างการเรียกใช้แสดงอยู่ด้านล่าง

หากเรากลับไปดูแผนภาพจากก่อนหน้านี้ (ดังที่แสดงด้านล่าง) ตอนนี้เราได้ตั้งค่าฐานข้อมูลและเซิร์ฟเวอร์ MCP เสร็จแล้ว และมี 2 เส้นทางอยู่ตรงหน้า

- หากต้องการดูวิธีกำหนดค่าเซิร์ฟเวอร์ MCP เป็นเทอร์มินัล / IDE ที่มี AI ช่วย โปรดไปที่ขั้นตอนที่ 6 ซึ่งจะครอบคลุมวิธีที่เราผสานรวมเซิร์ฟเวอร์ MCP Toolbox เข้ากับ
Gemini CLI - หากต้องการทำความเข้าใจวิธีใช้
Agent Development Kit (ADK) using Pythonเพื่อเขียน Agent ของคุณเองที่ใช้ MCP Server Toolbox เป็นเครื่องมือในการตอบคำถามที่เกี่ยวข้องกับชุดข้อมูล ให้ไปที่ขั้นตอนที่ 7 และ 8
6. การผสานรวม MCP Toolbox ใน Antigravity CLI
Antigravity CLI เป็นอินเทอร์เฟซผู้ใช้เทอร์มินัล (TUI) ที่ใช้งานง่ายของ Antigravity โดยจะนำความสามารถหลักของ Agent เช่นเดียวกับ Antigravity (เช่น การให้เหตุผลแบบหลายขั้นตอน การแก้ไขหลายไฟล์ การเรียกใช้เครื่องมือ และประวัติการสนทนา) มาไว้ในเทอร์มินัลของคุณโดยตรง โดยใช้ได้ทั้งกับงานเขียนโค้ดและงานที่ไม่ต้องเขียนโค้ด โดยจะผสานรวมกับเครื่องมือต่างๆ รวมถึงรองรับเซิร์ฟเวอร์ MCP
เนื่องจากเรามี MCP Server ที่ใช้งานได้แล้ว เป้าหมายในส่วนนี้คือการกำหนดค่า MCP Toolbox สำหรับเซิร์ฟเวอร์ฐานข้อมูลใน Antigravity CLI แล้วใช้ Antigravity CLI เพื่อสื่อสารกับข้อมูลของเรา
ขั้นตอนแรกของเราคือการยืนยันว่าคุณมีกล่องเครื่องมือที่พร้อมใช้งานในเทอร์มินัล Cloud Shell อย่างน้อย 1 เทอร์มินัล หากคุณเรียกใช้ในพอร์ตเริ่มต้น 5000 อินเทอร์เฟซเซิร์ฟเวอร์ MCP จะพร้อมใช้งานที่ปลายทาง http://localhost:5000/mcp
เปิดเทอร์มินัลใหม่และสร้างโฟลเดอร์ชื่อ my-gemini-cli-project ดังนี้ ไปที่โฟลเดอร์ my-gemini-cli-project ด้วย
mkdir my-agy-cli-project
cd my-agy-cli-project
ป้อนคำสั่งต่อไปนี้เพื่อเพิ่มเซิร์ฟเวอร์ MCP ลงในรายการเซิร์ฟเวอร์ MCP ที่กำหนดค่าใน Antigravity CLI
agy mcp add "MCPToolbox" "http://localhost:5000/mcp"
คุณสามารถตรวจสอบรายการเซิร์ฟเวอร์ MCP ปัจจุบันที่กำหนดค่าใน Antigravity CLI ได้โดยใช้คำสั่งต่อไปนี้
agy mcp list
คุณควรเห็น MCPToolbox ที่เรากำหนดค่าพร้อมเครื่องหมายถูกสีเขียวข้างๆ ซึ่งแสดงว่า Gemini CLI เชื่อมต่อกับเซิร์ฟเวอร์ MCP ได้
NAME TYPE STATUS COMMAND/URL
MCPToolbox http enabled http://localhost:5000/mcp
ก่อนที่เราจะเปิดตัว Gemini CLI คุณอาจต้องตั้งค่าตัวแปรสภาพแวดล้อมต่อไปนี้เพื่อช่วยให้ Gemini CLI กำหนดเส้นทางคำขอไปยังโมเดลที่ถูกต้อง
export GOOGLE_CLOUD_PROJECT=YOUR_GOOGLE_CLOUD_PROJECT_ID
export GOOGLE_CLOUD_LOCATION=global
จากเทอร์มินัลเดียวกัน ให้ตรวจสอบว่าคุณอยู่ในโฟลเดอร์ my-agy-cli-project เปิดใช้ Antigravity CLI ผ่านคำสั่ง agy
ซึ่งจะแสดงอินเทอร์เฟซ Antigravity CLI คุณใช้คําสั่ง /mcp เพื่อดูรายการเซิร์ฟเวอร์ MCP และเครื่องมือได้ เช่น ตัวอย่างเอาต์พุตต่อไปนี้
MCP Servers
Plugins (~/.gemini/config/plugins)
> ✓ MCPToolbox Tools: search-hotels-by-location, search-hotels-by-name
ตอนนี้คุณสามารถป้อนพรอมต์ต่อไปนี้ได้
Which hotels are there in Basel?Tell me more about the Hyatt Regency?
คุณจะเห็นว่าคำค้นหาข้างต้นจะทำให้ Antigravity CLI เลือกเครื่องมือที่เหมาะสมจาก MCPToolbox โดยจะขอสิทธิ์จากคุณเพื่อเรียกใช้เครื่องมือ ให้สิทธิ์ที่จำเป็น แล้วคุณจะเห็นว่าระบบแสดงผลลัพธ์จากฐานข้อมูล
7. การเขียน Agent ด้วย Agent Development Kit (ADK)
ติดตั้ง Agent Development Kit (ADK)
เปิดแท็บเทอร์มินัลใหม่ใน Cloud Shell แล้วสร้างโฟลเดอร์ชื่อ my-agents ดังนี้ ไปที่โฟลเดอร์ my-agents ด้วย
mkdir my-agents
cd my-agents
ตอนนี้เรามาสร้างสภาพแวดล้อม Python เสมือนโดยใช้ venv ดังนี้
python -m venv .venv
เปิดใช้งานสภาพแวดล้อมเสมือนจริงดังนี้
source .venv/bin/activate
ติดตั้งแพ็กเกจ ADK และ MCP Toolbox สำหรับฐานข้อมูลพร้อมกับทรัพยากร Dependency ของ Langchain ดังนี้
pip install google-adk toolbox-core
ตอนนี้คุณจะเรียกใช้ยูทิลิตี adk ได้ดังนี้
adk
โดยจะแสดงรายการคำสั่งให้คุณ
$ adk
Usage: adk [OPTIONS] COMMAND [ARGS]...
Agent Development Kit CLI tools.
Options:
--version Show the version and exit.
--help Show this message and exit.
Commands:
api_server Starts a FastAPI server for agents.
conformance Conformance testing tools for ADK.
create Creates a new app in the current folder with prepopulated...
deploy Deploys agent to hosted environments.
eval Evaluates an agent given the eval sets.
eval_set Manage Eval Sets.
migrate ADK migration commands.
optimize Optimizes the root agent instructions using the GEPA...
run Runs an agent.
telemetry Manage telemetry settings.
test Runs pytest on agent test JSON files under the specified...
web Starts a FastAPI server with Web UI for agents.
การสร้างแอปพลิเคชัน Agent ตัวแรก
ตอนนี้เราจะใช้ adk เพื่อสร้างโครงร่างสําหรับแอปพลิเคชันตัวแทนโรงแรมผ่านคําสั่ง adk create โดยมีชื่อแอปเป็น **(hotel_agent_app)**ตามที่ระบุไว้ด้านล่าง
adk create hotel_agent_app
ทำตามขั้นตอนและเลือกตัวเลือกต่อไปนี้
- เลือก
gemini-3.8-flashโมเดลเพื่อเลือกโมเดลสำหรับเอเจนต์รูท - เลือก
Vertex AIสำหรับแบ็กเอนด์ - ระบบจะแสดงรหัสโปรเจ็กต์ Google เริ่มต้น เลือก
- ระบบจะแสดงภูมิภาคของโปรเจ็กต์ Google Cloud ปัจจุบัน ตรวจสอบว่าคุณพิมพ์
global
Choose a model for the root agent:
1. gemini-3.5-flash
2. gemini-3.8-flash
3. Other models (fill later)
Choose model (1, 2, 3): 2
1. Google AI
2. Vertex AI
3. Login with Google
Choose a backend (1, 2, 3): 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 [YOUR_PROJECT_ID]:
Enter Google Cloud region [us-central1]: global
Agent created in <YOUR_HOME_FOLDER>/my-agents/hotel_agent_app:
- .env
- .gitignore
- __init__.py
- agent.py
สังเกตโฟลเดอร์ที่สร้างเทมเพลตเริ่มต้นและไฟล์ที่จำเป็นสำหรับเอเจนต์ คุณดูไฟล์ได้โดยใช้คำสั่ง ls -al ในเทอร์มินัลในไดเรกทอรี <YOUR_HOME_FOLDER>/my-agents/hotel_agent_app
โดยเริ่มจากไฟล์ .env ระบบได้สร้างไฟล์นี้ไว้แล้วตามที่กล่าวถึงก่อนหน้านี้ และคุณสามารถดูเนื้อหาของไฟล์ที่แสดงด้านล่างได้
GOOGLE_GENAI_USE_ENTERPRISE=1
GOOGLE_CLOUD_PROJECT=YOUR_GOOGLE_PROJECT_ID
GOOGLE_CLOUD_LOCATION=YOUR_GOOGLE_PROJECT_REGION
ค่าเหล่านี้บ่งบอกว่าเราจะใช้ Gemini ผ่าน Vertex AI พร้อมกับค่าที่เกี่ยวข้องสำหรับรหัสโปรเจ็กต์ Google Cloud และตำแหน่ง
จากนั้นเราก็มีไฟล์ __init__.py ที่ทำเครื่องหมายโฟลเดอร์เป็นโมดูลและมีคำสั่งเดียวที่นำเข้า Agent จากไฟล์ agent.py
from . import agent
สุดท้าย มาดูไฟล์ agent.py กัน เนื้อหาจะแสดงอยู่ด้านล่าง
from google.adk.agents.llm_agent import Agent
root_agent = Agent(
model='gemini-3.8-flash',
name='root_agent',
description='A helpful assistant for user questions.',
instruction='Answer user questions to the best of your knowledge',
)
นี่คือ Agent ที่ง่ายที่สุดที่คุณเขียนได้ด้วย ADK จากหน้าเอกสารประกอบ ADK, Agent คือหน่วยการดำเนินการแบบสแตนด์อโลนที่ออกแบบมาให้ทำงานโดยอัตโนมัติเพื่อให้บรรลุเป้าหมายที่เฉพาะเจาะจง Agent สามารถทำงาน โต้ตอบกับผู้ใช้ ใช้เครื่องมือภายนอก และประสานงานกับ Agent อื่นๆ ได้
โดยเฉพาะอย่างยิ่ง LLMAgent ซึ่งมักจะใช้ชื่อแทนว่า Agent จะใช้โมเดลภาษาขนาดใหญ่ (LLM) เป็นเครื่องมือหลักในการทำความเข้าใจภาษาธรรมชาติ การให้เหตุผล การวางแผน การสร้างคำตอบ และการตัดสินใจแบบไดนามิกว่าจะดำเนินการอย่างไรหรือจะใช้เครื่องมือใด ทำให้เหมาะสำหรับงานที่ยืดหยุ่นและเน้นภาษา ดูข้อมูลเพิ่มเติมเกี่ยวกับเอเจนต์ LLM ที่นี่
มาแก้ไขโค้ดสำหรับ agent.py ดังนี้
from google.adk.agents.llm_agent import Agent
root_agent = Agent(
model='gemini-3.8-flash',
name='root_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.',
)
ทดสอบแอป Agent ในเครื่อง
จากหน้าต่างเทอร์มินัลที่มีอยู่ ให้ป้อนคำสั่งต่อไปนี้ ตรวจสอบว่าคุณอยู่ในโฟลเดอร์หลัก (my-agents) ที่มีโฟลเดอร์ hotel_agent_app
adk web
ตัวอย่างการดำเนินการแสดงอยู่ด้านล่าง
...
INFO: Started server process [61397]
INFO: Waiting for application startup.
+-----------------------------------------------------------------------------+
| ADK Web Server started |
| |
| For local testing, access at http://127.0.0.1:8000. |
+-----------------------------------------------------------------------------+
INFO: Application startup complete.
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
คลิกลิงก์สุดท้าย แล้วลิงก์นั้นจะแสดงคอนโซลเว็บเพื่อทดสอบเอเจนต์ คุณควรเห็นสิ่งต่อไปนี้เปิดขึ้นในเบราว์เซอร์ดังที่แสดงด้านล่าง

โปรดสังเกตว่าระบบได้ระบุ hotel_agent_app ที่ด้านซ้ายบนแล้ว ตอนนี้คุณก็เริ่มสนทนากับ Agent ได้แล้ว ป้อนพรอมต์ 2-3 รายการเพื่อสอบถามเกี่ยวกับเมือง ตัวอย่างการสนทนาแสดงอยู่ด้านล่าง

คุณปิดกระบวนการที่ทำงานในเทอร์มินัล Cloud Shell ได้ (Ctrl-C)
อีกวิธีในการทดสอบ Agent คือใช้คำสั่ง adk run ดังที่ระบุไว้ด้านล่างจากโฟลเดอร์ my-agents
adk run hotel_agent_app
ลองใช้คำสั่งนี้ แล้วคุณจะสนทนากับ Agent ผ่านบรรทัดคำสั่ง (เทอร์มินัล) ได้ พิมพ์ exit เพื่อปิดการสนทนา
8. การเชื่อมต่อ Agent กับเครื่องมือ
ตอนนี้เรารู้วิธีเขียน Agent และทดสอบในเครื่องแล้ว เราจะเชื่อมต่อ Agent นี้กับเครื่องมือ ในบริบทของ ADK เครื่องมือแสดงถึงความสามารถเฉพาะที่มอบให้แก่ AI Agent ซึ่งช่วยให้ AI Agent ดำเนินการและโต้ตอบกับโลกภายนอกความสามารถหลักในการสร้างข้อความและการให้เหตุผล
ในกรณีนี้ เราจะติดตั้งเครื่องมือที่กำหนดค่าไว้ใน MCP Toolbox สำหรับฐานข้อมูลให้กับ Agent ของเรา
แก้ไขไฟล์ agent.py ด้วยโค้ดต่อไปนี้ โปรดทราบว่าเราใช้พอร์ตเริ่มต้น 5000 ในโค้ด แต่หากคุณใช้หมายเลขพอร์ตอื่น โปรดใช้หมายเลขนั้น
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-3.8-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,
)
ตอนนี้เราสามารถทดสอบ Agent ที่จะดึงข้อมูลจริงจากฐานข้อมูล PostgreSQL ที่กำหนดค่าด้วย MCP Toolbox สำหรับฐานข้อมูลได้แล้ว
โดยทำตามลำดับต่อไปนี้
เปิดใช้ MCP Toolbox สำหรับฐานข้อมูลในเทอร์มินัลหนึ่งของ Cloud Shell คุณอาจมีเซิร์ฟเวอร์ที่ทำงานในเครื่องที่พอร์ต 5000 อยู่แล้วเนื่องจากเราได้ทดสอบไปก่อนหน้านี้ หากยังไม่ได้ติดตั้ง ให้เรียกใช้คำสั่งต่อไปนี้ (จากโฟลเดอร์ mcp-toolbox) เพื่อเริ่มเซิร์ฟเวอร์
./toolbox --config "tools.yaml"
คุณควรเห็นเอาต์พุตที่เซิร์ฟเวอร์เชื่อมต่อกับแหล่งข้อมูลของเราได้ และโหลดชุดเครื่องมือและเครื่องมือต่างๆ
เมื่อเซิร์ฟเวอร์ MCP เริ่มทำงานสำเร็จแล้ว ให้เปิดใช้เอเจนต์ในเทอร์มินัลอื่นตามที่เราได้ทำไปก่อนหน้านี้ผ่านคำสั่ง adk run (จากโฟลเดอร์ my-agents) ที่แสดงด้านล่าง คุณยังใช้คำสั่ง adk web ได้ด้วยหากต้องการ
$ adk run hotel_agent_app/
...
Running agent hotel_agent, type exit to exit.
[user]: what can you do for me?
[hotel_agent]: I can help you search for and find information about hotels! Specifically, I can:
* **Find hotels in a specific city or location:** Look up available hotels, sorted by price from least to most expensive.
* **Search for hotels by name:** Get details on a specific hotel you're interested in.
Feel free to tell me where you're planning to stay or which hotel you'd like to look up!
[user]: I would like to search for hotels?
[hotel_agent]: I'd be happy to help!
Where are you planning to travel, or is there a specific hotel name you have in mind?
[user]: I am planning to travel to Basel
[hotel_agent]: Here are the hotels available in **Basel**, listed from least to most expensive:
1. **Holiday Inn Basel**
* **Price Tier:** Upper Midscale
* **Available Dates:** April 9, 2024 – April 24, 2024
2. **Hyatt Regency Basel**
* **Price Tier:** Upper Upscale
* **Available Dates:** April 2, 2024 – April 20, 2024
3. **Hilton Basel**
* **Price Tier:** Luxury
* **Available Dates:** April 20, 2024 – April 22, 2024
Would you like more details about any of these hotels, or do you have specific travel dates in mind?
[user]:
. . .
โปรดสังเกตว่าตอนนี้เอเจนต์ใช้เครื่องมือ 2 อย่างที่เรากำหนดค่าไว้ใน MCP Toolbox สำหรับฐานข้อมูล (search-hotels-by-name และ search-hotels-by-location) และให้ตัวเลือกที่ถูกต้องแก่เรา จากนั้นจะดึงข้อมูลจากฐานข้อมูลอินสแตนซ์ PostgreSQL และจัดรูปแบบการตอบกลับได้อย่างราบรื่น
ซึ่งเป็นการสิ้นสุดการพัฒนาและการทดสอบ Hotel Agent ในเครื่องที่เราสร้างขึ้นโดยใช้ Agent Development Kit (ADK) และขับเคลื่อนด้วยเครื่องมือที่เรากำหนดค่าไว้ใน MCP Toolbox สำหรับฐานข้อมูล
9. (ไม่บังคับ) การติดตั้งใช้งาน MCP Toolbox สำหรับฐานข้อมูลและ Agent ใน Cloud Run
ในส่วนก่อนหน้า เราใช้เทอร์มินัล Cloud Shell เพื่อเปิดใช้เซิร์ฟเวอร์ MCP Toolbox และทดสอบเครื่องมือกับ Agent ซึ่งทำงานในเครื่องในสภาพแวดล้อม Cloud Shell
คุณมีตัวเลือกในการติดตั้งใช้งานทั้งเซิร์ฟเวอร์ MCP Toolbox และ Agent กับบริการของ Google Cloud ที่สามารถโฮสต์แอปพลิเคชันเหล่านี้ให้เราได้
การโฮสต์เซิร์ฟเวอร์ MCP Toolbox ใน Cloud Run
ก่อนอื่น เราจะเริ่มต้นด้วยเซิร์ฟเวอร์ MCP Toolbox และโฮสต์ใน Cloud Run จากนั้นเราก็จะมีปลายทางสาธารณะที่ผสานรวมกับแอปพลิเคชันอื่นๆ และ/หรือแอปพลิเคชันตัวแทนได้ด้วย ดูวิธีการโฮสต์ใน Cloud Run ได้ที่นี่ เราจะไปดูขั้นตอนสำคัญกันเลย
เปิดใช้เทอร์มินัล Cloud Shell ใหม่หรือใช้เทอร์มินัล Cloud Shell ที่มีอยู่ ไปที่โฟลเดอร์ mcp-toolbox ซึ่งมีไบนารี toolbox และ tools.yaml อยู่
เรียกใช้คำสั่งต่อไปนี้ (มีคำอธิบายสำหรับแต่ละคำสั่ง)
ตั้งค่าตัวแปร PROJECT_ID ให้ชี้ไปยังรหัสโปรเจ็กต์ Google Cloud
export PROJECT_ID="YOUR_GOOGLE_CLOUD_PROJECT_ID"
จากนั้น ตรวจสอบว่าได้เปิดใช้บริการ Google Cloud ต่อไปนี้ในโปรเจ็กต์แล้ว
gcloud services enable run.googleapis.com \
cloudbuild.googleapis.com \
artifactregistry.googleapis.com \
iam.googleapis.com \
secretmanager.googleapis.com
มาสร้างบัญชีบริการแยกต่างหากที่จะทำหน้าที่เป็นข้อมูลประจำตัวสำหรับบริการกล่องเครื่องมือที่เราจะติดตั้งใช้งานใน Google Cloud Run กัน นอกจากนี้ เรายังตรวจสอบว่าบัญชีบริการนี้มีบทบาทที่ถูกต้อง เช่น ความสามารถในการเข้าถึง Secret Manager และสื่อสารกับ 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
เราจะอัปโหลดไฟล์ tools.yaml เป็นข้อมูลลับ และเนื่องจากเราต้องติดตั้ง Toolbox ใน Cloud Run เราจึงจะใช้รูปภาพคอนเทนเนอร์ล่าสุดสำหรับ Toolbox และตั้งค่าดังกล่าวในตัวแปร IMAGE
gcloud secrets create tools --data-file=tools.yaml
export IMAGE=us-central1-docker.pkg.dev/database-toolbox/toolbox/toolbox:latest
ขั้นตอนสุดท้ายในคำสั่งการติดตั้งใช้งานที่คุ้นเคยกับ Cloud Run
gcloud run deploy toolbox \
--image $IMAGE \
--service-account toolbox-identity \
--region us-central1 \
--set-secrets "/app/tools.yaml=tools:latest" \
--args="--config=/app/tools.yaml","--address=0.0.0.0","--port=8080" \
--allow-unauthenticated
ซึ่งจะเริ่มกระบวนการติดตั้งใช้งานเซิร์ฟเวอร์กล่องเครื่องมือด้วย tools.yaml ที่กำหนดค่าไว้ใน Cloud Run เมื่อติดตั้งใช้งานสำเร็จ คุณจะเห็นข้อความที่คล้ายกับข้อความต่อไปนี้
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
ตอนนี้คุณสามารถไปที่ Service URL ที่ระบุไว้ด้านบนในเบราว์เซอร์ได้แล้ว โดยควรแสดงข้อความ "Hello World" ที่เราเห็นก่อนหน้านี้
นอกจากนี้ คุณยังไปที่ Cloud Run จากคอนโซล Google Cloud ได้ด้วย และจะเห็นบริการกล่องเครื่องมือพร้อมใช้งานในรายการบริการใน Cloud Run
หมายเหตุ: หากยังต้องการเรียกใช้ Hotel Agent ในเครื่องและเชื่อมต่อกับบริการ Cloud Run ที่เพิ่งติดตั้งใช้งาน คุณเพียงแค่ต้องทำการเปลี่ยนแปลงอย่างเดียวในไฟล์ my-agents/hotel_agent_app/agent.py
แทนที่จะใช้
toolbox = ToolboxSyncClient("http://127.0.0.1:5000")
เปลี่ยนเป็น URL ของบริการ Cloud Run ดังที่ระบุไว้ด้านล่าง
toolbox = ToolboxSyncClient("CLOUD_RUN_SERVICE_URL")
ทดสอบแอปพลิเคชันตัวแทนโดยใช้ adk run หรือ adk web ตามที่เราเห็นก่อนหน้านี้
การติดตั้งใช้งานแอปตัวแทนโรงแรมใน Cloud Run
ขั้นตอนแรกคือตรวจสอบว่าคุณได้ทำการเปลี่ยนแปลงใน my-agents/hotel_agent_app/agent.py ตามที่อธิบายไว้ข้างต้นเพื่อให้ชี้ไปยัง URL ของบริการกล่องเครื่องมือที่ทำงานใน Cloud Run ไม่ใช่โฮสต์ในเครื่อง
ในเทอร์มินัล Cloud Shell ใหม่หรือเซสชันเทอร์มินัลที่มีอยู่ ให้ตรวจสอบว่าคุณอยู่ในสภาพแวดล้อมเสมือนของ Python ที่ถูกต้องซึ่งเราได้ตั้งค่าไว้ก่อนหน้านี้
ก่อนอื่น ให้สร้างไฟล์ requirements.txt ในโฟลเดอร์ my-agents/hotel_agent_app ดังที่แสดงด้านล่าง
google-adk
toolbox-core
ไปที่โฟลเดอร์ my-agents แล้วตั้งค่าตัวแปรสภาพแวดล้อมต่อไปนี้ก่อน
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_ENTERPRISE=1
สุดท้ายนี้ มาติดตั้งใช้งานแอปพลิเคชัน Agent ใน Cloud Run ผ่านคำสั่ง adk deploy cloud_run ตามที่ระบุไว้ด้านล่าง หากระบบขอให้คุณอนุญาตการเรียกใช้ที่ไม่ผ่านการตรวจสอบสิทธิ์ไปยังบริการ โปรดระบุ "y" เป็นค่าในตอนนี้
adk deploy cloud_run \
--project=$GOOGLE_CLOUD_PROJECT \
--region=$GOOGLE_CLOUD_LOCATION \
--service_name=$SERVICE_NAME \
--app_name=$APP_NAME \
--with_ui \
$AGENT_PATH
ซึ่งจะเริ่มกระบวนการติดตั้งใช้งานแอปพลิเคชันตัวแทนโรงแรมใน Cloud Run โดยจะอัปโหลดแหล่งที่มา จัดแพ็กเกจเป็นคอนเทนเนอร์ Docker พุชไปยัง Artifact Registry แล้วจึงทำให้บริการใช้งานได้ใน Cloud Run การดำเนินการนี้อาจใช้เวลาสักครู่ โปรดอดใจรอ
คุณควรเห็นข้อความที่คล้ายกับข้อความด้านล่าง
Start generating Cloud Run source files in /tmp/cloud_run_deploy_src/20250905_132636
Copying agent source code...
Copying agent source code completed.
Creating Dockerfile...
Creating Dockerfile complete: /tmp/cloud_run_deploy_src/20250905_132636/Dockerfile
Deploying to Cloud Run...
Building using Dockerfile and deploying container to Cloud Run service [hotels-service] in project [YOUR_PROJECT_ID] region [us-central1]
- Building and deploying... Uploading sources.
- Uploading sources...
. Building Container...
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/d1f7e76b-0587-4bb6-b9c0-bb4360c07aa0?project=415
458962931]. f
OK Creating Revision...
OK Routing traffic...
Done.
Service [hotels-service] revision [hotels-service-00003-hrl] has been deployed and is serving 100 percent of traffic.
Service URL: <YOUR_CLOUDRUN_APP_URL>
INFO: Display format: "none"
Cleaning up the temp folder: /tmp/cloud_run_deploy_src/20250905_132636
เมื่อติดตั้งใช้งานสำเร็จแล้ว คุณจะได้รับค่าสำหรับ URL ของบริการ ซึ่งคุณจะเข้าถึงได้ในเบราว์เซอร์เพื่อดูเว็บแอปพลิเคชันเดียวกันที่อนุญาตให้คุณแชทกับตัวแทนโรงแรม ดังที่เราเห็นก่อนหน้านี้ในการตั้งค่าในพื้นที่
10. ล้างข้อมูล
คุณควรลบทรัพยากรที่เราสร้างขึ้นในเวิร์กช็อปนี้เพื่อหลีกเลี่ยงการเรียกเก็บเงินอย่างต่อเนื่องในบัญชี Google Cloud เราจะลบอินสแตนซ์ Cloud SQL และหากคุณติดตั้งใช้งานกล่องเครื่องมือและแอปโรงแรมใน Cloud Run เราก็จะลบบริการเหล่านั้นด้วย
ตรวจสอบว่าได้ตั้งค่าตัวแปรสภาพแวดล้อมต่อไปนี้อย่างถูกต้องตามโปรเจ็กต์และภูมิภาคของคุณ
export PROJECT_ID="YOUR_PROJECT_ID"
export REGION="YOUR_REGION"
คำสั่ง 2 รายการต่อไปนี้จะลบบริการ Cloud Run ที่เราได้ติดตั้งใช้งาน
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
คำสั่งต่อไปนี้จะลบอินสแตนซ์ Cloud SQL
gcloud sql instances delete hoteldb-instance
11. ขอแสดงความยินดี
ขอแสดงความยินดี คุณสร้าง Travel Agent โดยใช้ Agent Development Kit (ADK) ที่ใช้ MCP Toolbox สำหรับฐานข้อมูลเรียบร้อยแล้ว นอกจากนี้ คุณยังได้เรียนรู้วิธีเชื่อมต่อ Agent กับฐานข้อมูลของคุณเอง และติดตั้ง Agent และกล่องเครื่องมือใน Cloud Run (ไม่บังคับ)