डेटाबेस और एजेंट डेवलपमेंट किट (ADK) के लिए एमसीपी टूलबॉक्स का इस्तेमाल करके, ट्रैवल एजेंट बनाएं

1. परिचय

इस कोडलैब में, Agent Development Kit (ADK) का इस्तेमाल करके एक एजेंट बनाया जाएगा. यह एजेंट, डेटाबेस के लिए MCP टूलबॉक्स का इस्तेमाल करेगा.

कोडलैब के ज़रिए, आपको यहां दिया गया तरीका अपनाना होगा:

  1. PostgreSQL के लिए Cloud SQL डेटाबेस उपलब्ध कराएं. इसमें होटल का डेटाबेस और सैंपल डेटा होगा.
  2. डेटाबेस के लिए एमसीपी टूलबॉक्स सेट अप करें, जो डेटा का ऐक्सेस देता है.
  3. Agent Development Kit (ADK) का इस्तेमाल करके, एक एजेंट डिज़ाइन और डेवलप करें. यह एजेंट, लोगों की क्वेरी के जवाब देने के लिए MCP Toolbox का इस्तेमाल करेगा.
  4. Cloud Run सेवा के ज़रिए, एजेंट और डेटाबेस के लिए MCP Toolbox को स्थानीय तौर पर और Google Cloud पर टेस्ट करने के विकल्पों के बारे में जानें.

33b79273f207ebd7.png

आपको क्या करना होगा

  • ऐसा एजेंट डिज़ाइन करो, बनाओ, और डिप्लॉय करो जो किसी जगह के होटल के बारे में उपयोगकर्ता की क्वेरी के जवाब दे या नाम के हिसाब से होटल खोजे.

आपको क्या सीखने को मिलेगा

  • Cloud SQL for PostgreSQL डेटाबेस को उपलब्ध कराना और उसमें सैंपल डेटा डालना.
  • Cloud SQL for PostgreSQL डेटाबेस इंस्टेंस के लिए, MCP Toolbox for Databases को सेट अप करें.
  • उपयोगकर्ता के सवालों के जवाब देने के लिए, Agent Development Kit (ADK) का इस्तेमाल करके एजेंट को डिज़ाइन और डेवलप करें.
  • लोकल एनवायरमेंट में, एजेंट और डेटाबेस के लिए एमसीपी टूलबॉक्स को आज़माएं.
  • (ज़रूरी नहीं) एजेंट और डेटाबेस के लिए एमसीपी टूलबॉक्स को Google Cloud में डिप्लॉय करें.

आपको इन चीज़ों की ज़रूरत होगी

  • Chrome वेब ब्राउज़र
  • Gmail खाता
  • ऐसा Cloud प्रोजेक्ट जिसमें बिलिंग की सुविधा चालू हो

यह कोडलैब, सभी लेवल के डेवलपर के लिए बनाया गया है. इसमें शुरुआती डेवलपर भी शामिल हैं. इसमें सैंपल ऐप्लिकेशन में Python का इस्तेमाल किया गया है. हालांकि, इसके लिए Python की जानकारी होना ज़रूरी नहीं है. इसमें दिए गए कॉन्सेप्ट को समझने के लिए, कोड को पढ़ने की बुनियादी क्षमता काफ़ी होगी.

2. शुरू करने से पहले

प्रोजेक्ट बनाना

  1. Google Cloud Console में, प्रोजेक्ट चुनने वाले पेज पर, Google Cloud प्रोजेक्ट चुनें या बनाएं.
  2. पक्का करें कि आपके Cloud प्रोजेक्ट के लिए बिलिंग चालू हो. किसी प्रोजेक्ट के लिए बिलिंग चालू है या नहीं, यह देखने का तरीका जानें .
  3. आपको Cloud Shell का इस्तेमाल करना होगा. यह Google Cloud में चलने वाला कमांड-लाइन एनवायरमेंट है. इसमें bq पहले से लोड होता है. Google Cloud Console में सबसे ऊपर मौजूद, Cloud Shell चालू करें पर क्लिक करें.

Cloud Shell बटन की इमेज चालू करें

  1. Cloud Shell से कनेक्ट होने के बाद, यह देखने के लिए कि आपकी पुष्टि हो चुकी है और प्रोजेक्ट को आपके प्रोजेक्ट आईडी पर सेट किया गया है, इस कमांड का इस्तेमाल करें:
gcloud auth list
  1. यह पुष्टि करने के लिए कि gcloud कमांड को आपके प्रोजेक्ट के बारे में पता है, Cloud Shell में यह कमांड चलाएं.
gcloud config list project
  1. अगर आपका प्रोजेक्ट सेट नहीं है, तो इसे सेट करने के लिए इस निर्देश का इस्तेमाल करें:
gcloud config set project <YOUR_PROJECT_ID>
  1. यहां दिए गए निर्देश का इस्तेमाल करके, ज़रूरी एपीआई चालू करें. इसमें कुछ मिनट लग सकते हैं. इसलिए, कृपया इंतज़ार करें.
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 कमांड के बजाय, कंसोल का इस्तेमाल करके भी ऐसा किया जा सकता है. इसके लिए, हर प्रॉडक्ट को खोजें या इस लिंक का इस्तेमाल करें.

अगर कोई एपीआई छूट जाता है, तो उसे लागू करने के दौरान कभी भी चालू किया जा सकता है.

gcloud कमांड और उनके इस्तेमाल के बारे में जानने के लिए, दस्तावेज़ देखें.

3. Cloud SQL इंस्टेंस बनाना

हम अपने होटलों के डेटा को सेव करने के लिए, Google Cloud SQL for PostgreSQL इंस्टेंस का इस्तेमाल करेंगे. Cloud SQL for PostgreSQL, पूरी तरह से मैनेज की गई डेटाबेस सेवा है. इसकी मदद से, Google Cloud Platform पर अपने मिलते-जुलते PostgreSQL डेटाबेस को सेट अप किया जा सकता है. साथ ही, उन्हें बनाए रखा जा सकता है, मैनेज किया जा सकता है, और सही तरीके से चलाया जा सकता है.

इंस्टेंस बनाने के लिए, Cloud Shell में यह कमांड चलाएं:

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

इस कमांड को पूरा होने में करीब तीन से पांच मिनट लगते हैं. कमांड के पूरा होने के बाद, आपको एक आउटपुट दिखेगा. इससे पता चलेगा कि कमांड पूरी हो गई है. साथ ही, आपको अपने Cloud SQL इंस्टेंस की जानकारी भी दिखेगी. जैसे, नाम, DATABASE_VERSION, LOCATION वगैरह.

4. होटल का डेटाबेस तैयार करना

अब हमारा काम, होटल एजेंट के लिए कुछ सैंपल डेटा बनाना होगा.

Cloud Console में Cloud SQL पेज पर जाएं.आपको hoteldb-instance तैयार और बनाया गया दिखेगा. नीचे दिए गए उदाहरण में दिखाए गए तरीके से, इंस्टेंस के नाम (hoteldb-instance) पर क्लिक करें:

28c93e70f03d6619.png

Cloud SQL के बाईं ओर मौजूद मेन्यू में जाकर, Cloud SQL Studio मेन्यू विकल्प पर जाएं. इसे यहां दिखाया गया है:

4f074ce3d774f4a.png

इससे आपको Cloud SQL Studio में साइन इन करने के लिए कहा जाएगा. इसके ज़रिए हम कुछ SQL कमांड देंगे. डेटाबेस विकल्प के लिए postgres चुनें. साथ ही, उपयोगकर्ता और पासवर्ड, दोनों के लिए इस्तेमाल की जाने वाली वैल्यू postgres है. AUTHENTICATE पर क्लिक करें.

आइए, सबसे पहले नीचे दिए गए स्कीमा के हिसाब से होटल टेबल बनाते हैं. Cloud SQL Studio के किसी एक एडिटर पैनल में, यह एसक्यूएल क्वेरी चलाएं:

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
);

अब होटल टेबल में सैंपल डेटा डालते हैं. नीचे दिए गए एसक्यूएल को लागू करें:

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');

आइए, नीचे दिखाए गए तरीके से SELECT SQL चलाकर डेटा की पुष्टि करें:

SELECT * FROM hotels;

आपको होटल टेबल में कई रिकॉर्ड दिखेंगे, जैसा कि यहां दिखाया गया है:

6e8f7cbbffd4c284.png

हमने Cloud SQL इंस्टेंस को सेट अप करने की प्रोसेस पूरी कर ली है और अपना सैंपल डेटा बना लिया है. अगले सेक्शन में, हम डेटाबेस के लिए एमसीपी टूलबॉक्स को सेट अप करेंगे.

5. डेटाबेस के लिए एमसीपी टूलबॉक्स सेट अप करना

डेटाबेस के लिए एमसीपी टूलबॉक्स, डेटाबेस के लिए एक ओपन सोर्स एमसीपी सर्वर है. इसे एंटरप्राइज़-ग्रेड और प्रोडक्शन-क्वालिटी को ध्यान में रखकर डिज़ाइन किया गया है. यह आपको टूल को आसानी से, तेज़ी से, और ज़्यादा सुरक्षित तरीके से डेवलप करने की सुविधा देता है. इसके लिए, यह कनेक्शन पूलिंग, पुष्टि करने की प्रोसेस वगैरह जैसी मुश्किलों को मैनेज करता है.

टूलबॉक्स की मदद से, जनरेटिव एआई टूल बनाए जा सकते हैं. इससे आपके एजेंट, डेटाबेस में मौजूद डेटा को ऐक्सेस कर पाते हैं. टूलबॉक्स में ये सुविधाएं मिलती हैं:

  • आसान डेवलपमेंट: अपने एजेंट में टूल को 10 से कम लाइनों के कोड में इंटिग्रेट करें. साथ ही, एक से ज़्यादा एजेंट या फ़्रेमवर्क के बीच टूल का फिर से इस्तेमाल करें. इसके अलावा, टूल के नए वर्शन को आसानी से डिप्लॉय करें.
  • बेहतर परफ़ॉर्मेंस: कनेक्शन पूलिंग, पुष्टि करने की प्रोसेस वगैरह जैसे सबसे सही तरीके.
  • बेहतर सुरक्षा: आपके डेटा को ज़्यादा सुरक्षित तरीके से ऐक्सेस करने के लिए, इंटिग्रेटेड ऑथराइज़ेशन
  • एंड-टू-एंड निगरानी: OpenTelemetry के साथ काम करने की सुविधा के साथ, बॉक्स से बाहर की मेट्रिक और ट्रेसिंग.

टूलबॉक्स, आपके ऐप्लिकेशन के ऑर्केस्ट्रेशन फ़्रेमवर्क और आपके डेटाबेस के बीच मौजूद होता है. यह एक कंट्रोल प्लेन उपलब्ध कराता है, जिसका इस्तेमाल टूल में बदलाव करने, उन्हें डिस्ट्रिब्यूट करने या उन्हें शुरू करने के लिए किया जाता है. यह आपके टूल को मैनेज करने की प्रोसेस को आसान बनाता है. इसके लिए, यह आपको टूल को सेव और अपडेट करने के लिए एक जगह उपलब्ध कराता है. इससे एजेंट और ऐप्लिकेशन के बीच टूल शेयर किए जा सकते हैं. साथ ही, ऐप्लिकेशन को फिर से डिप्लॉय किए बिना उन टूल को अपडेट किया जा सकता है.

5bf26eeecad2277d.png

आपको पता चल सकता है कि डेटाबेस के लिए MCP Toolbox के साथ काम करने वाले डेटाबेस में से एक Cloud SQL है. हमने इसे पिछले सेक्शन में उपलब्ध कराया है.

टूलबॉक्स इंस्टॉल करना

Cloud Shell टर्मिनल खोलें और mcp-toolbox नाम का फ़ोल्डर बनाएं.

mkdir mcp-toolbox

नीचे दिए गए कमांड का इस्तेमाल करके, mcp-toolbox फ़ोल्डर पर जाएं:

cd mcp-toolbox

यहां दी गई स्क्रिप्ट का इस्तेमाल करके, डेटाबेस के लिए एमसीपी टूलबॉक्स का बाइनरी वर्शन इंस्टॉल करें. यहां दिया गया निर्देश Linux के लिए है. हालांकि, अगर Mac या Windows का इस्तेमाल किया जा रहा है, तो पक्का करें कि सही बाइनरी डाउनलोड की जा रही हो. अपने ऑपरेटिंग सिस्टम और आर्किटेक्चर के लिए रिलीज़ पेज देखें और सही बाइनरी डाउनलोड करें.

export VERSION=1.1.0
curl -L -o toolbox https://storage.googleapis.com/mcp-toolbox-for-databases/v$VERSION/linux/amd64/toolbox
chmod +x toolbox

अब हमारे पास टूलबॉक्स का बाइनरी वर्शन है, जिसका इस्तेमाल किया जा सकता है. आइए, पुष्टि करें कि हमने टूलबॉक्स बाइनरी को सही तरीके से सेट अप किया है और यह सही वर्शन दिखा रहा है.

Toolbox का वर्शन पता करने के लिए, यह कमांड डालें:

./toolbox -v

इससे कुछ ऐसा आउटपुट प्रिंट होना चाहिए:

toolbox version 1.1.0+binary.linux.amd64.466aef0

अगला चरण, हमारे डेटा सोर्स और अन्य कॉन्फ़िगरेशन के साथ टूलबॉक्स को कॉन्फ़िगर करना है.

tools.yaml फ़ाइल को कॉन्फ़िगर करना

Toolbox को कॉन्फ़िगर करने का मुख्य तरीका, tools.yaml फ़ाइल का इस्तेमाल करना है. उसी फ़ोल्डर यानी mcp-toolbox में tools.yaml नाम की एक फ़ाइल बनाएं. इसका कॉन्टेंट यहां दिया गया है.

Cloud Shell में उपलब्ध nano एडिटर का इस्तेमाल किया जा सकता है. 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

आइए, फ़ाइल के बारे में कम शब्दों में जानते हैं:

  1. Sources आपके अलग-अलग डेटा सोर्स को दिखाता है. टूल इनके साथ इंटरैक्ट कर सकता है. सोर्स, एक ऐसे डेटा सोर्स को दिखाता है जिससे कोई टूल इंटरैक्ट कर सकता है. अपनी tools.yaml फ़ाइल के sources सेक्शन में, Sources को मैप के तौर पर तय किया जा सकता है. आम तौर पर, सोर्स कॉन्फ़िगरेशन में डेटाबेस से कनेक्ट करने और उससे इंटरैक्ट करने के लिए ज़रूरी जानकारी होती है. इस उदाहरण में, हमने एक ऐसे सोर्स को कॉन्फ़िगर किया है जो क्रेडेंशियल के साथ, PostgreSQL के लिए Cloud SQL इंस्टेंस की ओर इशारा करता है. ज़्यादा जानकारी के लिए, सोर्स रेफ़रंस देखें.
  2. Tools यह तय करता है कि एजेंट कौन-कौनसी कार्रवाइयां कर सकता है. जैसे, किसी सोर्स से जानकारी पढ़ना और उसमें जानकारी लिखना. टूल, ऐसी कार्रवाई को दिखाता है जो आपका एजेंट कर सकता है. जैसे, SQL स्टेटमेंट चलाना. tools.yaml फ़ाइल के टूल सेक्शन में, Tools को मैप के तौर पर तय किया जा सकता है. आम तौर पर, किसी टूल को कार्रवाई करने के लिए सोर्स की ज़रूरत होती है. इस उदाहरण में, हम दो टूल तय कर रहे हैं: search-hotels-by-name और search-hotels-by-location. साथ ही, हम उस सोर्स के बारे में बता रहे हैं जिस पर यह काम कर रहा है. इसके अलावा, हम एसक्यूएल और पैरामीटर के बारे में भी बता रहे हैं. ज़्यादा जानकारी के लिए, टूल का रेफ़रंस देखें.
  3. आखिर में, हमारे पास Toolset है. इसकी मदद से, टूल के ऐसे ग्रुप बनाए जा सकते हैं जिन्हें एक साथ लोड किया जा सकता है. इसकी मदद से, एजेंट या ऐप्लिकेशन के आधार पर अलग-अलग ग्रुप तय किए जा सकते हैं. हमारे मामले में, हमारे पास my_first_toolset नाम का एक टूलसेट है. इसमें वे दो टूल शामिल हैं जिन्हें हमने तय किया है.

नीचे दिए गए तरीके का इस्तेमाल करके, nano एडिटर में tools.yaml फ़ाइल सेव करें:

  • Ctrl + O ("लिखकर बताएं" कमांड) दबाएं.
  • यह आपसे "फ़ाइल का नाम लिखें" की पुष्टि करने के लिए कहेगा. बस Enter दबाएं.
  • अब बाहर निकलने के लिए, Ctrl + X दबाएं.

डेटाबेस के लिए MCP Toolbox सर्वर चलाना

सर्वर शुरू करने के लिए, mcp-toolbox फ़ोल्डर से यह कमांड चलाएं:

./toolbox --config "tools.yaml"

आपको ऐसा आउटपुट दिखेगा जिसमें सर्वर, हमारे डेटा सोर्स से कनेक्ट हो गया है. साथ ही, टूलसेट और टूल लोड हो गए हैं. यहां आउटपुट का एक उदाहरण दिया गया है:

2026-04-25T09:08:00.738271-07:00 INFO "Initialized 1 sources: my-cloud-sql-source" 
2026-04-25T09:08:00.738397-07:00 INFO "Initialized 0 authServices: " 
2026-04-25T09:08:00.738405-07:00 INFO "Initialized 0 embeddingModels: " 
2026-04-25T09:08:00.738453-07:00 INFO "Initialized 2 tools: search-hotels-by-name, search-hotels-by-location" 
2026-04-25T09:08:00.738497-07:00 INFO "Initialized 2 toolsets: my_first_toolset, default" 
2026-04-25T09:08:00.738504-07:00 INFO "Initialized 0 prompts: " 
2026-04-25T09:08:00.738517-07:00 INFO "Initialized 1 promptsets: default" 
2026-04-25T09:08:00.738566-07:00 WARN "wildcard (`*`) allows all origin to access the resource and is not secure. Use it with cautious for public, non-sensitive data, or during local development. Recommended to use `--allowed-origins` flag" 
2026-04-25T09:08:00.738625-07:00 WARN "wildcard (`*`) allows all hosts to access the resource and is not secure. Use it with cautious for public, non-sensitive data, or during local development. Recommended to use `--allowed-hosts` flag to prevent DNS rebinding attacks" 
2026-04-25T09:08:00.738909-07:00 INFO "Server ready to serve!" 

MCP Toolbox सर्वर, डिफ़ॉल्ट रूप से 5000 पोर्ट पर चलता है. अगर आपको लगता है कि पोर्ट 5000 का इस्तेमाल पहले से ही किया जा रहा है, तो नीचे दिए गए कमांड के मुताबिक, किसी दूसरे पोर्ट (जैसे कि 7000) का इस्तेमाल करें. इसलिए, बाद के निर्देशों में 5000 पोर्ट के बजाय 7000 का इस्तेमाल करें.

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

आइए, Cloud Shell का इस्तेमाल करके इसकी जांच करें.

नीचे दिए गए तरीके से, Cloud Shell में वेब प्रीव्यू पर क्लिक करें:

b8a52769f092e5d0.png

पोर्ट बदलें पर क्लिक करें और पोर्ट को नीचे दिखाए गए तरीके से 5000 पर सेट करें. इसके बाद, बदलें और झलक देखें पर क्लिक करें.

3ccac41b1f8996c5.png

इससे यह आउटपुट मिलना चाहिए:

e2a7d3ddaac0c3be.png

डेटाबेस के लिए MCP टूलबॉक्स के यूज़र इंटरफ़ेस (यूआई) के ज़रिए टूल की जांच करना

टूलबॉक्स, टूल के साथ सीधे तौर पर इंटरैक्ट करने के लिए विज़ुअल इंटरफ़ेस (टूलबॉक्स यूज़र इंटरफ़ेस) उपलब्ध कराता है. इसमें पैरामीटर में बदलाव करने, हेडर मैनेज करने, और कॉल एक्ज़ीक्यूट करने की सुविधा मिलती है. ये सभी काम, वेब यूज़र इंटरफ़ेस (यूआई) में किए जा सकते हैं.

अगर आपको इसकी जांच करनी है, तो टूलबॉक्स सर्वर को लॉन्च करने के लिए इस्तेमाल की गई पिछली कमांड को --ui विकल्प के साथ चलाएं.

इसके लिए, एमसीपी टूलबॉक्स फ़ॉर डेटाबेस सर्वर के पिछले इंस्टेंस को बंद करें. इसके बाद, यह निर्देश दें:

./toolbox --config "tools.yaml" --ui

आपको ऐसा आउटपुट दिखेगा जिसमें सर्वर, हमारे डेटा सोर्स से कनेक्ट हो गया है. साथ ही, टूलसेट और टूल लोड हो गए हैं. यहां एक सैंपल आउटपुट दिया गया है. इसमें बताया गया है कि टूलबॉक्स का यूज़र इंटरफ़ेस (यूआई) काम कर रहा है.

2026-04-25T09:17:45.54415-07:00 INFO "Initialized 1 sources: my-cloud-sql-source" 
2026-04-25T09:17:45.544225-07:00 INFO "Initialized 0 authServices: " 
2026-04-25T09:17:45.544239-07:00 INFO "Initialized 0 embeddingModels: " 
2026-04-25T09:17:45.544298-07:00 INFO "Initialized 2 tools: search-hotels-by-location, search-hotels-by-name" 
2026-04-25T09:17:45.544345-07:00 INFO "Initialized 2 toolsets: default, my_first_toolset" 
2026-04-25T09:17:45.544365-07:00 INFO "Initialized 0 prompts: " 
2026-04-25T09:17:45.544393-07:00 INFO "Initialized 1 promptsets: default" 
2026-04-25T09:17:45.544439-07:00 WARN "wildcard (`*`) allows all origin to access the resource and is not secure. Use it with cautious for public, non-sensitive data, or during local development. Recommended to use `--allowed-origins` flag" 
2026-04-25T09:17:45.54448-07:00 WARN "wildcard (`*`) allows all hosts to access the resource and is not secure. Use it with cautious for public, non-sensitive data, or during local development. Recommended to use `--allowed-hosts` flag to prevent DNS rebinding attacks" 
2026-04-25T09:17:45.544887-07:00 INFO "Server ready to serve!" 
2026-04-25T09:17:45.544908-07:00 INFO "Toolbox UI is up and running at: http://127.0.0.1:5000/ui"

यूज़र इंटरफ़ेस (यूआई) यूआरएल पर क्लिक करें और पक्का करें कि आपके पास

/ui

यूआरएल के आखिर में (अगर इसे Cloud Shell में चलाया जा रहा है, तो ब्राउज़र रीडायरेक्शन की वजह से आखिर में /ui नहीं दिखेगा). इससे आपको नीचे दिखाया गया यूज़र इंटरफ़ेस (यूआई) दिखेगा:

463ae8f13fea0755.png

कॉन्फ़िगर किए गए टूल देखने के लिए, बाईं ओर मौजूद टूल विकल्प पर क्लिक करें. हमारे मामले में, ये दो टूल होने चाहिए, यानी कि search-hotels-by-name और search-hotels-by-location. जैसा कि यहां दिखाया गया है:

309b9147d516806f.png

किसी एक टूल (search-hotels-by-location) पर क्लिक करें. इसके बाद, आपको एक पेज दिखेगा. इस पेज पर, ज़रूरी पैरामीटर की वैल्यू डालकर टूल को आज़माएं. इसके बाद, नतीजे देखने के लिए टूल चलाएं पर क्लिक करें. यहां सैंपल रन दिखाया गया है:

7901f2e1c8ce2f9b.png

डेटाबेस के लिए MCP टूलकिट में, टूल की पुष्टि करने और उन्हें आज़माने का एक Pythonic तरीका भी बताया गया है. इसके बारे में यहां बताया गया है.

अगर हम पहले वाले डायग्राम (नीचे दिखाया गया है) पर फिर से गौर करें, तो हमने अब डेटाबेस और एमसीपी सर्वर को सेट अप कर लिया है. अब हमारे पास दो विकल्प हैं:

f749a119601aa67d.png

  1. एआई की मदद वाले टर्मिनल / आईडीई में एमसीपी सर्वर को कॉन्फ़िगर करने का तरीका जानने के लिए, छठे चरण पर जाएं. इसमें बताया जाएगा कि हम अपने एमसीपी टूलबॉक्स सर्वर को Gemini CLI में कैसे इंटिग्रेट करते हैं.
  2. Agent Development Kit (ADK) using Python का इस्तेमाल करने का तरीका जानने के लिए, सातवें और आठवें चरण पर जाएं. यहां आपको ऐसे एजेंट लिखने का तरीका भी मिलेगा जो MCP Server Toolbox का इस्तेमाल टूल के तौर पर कर सकते हैं. साथ ही, आपको डेटासेट से जुड़े सवालों के जवाब देने का तरीका भी मिलेगा.

6. MCP टूलबॉक्स को Gemini CLI में इंटिग्रेट करना

Gemini CLI, एआई की मदद से काम करने वाला ओपन-सोर्स एजेंट है. इसकी मदद से, Gemini की सुविधा सीधे अपने टर्मिनल में पाई जा सकती है. इसका इस्तेमाल कोडिंग और बिना कोडिंग वाले टास्क, दोनों के लिए किया जा सकता है. यह कई टूल के साथ इंटिग्रेट किया गया है. साथ ही, इसमें एमसीपी सर्वर के लिए सहायता भी मिलती है.

हमारे पास पहले से ही एक एमसीपी सर्वर है. इसलिए, इस सेक्शन में हमारा मकसद Gemini CLI में डेटाबेस के लिए एमसीपी टूलबॉक्स सर्वर को कॉन्फ़िगर करना है. इसके बाद, Gemini CLI का इस्तेमाल करके अपने डेटा से बातचीत करना है.

हमारा पहला चरण यह पुष्टि करना होगा कि आपके पास Cloud Shell टर्मिनल में से किसी एक में टूलबॉक्स चालू है या नहीं. मान लें कि इसे डिफ़ॉल्ट पोर्ट 5000 पर चलाया जा रहा है. ऐसे में, एमसीपी सर्वर इंटरफ़ेस इस एंडपॉइंट पर उपलब्ध होगा: http://localhost:5000/mcp.

नया टर्मिनल खोलें और my-gemini-cli-project नाम का फ़ोल्डर बनाएं. इसके लिए, यह तरीका अपनाएं. my-gemini-cli-project फ़ोल्डर पर भी जाएं.

mkdir my-gemini-cli-project
cd my-gemini-cli-project

Gemini CLI में कॉन्फ़िगर किए गए एमसीपी सर्वर की सूची में एमसीपी सर्वर जोड़ने के लिए, यह कमांड दें.

gemini mcp add --scope="project" --transport="http" "MCPToolbox" "http://localhost:5000/mcp"

Gemini CLI में कॉन्फ़िगर किए गए एमसीपी सर्वर की मौजूदा सूची देखने के लिए, यह कमांड इस्तेमाल करें:

gemini mcp list

आपको एमसीपी टूलबॉक्स दिखना चाहिए. इसके बगल में हरे रंग का सही का निशान होना चाहिए. इससे पता चलता है कि Gemini सीएलआई, एमसीपी सर्वर से कनेक्ट हो गया है.

Configured MCP servers:

✓ MCPToolbox: http://localhost:5000/mcp (http) - Connected

Gemini CLI लॉन्च करने से पहले, हो सकता है कि आपको यहां दी गई एनवायरमेंट वैरिएबल सेट करनी हों. इससे Gemini CLI को आपके अनुरोधों को सही मॉडल पर भेजने में मदद मिलेगी.

export GOOGLE_CLOUD_PROJECT=YOUR_GOOGLE_CLOUD_PROJECT_ID
export GOOGLE_CLOUD_LOCATION=global

उसी टर्मिनल से, पक्का करें कि आप my-gemini-cli-project फ़ोल्डर में हों. gemini कमांड का इस्तेमाल करके, Gemini CLI लॉन्च करें.

इससे Gemini CLI इंटरफ़ेस खुल जाएगा. अब आपको दिखेगा कि इसमें एक एमसीपी सर्वर कॉन्फ़िगर किया गया है. एमसीपी सर्वर और टूल की सूची देखने के लिए, /mcp list कमांड का इस्तेमाल करें. उदाहरण के लिए, यहां एक सैंपल आउटपुट दिया गया है:

fbb76c759736fce7.png

अब इनमें से कोई भी प्रॉम्प्ट दिया जा सकता है:

  1. Which hotels are there in Basel?
  2. Tell me more about the Hyatt Regency?

आपको पता चलेगा कि ऊपर दी गई क्वेरी के लिए, Gemini CLI, MCPToolbox से सही टूल चुनता है. यह टूल को चलाने के लिए, आपसे अनुमति मांगेगा. इसे ज़रूरी अनुमति दें. इसके बाद, आपको दिखेगा कि डेटाबेस से नतीजे दिखाए जा रहे हैं.

7. Agent Development Kit (ADK) की मदद से एजेंट लिखना

Agent Development Kit (ADK) इंस्टॉल करना

Cloud Shell में नया टर्मिनल टैब खोलें और नीचे दिए गए तरीके से my-agents नाम का फ़ोल्डर बनाएं. my-agents फ़ोल्डर पर भी जाएं.

mkdir my-agents
cd my-agents

अब हम venv का इस्तेमाल करके, वर्चुअल Python एनवायरमेंट बनाते हैं. इसके लिए, यह तरीका अपनाएं:

python -m venv .venv

वर्चुअल एनवायरमेंट को इस तरह चालू करें:

source .venv/bin/activate

langchain की डिपेंडेंसी के साथ-साथ, ADK और डेटाबेस के लिए MCP Toolbox पैकेज को इस तरह इंस्टॉल करें:

pip install google-adk toolbox-core

अब 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 agent template.
  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 optimizer.
  run          Runs an interactive CLI for a certain agent.
  web          Starts a FastAPI server with Web UI for agents.

पहली एजेंट ऐप्लिकेशन बनाना

अब हम adk का इस्तेमाल करके, Hotel Agent Application के लिए एक स्केफ़ोल्डिंग बनाएंगे. इसके लिए, हम adk create कमांड का इस्तेमाल करेंगे. ऐप्लिकेशन का नाम **(hotel_agent_app)**होगा.

adk create hotel_agent_app

यह तरीका अपनाएं और इनमें से कोई विकल्प चुनें:

  • रूट एजेंट के लिए मॉडल चुनने वाला Gemini मॉडल.
  • बैकएंड के लिए Vertex AI को चुनें.
  • आपको अपना डिफ़ॉल्ट Google प्रोजेक्ट आईडी और क्षेत्र दिखेगा. डिफ़ॉल्ट सेटिंग को ही चुनें.
Choose a model for the root agent:
1. gemini-2.5-flash
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 [YOUR_PROJECT_ID]: 
Enter Google Cloud region [us-central1]: 

Agent created in <YOUR_HOME_FOLDER>/my-agents/hotel_agent_app:
- .env
- __init__.py
- agent.py

उस फ़ोल्डर को देखें जिसमें एजेंट के लिए डिफ़ॉल्ट टेंप्लेट और ज़रूरी फ़ाइलें बनाई गई हैं. <YOUR_HOME_FOLDER>/my-agents/hotel_agent_app डायरेक्ट्री में मौजूद टर्मिनल में, ls -al कमांड का इस्तेमाल करके फ़ाइलें देखी जा सकती हैं.

सबसे पहले, .env फ़ाइल है. यह फ़ाइल पहले ही बनाई जा चुकी है. यहां आपको फ़ाइल का कॉन्टेंट दिखेगा:

GOOGLE_GENAI_USE_VERTEXAI=1
GOOGLE_CLOUD_PROJECT=YOUR_GOOGLE_PROJECT_ID
GOOGLE_CLOUD_LOCATION=YOUR_GOOGLE_PROJECT_REGION

इन वैल्यू से पता चलता है कि हम Vertex AI के ज़रिए Gemini का इस्तेमाल करेंगे. साथ ही, Google Cloud प्रोजेक्ट आईडी और जगह की वैल्यू का इस्तेमाल करेंगे.

इसके बाद, हमारे पास __init__.py फ़ाइल है. यह फ़ोल्डर को मॉड्यूल के तौर पर मार्क करती है. इसमें एक ऐसा स्टेटमेंट होता है जो agent.py फ़ाइल से एजेंट को इंपोर्ट करता है.

from . import agent

आखिर में, आइए agent.py फ़ाइल के बारे में जानते हैं. कॉन्टेंट यहां दिया गया है:

from google.adk.agents import Agent

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

यह सबसे आसान एजेंट है, जिसे ADK की मदद से लिखा जा सकता है. एडीके के दस्तावेज़ पेज के मुताबिक, एजेंट एक ऐसी यूनिट होती है जो अपने-आप काम करती है. इसे खास लक्ष्यों को पूरा करने के लिए डिज़ाइन किया गया है. एजेंट, टास्क पूरे कर सकते हैं, लोगों से इंटरैक्ट कर सकते हैं, बाहरी टूल का इस्तेमाल कर सकते हैं, और अन्य एजेंट के साथ मिलकर काम कर सकते हैं.

खास तौर पर, LLMAgent, जिसे आम तौर पर एजेंट के तौर पर जाना जाता है, आम बोलचाल की भाषा को समझने, तर्क करने, प्लान बनाने, जवाब जनरेट करने, और यह तय करने के लिए कि आगे कैसे बढ़ना है या किन टूल का इस्तेमाल करना है, लार्ज लैंग्वेज मॉडल (एलएलएम) का इस्तेमाल अपने मुख्य इंजन के तौर पर करता है. इससे ये एजेंट, भाषा से जुड़े कामों को आसानी से पूरा कर पाते हैं. एलएलएम एजेंट के बारे में ज़्यादा जानने के लिए, यहां जाएं.

आइए, agent.py के कोड में इस तरह बदलाव करें:

from google.adk.agents import Agent

root_agent = Agent(
    model='gemini-2.5-flash',
    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.',
)

एजेंट ऐप्लिकेशन को स्थानीय तौर पर टेस्ट करना

मौजूदा टर्मिनल विंडो से, यह निर्देश दें. पक्का करें कि आप (my-agents) पैरंट फ़ोल्डर में हों, जिसमें hotel_agent_app फ़ोल्डर मौजूद है.

adk web

यहां एक सैंपल दिखाया गया है:

INFO:     Started server process [1478]
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)

आखिरी लिंक पर क्लिक करें. इससे एजेंट की जांच करने के लिए, वेब कंसोल खुल जाएगा. आपको ब्राउज़र में यह लॉन्च होता हुआ दिखेगा, जैसा कि यहां दिखाया गया है:

bf7e2f4fae722bff.png

ध्यान दें कि सबसे ऊपर बाईं ओर, hotel_agent_app की पहचान कर ली गई है. अब एजेंट से बातचीत शुरू की जा सकती है. शहरों के बारे में जानकारी पाने के लिए कुछ प्रॉम्प्ट दो. यहां बातचीत का एक उदाहरण दिया गया है:

7851571b16224842.png

Cloud Shell टर्मिनल में चल रही प्रोसेस को बंद किया जा सकता है (Ctrl-C).

एजेंट को आज़माने का एक और तरीका है. इसके लिए, my-agents फ़ोल्डर में जाकर, यहां दी गई adk run कमांड का इस्तेमाल करें.

adk run hotel_agent_app

कमांड आज़माएं. इसके बाद, कमांड लाइन (टर्मिनल) के ज़रिए एजेंट से बातचीत की जा सकती है. बातचीत बंद करने के लिए, exit टाइप करें.

8. हमारे एजेंट को टूल से कनेक्ट करना

अब हमें पता है कि एजेंट कैसे लिखा जाता है और उसे स्थानीय तौर पर कैसे टेस्ट किया जाता है. हम इस एजेंट को टूल से कनेक्ट करने जा रहे हैं. ADK के संदर्भ में, टूल का मतलब एआई एजेंट को दी गई किसी खास सुविधा से है. इससे एआई एजेंट को कार्रवाई करने और दुनिया के साथ इंटरैक्ट करने में मदद मिलती है. इसके अलावा, यह टूल एआई एजेंट को टेक्स्ट जनरेट करने और तर्क देने की क्षमता से भी आगे बढ़ने में मदद करता है.

इस उदाहरण में, हम अपने एजेंट को उन टूल से लैस करने जा रहे हैं जिन्हें हमने डेटाबेस के लिए MCP Toolbox में कॉन्फ़िगर किया है.

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-2.5-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,
)

अब हम उस एजेंट की जांच कर सकते हैं जो हमारे PostgreSQL डेटाबेस से असली डेटा फ़ेच करेगा. इस डेटाबेस को MCP Toolbox for Databases के साथ कॉन्फ़िगर किया गया है.

इसके लिए, यह तरीका अपनाएं:

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 find hotels by location or by name.
[user]: I would like to search for hotels?
[hotel_agent]: Great! Do you want to search by location or by hotel name?
[user]: I'd like to search in Basel
[hotel_agent]: Here are some hotels in Basel:

*   Holiday Inn Basel (Upper Midscale)
*   Hyatt Regency Basel (Upper Upscale)
*   Hilton Basel (Luxury)
[user]: 

ध्यान दें कि एजेंट अब उन दो टूल का इस्तेमाल कर रहा है जिन्हें हमने डेटाबेस के लिए MCP टूलबॉक्स (search-hotels-by-name और search-hotels-by-location) में कॉन्फ़िगर किया है. साथ ही, हमें सही विकल्प दे रहा है. इसके बाद, यह PostgreSQL इंस्टेंस डेटाबेस से डेटा को आसानी से वापस पा सकता है और जवाब को उसके हिसाब से फ़ॉर्मैट कर सकता है.

इस तरह, हमने Agent Development Kit (ADK) का इस्तेमाल करके बनाए गए होटल एजेंट को स्थानीय तौर पर डेवलप और टेस्ट कर लिया है. इसे डेटाबेस के लिए MCP टूलबॉक्स में कॉन्फ़िगर किए गए टूल की मदद से बनाया गया था.

9. (ज़रूरी नहीं) डेटाबेस और एजेंट के लिए एमसीपी टूलबॉक्स को Cloud Run पर डिप्लॉय करना

पिछले सेक्शन में, हमने एमसीपी टूलबॉक्स सर्वर को लॉन्च करने के लिए Cloud Shell टर्मिनल का इस्तेमाल किया था. साथ ही, एजेंट के साथ टूल की जांच की थी. यह Cloud Shell एनवायरमेंट में स्थानीय तौर पर चल रहा था.

आपके पास MCP Toolbox सर्वर और एजेंट, दोनों को Google Cloud की उन सेवाओं पर डिप्लॉय करने का विकल्प होता है जो हमारे लिए इन ऐप्लिकेशन को होस्ट कर सकती हैं.

Cloud Run पर MCP Toolbox सर्वर को होस्ट करना

सबसे पहले, 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

आइए, एक अलग सेवा खाता बनाते हैं. यह खाता, Toolbox सेवा के लिए पहचान के तौर पर काम करेगा. इस सेवा को 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 फ़ाइल को सीक्रेट के तौर पर अपलोड करेंगे. साथ ही, हमें Cloud Run में टूलबॉक्स इंस्टॉल करना है. इसलिए, हम टूलबॉक्स के लिए सबसे नई कंटेनर इमेज का इस्तेमाल करेंगे और उसे 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 पर Toolbox Server को डिप्लॉय करने की प्रोसेस शुरू हो जाएगी. डेटा सोर्स को सही तरीके से डिप्लॉय करने के बाद, आपको इस तरह का मैसेज दिखेगा:

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" मैसेज दिखना चाहिए, जो हमने पहले देखा था.

Google Cloud Console में जाकर भी Cloud Run पर जाया जा सकता है. यहां आपको Cloud Run की सेवाओं की सूची में Toolbox सेवा दिखेगी.

ध्यान दें: अगर आपको होटल एजेंट को स्थानीय तौर पर चलाना है और नई Cloud Run सेवा से कनेक्ट करना है, तो आपको सिर्फ़ my-agents/hotel_agent_app/agent.py फ़ाइल में एक बदलाव करना होगा.

इसके बजाय:

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

इसे Cloud Run सेवा के सर्विस यूआरएल में बदलें. यह यूआरएल यहां दिया गया है:

toolbox = ToolboxSyncClient("CLOUD_RUN_SERVICE_URL")

जैसा कि हमने पहले देखा था, adk run या adk web का इस्तेमाल करके, एजेंट ऐप्लिकेशन को आज़माएं.

Cloud Run पर होटल एजेंट ऐप्लिकेशन डिप्लॉय करना

पहला चरण यह पक्का करना है कि आपने ऊपर दिए गए निर्देशों के मुताबिक, my-agents/hotel_agent_app/agent.py में बदलाव किया हो. इससे, Cloud Run पर चल रहे Toolbox सेवा के यूआरएल का इस्तेमाल किया जा सकेगा, न कि लोकल होस्ट का.

नए Cloud Shell टर्मिनल या मौजूदा टर्मिनल सेशन में, पक्का करें कि आप उस सही Python वर्चुअल एनवायरमेंट में हों जिसे हमने पहले सेट अप किया था.

सबसे पहले, आइए नीचे दिखाए गए तरीके से my-agents/hotel_agent_app फ़ोल्डर में requirements.txt फ़ाइल बनाएं:

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_VERTEXAI=True

आखिर में, एजेंट ऐप्लिकेशन को 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

इससे, Hotel Agent Application को 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

सफल डिप्लॉयमेंट के बाद, आपको सेवा के यूआरएल की वैल्यू दी जाएगी. इसके बाद, ब्राउज़र में जाकर इस वैल्यू को ऐक्सेस किया जा सकता है. इससे आपको वही वेब ऐप्लिकेशन दिखेगा जिससे आपने होटल एजेंट से चैट की थी. यह वही वेब ऐप्लिकेशन है जिसे हमने स्थानीय सेटअप में देखा था.

575191f524dd097d.png

10. साफ़-सफ़ाई सेवा

अपने Google Cloud खाते पर शुल्क लगना जारी रखने से बचने के लिए, यह ज़रूरी है कि आप इस वर्कशॉप के दौरान बनाई गई संसाधनों को मिटा दें. हम Cloud SQL इंस्टेंस को मिटा देंगे. अगर आपने Toolbox और Hotels ऐप्लिकेशन को Cloud Run पर डिप्लॉय किया है, तो हम उन सेवाओं को भी मिटा देंगे.

पक्का करें कि आपके प्रोजेक्ट और क्षेत्र के हिसाब से, ये एनवायरमेंट वैरिएबल सही तरीके से सेट किए गए हों:

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

नीचे दी गई दो कमांड, उन 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. बधाई हो

बधाई हो, आपने Agent Development Kit (ADK) का इस्तेमाल करके, ट्रैवल एजेंट बना लिया है. यह एजेंट, डेटाबेस के लिए MCP Toolbox का इस्तेमाल करता है. आपने यह भी सीखा कि एजेंट को अपने डेटाबेस से कैसे कनेक्ट किया जाता है. साथ ही, आपने Cloud Run पर एजेंट और टूलबॉक्स को इंस्टॉल करने का तरीका भी सीखा.

रेफ़रंस दस्तावेज़