ডাটাবেস এবং এজেন্ট ডেভেলপমেন্ট কিট (ADK) এর জন্য MCP টুলবক্স ব্যবহার করে একটি ট্রাভেল এজেন্ট তৈরি করুন

১. ভূমিকা

এই কোডল্যাবে, আপনি এজেন্ট ডেভেলপমেন্ট কিট (ADK) ব্যবহার করে একটি এজেন্ট তৈরি করবেন, যা এমসিপি টুলবক্স ফর ডেটাবেসেস (MCP Toolbox for Databases ) কাজে লাগায়।

কোডল্যাবের মাধ্যমে, আপনি নিম্নলিখিত ধাপে ধাপে পদ্ধতিটি অনুসরণ করবেন:

  1. একটি Cloud SQL for PostgreSQL ডেটাবেস প্রস্তুত করুন, যেটিতে হোটেল ডেটাবেস এবং নমুনা ডেটা থাকবে।
  2. ডেটাবেসের জন্য এমসিপি টুলবক্স সেটআপ করুন, যা ডেটাতে অ্যাক্সেস প্রদান করে।
  3. এজেন্ট ডেভেলপমেন্ট কিট (ADK) ব্যবহার করে এমন একটি এজেন্ট ডিজাইন ও ডেভেলপ করুন যা ব্যবহারকারীর কোয়েরির উত্তর দেওয়ার জন্য এমসিপি টুলবক্স ব্যবহার করবে।
  4. Cloud Run পরিষেবার মাধ্যমে স্থানীয়ভাবে এবং Google Cloud-এ Agent and MCP Toolbox for Databases পরীক্ষা করার বিকল্পগুলি অন্বেষণ করুন।

33b79273f207ebd7.png

আপনি যা করবেন

  • এমন একটি এজেন্ট ডিজাইন, তৈরি এবং স্থাপন করুন যা কোনো একটি নির্দিষ্ট স্থানের হোটেল সম্পর্কিত ব্যবহারকারীর প্রশ্নের উত্তর দেবে অথবা নাম দিয়ে হোটেল অনুসন্ধান করবে।

আপনি যা শিখবেন

  • নমুনা ডেটা দিয়ে একটি Cloud SQL for PostgreSQL ডেটাবেস প্রস্তুত ও পূরণ করা হচ্ছে।
  • ক্লাউড SQL for PostgreSQL ডাটাবেস ইনস্ট্যান্সের জন্য MCP টুলবক্স ফর ডাটাবেস সেটআপ করুন।
  • ব্যবহারকারীর প্রশ্নের উত্তর দেওয়ার জন্য এজেন্ট ডেভেলপমেন্ট কিট (ADK) ব্যবহার করে একটি এজেন্ট ডিজাইন ও ডেভেলপ করুন।
  • স্থানীয় পরিবেশে এজেন্ট এবং এমসিপি টুলবক্স ফর ডেটাবেস পরীক্ষা করে দেখুন।
  • (ঐচ্ছিকভাবে) গুগল ক্লাউডে ডেটাবেসের জন্য এজেন্ট এবং এমসিপি টুলবক্স স্থাপন করুন।

আপনার যা যা লাগবে

  • ক্রোম ওয়েব ব্রাউজার
  • একটি জিমেইল অ্যাকাউন্ট
  • বিলিং সক্ষম একটি ক্লাউড প্রজেক্ট

সকল স্তরের (শিক্ষানবিশ সহ) ডেভেলপারদের জন্য ডিজাইন করা এই কোডল্যাবটির নমুনা অ্যাপ্লিকেশনে পাইথন ব্যবহার করা হয়েছে। তবে, পাইথন সম্পর্কে পূর্বজ্ঞান থাকা আবশ্যক নয় এবং উপস্থাপিত ধারণাগুলো বোঝার জন্য সাধারণ কোড পড়ার ক্ষমতাই যথেষ্ট হবে।

২. শুরু করার আগে

একটি প্রকল্প তৈরি করুন

  1. গুগল ক্লাউড কনসোলের প্রজেক্ট সিলেক্টর পেজে, একটি গুগল ক্লাউড প্রজেক্ট নির্বাচন করুন বা তৈরি করুন।
  2. আপনার ক্লাউড প্রোজেক্টের জন্য বিলিং চালু আছে কিনা তা নিশ্চিত করুন। কোনো প্রোজেক্টে বিলিং চালু আছে কিনা তা কীভাবে পরীক্ষা করবেন, তা জেনে নিন।
  3. আপনি ক্লাউড শেল ব্যবহার করবেন, যা গুগল ক্লাউডে চলমান একটি কমান্ড-লাইন পরিবেশ এবং এটি bq-এর সাথে আগে থেকেই লোড করা থাকে। গুগল ক্লাউড কনসোলের শীর্ষে থাকা ‘Activate Cloud Shell’-এ ক্লিক করুন।

ক্লাউড শেল সক্রিয় করুন বোতামের ছবি

  1. ক্লাউড শেলে সংযুক্ত হওয়ার পর, আপনি নিম্নলিখিত কমান্ডটি ব্যবহার করে যাচাই করে নিন যে আপনি ইতিমধ্যেই প্রমাণীকৃত এবং প্রজেক্টটি আপনার প্রজেক্ট আইডিতে সেট করা আছে:
gcloud auth list
  1. gcloud কমান্ডটি আপনার প্রজেক্ট সম্পর্কে অবগত আছে কিনা, তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান।
gcloud config list project
  1. আপনার প্রজেক্টটি সেট করা না থাকলে, এটি সেট করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
gcloud config set project <YOUR_PROJECT_ID>
  1. নিচে দেখানো কমান্ডের মাধ্যমে প্রয়োজনীয় 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 কমান্ড ও তার ব্যবহারবিধি জানতে ডকুমেন্টেশন দেখুন।

৩. একটি ক্লাউড এসকিউএল ইনস্ট্যান্স তৈরি করুন

আমরা আমাদের হোটেলগুলোর ডেটা সংরক্ষণের জন্য একটি Google Cloud SQL for PostgreSQL ইনস্ট্যান্স ব্যবহার করব। Cloud SQL for PostgreSQL হলো একটি সম্পূর্ণ পরিচালিত ডাটাবেস পরিষেবা, যা আপনাকে Google Cloud Platform-এ আপনার PostgreSQL রিলেশনাল ডাটাবেসগুলো সেট আপ, রক্ষণাবেক্ষণ, পরিচালনা এবং অ্যাডমিনিস্টার করতে সাহায্য করে।

ইনস্ট্যান্সটি তৈরি করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:

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

এই কমান্ডটি কার্যকর হতে প্রায় ৩-৫ মিনিট সময় লাগে। কমান্ডটি সফলভাবে কার্যকর হলে, আপনি একটি আউটপুট দেখতে পাবেন যা নির্দেশ করবে যে কমান্ডটি সম্পন্ন হয়েছে। এর সাথে আপনার ক্লাউড এসকিউএল ইনস্ট্যান্সের তথ্য, যেমন নাম (NAME), ডেটাবেস সংস্করণ (DATABASE_VERSION), অবস্থান (LOCATION), ইত্যাদিও প্রদর্শিত হবে।

৪. হোটেল ডেটাবেস প্রস্তুত করুন

এখন আমাদের কাজ হবে হোটেল এজেন্টের জন্য কিছু নমুনা ডেটা তৈরি করা।

ক্লাউড কনসোলে ক্লাউড SQL পৃষ্ঠাটিতে যান। আপনি hoteldb-instance প্রস্তুত এবং তৈরি অবস্থায় দেখতে পাবেন। নিচে দেখানো অনুযায়ী ইনস্ট্যান্সটির ( hoteldb-instance ) নামের উপর ক্লিক করুন:

28c93e70f03d6619.png

Cloud SQL-এর বাম দিকের মেনু থেকে, নিচে দেখানো অনুযায়ী Cloud SQL Studio মেনু অপশনটিতে যান:

4f074ce3d774f4a.png

এটি আপনাকে ক্লাউড এসকিউএল স্টুডিওতে সাইন ইন করতে বলবে, যার মাধ্যমে আমরা কয়েকটি এসকিউএল কমান্ড দেব। ডেটাবেস অপশনের জন্য postgres নির্বাচন করুন এবং ইউজার ও পাসওয়ার্ড উভয়ের জন্যই postgres ভ্যালুটি ব্যবহার করুন। AUTHENTICATE এ ক্লিক করুন।

প্রথমে নিচে দেওয়া স্কিমা অনুযায়ী হোটেল টেবিলটি তৈরি করা যাক। ক্লাউড এসকিউএল স্টুডিও-এর যেকোনো একটি এডিটর প্যানে নিম্নলিখিত 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');

চলুন, নিচে দেখানো SELECT SQL চালিয়ে ডেটা যাচাই করি:

SELECT * FROM hotels;

হোটেল টেবিলে আপনি নিচে দেখানো অনুযায়ী বেশ কিছু রেকর্ড দেখতে পাবেন:

6e8f7cbbffd4c284.png

আমরা একটি ক্লাউড এসকিউএল ইনস্ট্যান্স সেট আপ করার প্রক্রিয়া সম্পন্ন করেছি এবং আমাদের নমুনা ডেটা তৈরি করেছি। পরবর্তী অংশে, আমরা ডেটাবেসের জন্য এমসিপি টুলবক্স সেট আপ করব।

৫. ডেটাবেসের জন্য এমসিপি টুলবক্স সেটআপ করুন

MCP টুলবক্স ফর ডেটাবেস হলো ডেটাবেসের জন্য একটি ওপেন সোর্স MCP সার্ভার। এটি এন্টারপ্রাইজ-গ্রেড এবং প্রোডাকশন-কোয়ালিটির কথা মাথায় রেখে ডিজাইন করা হয়েছে। এটি কানেকশন পুলিং, অথেন্টিকেশন এবং আরও অনেক জটিল বিষয় সামলানোর মাধ্যমে আপনাকে আরও সহজে, দ্রুত এবং নিরাপদে টুলস তৈরি করতে সক্ষম করে।

টুলবক্স আপনাকে এমন জেন এআই টুল তৈরি করতে সাহায্য করে যা আপনার এজেন্টদের আপনার ডেটাবেসের ডেটা অ্যাক্সেস করতে দেয়।

  • সরলীকৃত ডেভেলপমেন্ট: ১০ লাইনেরও কম কোডে আপনার এজেন্টের সাথে টুলস ইন্টিগ্রেট করুন, একাধিক এজেন্ট বা ফ্রেমওয়ার্কের মধ্যে টুলস পুনঃব্যবহার করুন এবং টুলসের নতুন ভার্সন আরও সহজে ডেপ্লয় করুন।
  • উন্নততর পারফরম্যান্স: কানেকশন পুলিং, অথেন্টিকেশন এবং আরও অনেক সেরা অনুশীলন।
  • উন্নত নিরাপত্তা: আপনার ডেটাতে আরও সুরক্ষিত অ্যাক্সেসের জন্য সমন্বিত প্রমাণীকরণ।
  • এন্ড-টু-এন্ড পর্যবেক্ষণযোগ্যতা: ওপেনটেলিমেট্রির অন্তর্নির্মিত সমর্থন সহ রেডিমেড মেট্রিক্স এবং ট্রেসিং।

টুলবক্স আপনার অ্যাপ্লিকেশনের অর্কেস্ট্রেশন ফ্রেমওয়ার্ক এবং আপনার ডেটাবেসের মধ্যে অবস্থান করে একটি কন্ট্রোল প্লেন প্রদান করে, যা টুল পরিবর্তন, বিতরণ বা চালু করার জন্য ব্যবহৃত হয়। এটি টুল সংরক্ষণ ও আপডেট করার জন্য একটি কেন্দ্রীভূত স্থান প্রদান করে আপনার টুলগুলোর ব্যবস্থাপনা সহজ করে তোলে, যার ফলে আপনি এজেন্ট ও অ্যাপ্লিকেশনগুলোর মধ্যে টুল শেয়ার করতে পারেন এবং আপনার অ্যাপ্লিকেশন পুনরায় ডেপ্লয় না করেই সেই টুলগুলো আপডেট করতে পারেন।

5bf26eeecad2277d.png

আপনি দেখতে পাচ্ছেন যে, MCP Toolbox for Databases দ্বারা সমর্থিত ডেটাবেসগুলোর মধ্যে একটি হলো Cloud SQL এবং আমরা পূর্ববর্তী বিভাগে সেটির ব্যবস্থা করেছি।

টুলবক্স ইনস্টল করা

ক্লাউড শেল টার্মিনাল খুলুন এবং mcp-toolbox নামে একটি ফোল্ডার তৈরি করুন।

mkdir mcp-toolbox

নিচে দেখানো কমান্ডের মাধ্যমে mcp-toolbox ফোল্ডারে যান:

cd mcp-toolbox

নিচে দেওয়া স্ক্রিপ্টটির মাধ্যমে MCP টুলবক্স ফর ডেটাবেস-এর বাইনারি সংস্করণটি ইনস্টল করুন। নিচে দেওয়া কমান্ডটি লিনাক্সের জন্য, কিন্তু আপনি যদি ম্যাক বা উইন্ডোজ ব্যবহার করেন, তবে সঠিক বাইনারিটি ডাউনলোড করছেন কিনা তা নিশ্চিত করুন। আপনার অপারেটিং সিস্টেম এবং আর্কিটেকচারের জন্য রিলিজ পেজটি দেখুন এবং সঠিক বাইনারিটি ডাউনলোড করুন।

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 -v

এর ফলে নিম্নলিখিতের অনুরূপ একটি আউটপুট প্রিন্ট হবে:

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

পরবর্তী ধাপ হলো আমাদের ডেটা সোর্স এবং অন্যান্য কনফিগারেশন দিয়ে টুলবক্সটি সেট আপ করা।

tools.yaml কনফিগার করা হচ্ছে

টুলবক্স কনফিগার করার প্রধান উপায় হলো tools.yaml ফাইল। mcp-toolbox ফোল্ডারে tools.yaml নামে একটি ফাইল তৈরি করুন, যার বিষয়বস্তু নিচে দেখানো হলো।

আপনি ক্লাউড শেলে উপলব্ধ ন্যানো এডিটরটি ব্যবহার করতে পারেন। ন্যানো কমান্ডটি হলো: " nano tools.yaml "।

YOUR_PROJECT_ID এর জায়গায় আপনার গুগল ক্লাউড প্রজেক্ট আইডি বসাতে মনে রাখবেন।

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 একটি ম্যাপ হিসেবে সংজ্ঞায়িত করতে পারেন। সাধারণত, একটি সোর্স কনফিগারেশনে ডাটাবেসের সাথে সংযোগ স্থাপন এবং ইন্টারঅ্যাক্ট করার জন্য প্রয়োজনীয় সমস্ত তথ্য থাকে। আমাদের ক্ষেত্রে, আমরা একটিমাত্র সোর্স কনফিগার করেছি যা ক্রেডেনশিয়ালসহ আমাদের Cloud SQL for PostgreSQL ইনস্ট্যান্সকে নির্দেশ করে। আরও তথ্যের জন্য, সোর্স রেফারেন্সটি দেখুন।
  2. Tools এমন সব কাজ নির্ধারণ করে যা একজন এজেন্ট করতে পারে – যেমন কোনো সোর্স থেকে ডেটা পড়া এবং তাতে লেখা। একটি টুল আপনার এজেন্টের একটি কাজকে বোঝায়, যেমন একটি SQL স্টেটমেন্ট চালানো। আপনি আপনার tools.yaml ফাইলের tools সেকশনে Tools একটি ম্যাপ হিসেবে সংজ্ঞায়িত করতে পারেন। সাধারণত, কোনো টুলের কাজ করার জন্য একটি সোর্সের প্রয়োজন হয়। আমাদের ক্ষেত্রে, আমরা দুটি টুল সংজ্ঞায়িত করছি: search-hotels-by-name এবং search-hotels-by-location এবং এর জন্য ব্যবহৃত সোর্স, SQL ও প্যারামিটারগুলো নির্দিষ্ট করে দিচ্ছি। আরও তথ্যের জন্য, টুলস রেফারেন্স দেখুন।
  3. সবশেষে, আমাদের কাছে রয়েছে Toolset , যা আপনাকে এমন টুলগুলোর গ্রুপ নির্ধারণ করার সুযোগ দেয় যেগুলো আপনি একসাথে লোড করতে চান। এজেন্ট বা অ্যাপ্লিকেশনের উপর ভিত্তি করে বিভিন্ন গ্রুপ নির্ধারণের জন্য এটি কার্যকর হতে পারে। আমাদের ক্ষেত্রে, my_first_toolset নামে একটিমাত্র টুলসেট রয়েছে, যার মধ্যে আমাদের নির্ধারণ করা দুটি টুল অন্তর্ভুক্ত আছে।

নিম্নলিখিত ধাপগুলো অনুসরণ করে nano এডিটরে tools.yaml ফাইলটি সংরক্ষণ করুন:

  • Ctrl + O ("Write Out" কমান্ড) চাপুন।
  • এটি আপনাকে "লিখতে চান এমন ফাইলের নাম" নিশ্চিত করতে বলবে। শুধু Enter চাপুন।
  • এখন বের হওয়ার জন্য Ctrl + X চাপুন।

ডাটাবেস সার্ভারের জন্য এমসিপি টুলবক্স চালান

সার্ভারটি চালু করতে ( 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 টুলবক্স সার্ভার ডিফল্টরূপে 5000 পোর্টে চলে। যদি দেখেন যে 5000 পোর্টটি ইতিমধ্যেই ব্যবহৃত হচ্ছে, তাহলে নিচে দেখানো কমান্ড অনুযায়ী অন্য একটি পোর্ট (যেমন 7000 ) ব্যবহার করতে পারেন। অনুগ্রহ করে পরবর্তী কমান্ডগুলোতে 5000 পোর্টের পরিবর্তে 7000 পোর্টটি ব্যবহার করুন।

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

চলুন ক্লাউড শেল ব্যবহার করে এটি পরীক্ষা করে দেখি।

নিচে দেখানো অনুযায়ী ক্লাউড শেল-এ ওয়েব প্রিভিউ-তে ক্লিক করুন:

b8a52769f092e5d0.png

নিচে দেখানো অনুযায়ী Change port- এ ক্লিক করে পোর্টটি 5000 সেট করুন এবং Change and Preview-তে ক্লিক করুন।

3ccac41b1f8996c5.png

এর ফলে নিম্নলিখিত আউটপুট পাওয়া যাবে:

e2a7d3ddaac0c3be.png

MCP টুলবক্স ফর ডাটাবেস UI এর মাধ্যমে টুলগুলো পরীক্ষা করুন

টুলবক্সটি একটি ভিজ্যুয়াল ইন্টারফেস ( টুলবক্স ইউআই ) প্রদান করে, যার মাধ্যমে একটি সহজ ওয়েব ইউআই থেকেই প্যারামিটার পরিবর্তন, হেডার ব্যবস্থাপনা এবং কল সম্পাদনের মতো কাজগুলো সরাসরি করা যায়।

আপনি যদি এটি পরীক্ষা করে দেখতে চান, তাহলে টুলবক্স সার্ভার চালু করার জন্য ব্যবহৃত পূর্ববর্তী কমান্ডটি --ui অপশনসহ চালাতে পারেন।

এটি করার জন্য, আপনার চালু থাকা MCP Toolbox for Databases Server-এর পূর্ববর্তী ইনস্ট্যান্সটি শাটডাউন করুন এবং নিম্নলিখিত কমান্ডটি দিন:

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

আদর্শগতভাবে, আপনার এমন একটি আউটপুট দেখা উচিত যা থেকে বোঝা যায় যে সার্ভার আমাদের ডেটা সোর্সগুলোর সাথে সংযোগ স্থাপন করতে পেরেছে এবং টুলসেট ও টুলগুলো লোড করেছে। নিচে একটি নমুনা আউটপুট দেওয়া হলো এবং আপনি লক্ষ্য করবেন যে এতে উল্লেখ করা থাকবে টুলবক্স 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 ইউআরএল-এ ক্লিক করুন এবং নিশ্চিত করুন যে আপনার কাছে আছে

/ui

URL-এর শেষে (আপনি যদি এটি ক্লাউড শেলে চালান, তাহলে ব্রাউজার রিডাইরেকশনের কারণে শেষে /ui থাকবে না)। এটি নীচে দেখানো UI প্রদর্শন করবে:

463ae8f13fea0755.png

কনফিগার করা টুলগুলো দেখতে বামদিকের 'Tools' অপশনে ক্লিক করুন এবং আমাদের ক্ষেত্রে, সেখানে দুটি টুল থাকবে, যথা: search-hotels-by-name এবং search-hotels-by-location , যেমনটি নিচে দেখানো হয়েছে:

309b9147d516806f.png

কেবলমাত্র টুলগুলোর ( search-hotels-by-location ) যেকোনো একটিতে ক্লিক করুন। এটি আপনার জন্য একটি পৃষ্ঠা নিয়ে আসবে যেখানে আপনি প্রয়োজনীয় প্যারামিটার মান প্রদান করে টুলটি পরীক্ষা করতে পারবেন এবং তারপর ফলাফল দেখতে 'রান টুল' -এ ক্লিক করুন। নিচে একটি নমুনা রান দেখানো হলো:

7901f2e1c8ce2f9b.png

MCP টুলকিট ফর ডেটাবেস-এ টুলগুলো যাচাই ও পরীক্ষা করার একটি পাইথনিক পদ্ধতিরও বর্ণনা দেওয়া আছে, যা এখানে নথিভুক্ত করা হয়েছে।

যদি আমরা আগের ডায়াগ্রামটি (নিচে দেখানো হয়েছে) আবার দেখি, আমরা এখন ডেটাবেস এবং এমসিপি সার্ভার সেট আপ করা সম্পন্ন করেছি এবং আমাদের সামনে দুটি পথ রয়েছে:

f749a119601aa67d.png

  1. কীভাবে আপনি MCP সার্ভারকে একটি AI অ্যাসিস্টেড টার্মিনাল / IDE-তে কনফিগার করতে পারেন তা বুঝতে, ধাপ ৬-এ যান। সেখানে আলোচনা করা হবে কীভাবে আমরা আমাদের MCP টুলবক্স সার্ভারকে Gemini CLI এর সাথে ইন্টিগ্রেট করেছি।
  2. Agent Development Kit (ADK) using Python কীভাবে ব্যবহার করতে হয়, MCP সার্ভার টুলবক্সকে একটি টুল হিসেবে ব্যবহার করতে পারে এমন নিজস্ব এজেন্ট কীভাবে লিখতে হয় এবং ডেটাসেট সম্পর্কিত প্রশ্নের উত্তর কীভাবে দিতে হয়, তা বুঝতে ধাপ ৭ এবং ৮-এ যান।

৬. জেমিনি সিএলআই-তে এমসিপি টুলবক্স একীভূত করা

জেমিনি সিএলআই একটি ওপেন-সোর্স এআই এজেন্ট যা জেমিনির ক্ষমতা সরাসরি আপনার টার্মিনালে নিয়ে আসে। আপনি এটি কোডিং এবং নন-কোডিং উভয় কাজের জন্যই ব্যবহার করতে পারেন। এটি বিভিন্ন টুলের সাথে সমন্বিত থাকে এবং এতে এমসিপি সার্ভারের জন্য সমর্থনও রয়েছে।

যেহেতু আমাদের একটি কার্যকর এমসিপি সার্ভার আছে, তাই এই অংশে আমাদের লক্ষ্য হবে জেমিনি সিএলআই-তে এমসিপি টুলবক্স ফর ডেটাবেসেস সার্ভারটি কনফিগার করা এবং তারপর জেমিনি সিএলআই ব্যবহার করে আমাদের ডেটার সাথে যোগাযোগ করা।

আমাদের প্রথম পদক্ষেপ হবে ক্লাউড শেল টার্মিনালগুলোর কোনো একটিতে আপনার টুলবক্সটি চালু আছে কিনা তা নিশ্চিত করা। ধরে নেওয়া হচ্ছে যে আপনি এটি ডিফল্ট পোর্ট 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-তে কনফিগার করা MCP সার্ভারগুলির তালিকায় MCP সার্ভারটি যুক্ত করতে নিম্নলিখিত কমান্ডটি দিন।

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

আপনি নিম্নলিখিত কমান্ডের মাধ্যমে Gemini CLI-তে কনফিগার করা MCP সার্ভারগুলির বর্তমান তালিকা দেখতে পারেন:

gemini mcp list

আদর্শগতভাবে, আপনার আমাদের কনফিগার করা MCPToolbox-টির পাশে একটি সবুজ টিক চিহ্ন দেখা উচিত, যা নির্দেশ করে যে Gemini CLI, MCP সার্ভারের সাথে সংযোগ স্থাপন করতে সক্ষম হয়েছে।

Configured MCP servers:

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

Gemini CLI চালু করার আগে, আপনার অনুরোধগুলিকে সঠিক মডেলে পাঠাতে সাহায্য করার জন্য আপনি নিম্নলিখিত এনভায়রনমেন্ট ভেরিয়েবলগুলি সেট করতে পারেন।

export GOOGLE_CLOUD_PROJECT=YOUR_GOOGLE_CLOUD_PROJECT_ID
export GOOGLE_CLOUD_LOCATION=global

একই টার্মিনাল থেকে, নিশ্চিত করুন যে আপনি my-gemini-cli-project ফোল্ডারে আছেন। gemini কমান্ডের মাধ্যমে Gemini CLI চালু করুন।

এটি জেমিনি সিএলআই ইন্টারফেসটি চালু করবে এবং আপনি দেখতে পাবেন যে এতে এখন ১টি এমসিপি সার্ভার কনফিগার করা আছে। আপনি এমসিপি সার্ভার এবং টুলগুলির তালিকা দেখতে /mcp list কমান্ডটি ব্যবহার করতে পারেন। উদাহরণস্বরূপ, এখানে একটি নমুনা আউটপুট দেওয়া হলো:

fbb76c759736fce7.png

আপনি এখন নিম্নলিখিত যেকোনো নির্দেশ দিতে পারেন:

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

আপনি দেখবেন যে উপরের কোয়েরিগুলোর ফলে Gemini CLI, MCPToolbox থেকে উপযুক্ত টুলটি নির্বাচন করবে। এটি টুলটি চালানোর জন্য আপনার অনুমতি চাইবে। এটিকে প্রয়োজনীয় অনুমতি দিন এবং আপনি লক্ষ্য করবেন যে ডাটাবেস থেকে ফলাফলগুলো ফিরে আসছে।

৭. এজেন্ট ডেভেলপমেন্ট কিট (ADK) ব্যবহার করে আমাদের এজেন্ট লেখা

এজেন্ট ডেভেলপমেন্ট কিট (ADK) ইনস্টল করুন।

ক্লাউড শেলে একটি নতুন টার্মিনাল ট্যাব খুলুন এবং নিম্নরূপভাবে my-agents নামে একটি ফোল্ডার তৈরি করুন। my-agents ফোল্ডারটিতেও যান।

mkdir my-agents
cd my-agents

এখন, চলুন venv ব্যবহার করে নিম্নোক্তভাবে একটি ভার্চুয়াল পাইথন এনভায়রনমেন্ট তৈরি করি:

python -m venv .venv

নিম্নলিখিতভাবে ভার্চুয়াল পরিবেশটি সক্রিয় করুন:

source .venv/bin/activate

নিম্নলিখিতভাবে ADK এবং MCP Toolbox for Databases প্যাকেজগুলো langchain ডিপেন্ডেন্সি সহ ইনস্টল করুন:

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 create কমান্ড ব্যবহার করে আমাদের হোটেল এজেন্ট অ্যাপ্লিকেশনের জন্য একটি কাঠামো তৈরি করব adk যার অ্যাপের নাম হবে ** (hotel_agent_app) **, যা নিচে দেওয়া হলো।

adk create hotel_agent_app

ধাপগুলো অনুসরণ করুন এবং নিম্নলিখিতগুলো নির্বাচন করুন:

  • রুট এজেন্টের জন্য মডেল বাছাই করার ক্ষেত্রে জেমিনি মডেল।
  • ব্যাকএন্ডের জন্য ভার্টেক্স এআই বেছে নিন।
  • আপনার ডিফল্ট গুগল প্রজেক্ট আইডি এবং অঞ্চল প্রদর্শিত হবে। ডিফল্টটিই নির্বাচন করুন।
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

মানগুলো নির্দেশ করে যে আমরা গুগল ক্লাউড প্রজেক্ট আইডি এবং অবস্থানের সংশ্লিষ্ট মানগুলোর সাথে ভার্টেক্স এআই-এর মাধ্যমে জেমিনি ব্যবহার করব।

এরপর রয়েছে __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 দিয়ে লিখতে পারেন। ADK ডকুমেন্টেশন পৃষ্ঠা অনুসারে, এজেন্ট হলো একটি স্বয়ংসম্পূর্ণ কার্যনির্বাহী ইউনিট, যা নির্দিষ্ট লক্ষ্য অর্জনের জন্য স্বায়ত্তশাসিতভাবে কাজ করার উদ্দেশ্যে তৈরি। এজেন্টরা বিভিন্ন কাজ সম্পাদন করতে পারে, ব্যবহারকারীদের সাথে যোগাযোগ করতে পারে, বাহ্যিক সরঞ্জাম ব্যবহার করতে পারে এবং অন্যান্য এজেন্টের সাথে সমন্বয় সাধন করতে পারে।

বিশেষত, একটি এলএলএমএজেন্ট (LLMAgent), যা সাধারণত এজেন্ট (Agent) নামেও পরিচিত, তার মূল ইঞ্জিন হিসেবে লার্জ ল্যাঙ্গুয়েজ মডেল (LLM) ব্যবহার করে স্বাভাবিক ভাষা বুঝতে, যুক্তি দিতে, পরিকল্পনা করতে, প্রতিক্রিয়া তৈরি করতে এবং কীভাবে এগোতে হবে বা কোন সরঞ্জাম ব্যবহার করতে হবে সে বিষয়ে গতিশীলভাবে সিদ্ধান্ত নিতে পারে। এই বৈশিষ্ট্যগুলো এটিকে নমনীয় ও ভাষাকেন্দ্রিক কাজের জন্য আদর্শ করে তোলে। এলএলএম এজেন্ট সম্পর্কে আরও জানতে এখানে ক্লিক করুন।

চলুন 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.',
)

এজেন্ট অ্যাপটি স্থানীয়ভাবে পরীক্ষা করুন

বর্তমান টার্মিনাল উইন্ডো থেকে নিম্নলিখিত কমান্ডটি দিন। নিশ্চিত করুন যে আপনি hotel_agent_app ফোল্ডারটি ধারণকারী প্যারেন্ট ফোল্ডারে (my-agents) আছেন।

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

আপনি ক্লাউড শেল টার্মিনালে চলমান প্রসেসটি বন্ধ করতে পারেন (Ctrl-C)।

এজেন্টটি পরীক্ষা করার একটি বিকল্প উপায় হলো my-agents ফোল্ডার থেকে নিচে দেওয়া adk run কমান্ডটি ব্যবহার করা।

adk run hotel_agent_app

কমান্ডটি ব্যবহার করে দেখুন এবং আপনি কমান্ড লাইন (টার্মিনাল) এর মাধ্যমে এজেন্টের সাথে কথা বলতে পারবেন। কথোপকথনটি বন্ধ করতে exit টাইপ করুন।

৮. আমাদের এজেন্টকে টুলসের সাথে সংযুক্ত করা

এখন যেহেতু আমরা জানি কীভাবে একটি এজেন্ট লিখতে হয় এবং স্থানীয়ভাবে পরীক্ষা করতে হয়, আমরা এই এজেন্টটিকে টুলস-এর সাথে সংযুক্ত করতে যাচ্ছি। ADK-এর প্রেক্ষাপটে, একটি টুল হলো একটি AI এজেন্টকে প্রদত্ত একটি নির্দিষ্ট সক্ষমতা, যা এটিকে তার মূল টেক্সট তৈরি এবং যুক্তিনির্ভর ক্ষমতার বাইরেও বিভিন্ন কাজ সম্পাদন করতে এবং পারিপার্শ্বিক জগতের সাথে যোগাযোগ স্থাপন করতে সক্ষম করে।

আমাদের ক্ষেত্রে, আমরা এখন আমাদের এজেন্টকে সেই টুলগুলো দিয়ে সজ্জিত করতে যাচ্ছি যা আমরা ডেটাবেসের জন্য এমসিপি টুলবক্সে কনফিগার করেছি।

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 টুলবক্স ফর ডাটাবেস দিয়ে কনফিগার করা হয়েছে।

এটি করার জন্য, এই ক্রমটি অনুসরণ করুন:

ক্লাউড শেলের একটি টার্মিনালে, MCP টুলবক্স ফর ডেটাবেস চালু করুন। যেমনটি আমরা আগে পরীক্ষা করেছি, এটি আপনার লোকাল সিস্টেমে ৫০০০ পোর্টে আগে থেকেই চালু থাকতে পারে। যদি তা না হয়, সার্ভারটি চালু করার জন্য ( mcp-toolbox ফোল্ডার থেকে) নিম্নলিখিত কমান্ডটি চালান:

./toolbox --config "tools.yaml"

আদর্শগতভাবে, আপনার এমন একটি আউটপুট দেখা উচিত যেখানে দেখা যাবে যে সার্ভার আমাদের ডেটা সোর্সগুলোর সাথে সংযোগ স্থাপন করতে পেরেছে এবং টুলসেট ও টুলগুলো লোড করেছে।

এমসিপি সার্ভার সফলভাবে চালু হয়ে গেলে, অন্য একটি টার্মিনালে, নিচে দেখানো ' my-agents ফোল্ডার থেকে adk run ' কমান্ডের মাধ্যমে এজেন্টটি চালু করুন, যেমনটি আমরা আগে করেছি। আপনি চাইলে 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]: 

লক্ষ্য করুন যে এজেন্টটি এখন ডেটাবেসের জন্য আমাদের এমসিপি টুলবক্সে কনফিগার করা দুটি টুল ( search-hotels-by-name এবং search-hotels-by-location ) ব্যবহার করছে এবং আমাদের সঠিক অপশনগুলো সরবরাহ করছে। এরপর এটি পোস্টগ্রেসকিউএল ইনস্ট্যান্স ডেটাবেস থেকে নির্বিঘ্নে ডেটা পুনরুদ্ধার করতে এবং সেই অনুযায়ী প্রতিক্রিয়াটি ফরম্যাট করতে সক্ষম হয়।

এর মাধ্যমে আমাদের হোটেল এজেন্টের স্থানীয় উন্নয়ন ও পরীক্ষা সম্পন্ন হলো, যেটি আমরা এজেন্ট ডেভেলপমেন্ট কিট (ADK) ব্যবহার করে তৈরি করেছি এবং যা এমসিপি টুলবক্স ফর ডেটাবেসেস-এ কনফিগার করা টুলস দ্বারা চালিত ছিল।

৯. (ঐচ্ছিক) ক্লাউড রানে ডেটাবেস এবং এজেন্টের জন্য এমসিপি টুলবক্স স্থাপন করা

পূর্ববর্তী অংশে, আমরা ক্লাউড শেল টার্মিনাল ব্যবহার করে এমসিপি টুলবক্স সার্ভার চালু করেছিলাম এবং এজেন্টের সাহায্যে টুলগুলো পরীক্ষা করেছিলাম। এটি ক্লাউড শেল পরিবেশে স্থানীয়ভাবে চলছিল।

আপনার কাছে এমসিপি টুলবক্স সার্ভার এবং এজেন্ট উভয়কেই গুগল ক্লাউড পরিষেবাগুলিতে স্থাপন করার বিকল্প রয়েছে, যা আমাদের জন্য এই অ্যাপ্লিকেশনগুলি হোস্ট করতে পারে।

ক্লাউড রানে এমসিপি টুলবক্স সার্ভার হোস্ট করা হচ্ছে

প্রথমেই, আমরা MCP টুলবক্স সার্ভারটি ক্লাউড রান-এ হোস্ট করতে পারি। এর ফলে আমরা একটি পাবলিক এন্ডপয়েন্ট পাব, যা আমরা অন্য যেকোনো অ্যাপ্লিকেশন এবং/অথবা এজেন্ট অ্যাপ্লিকেশনগুলোর সাথেও ইন্টিগ্রেট করতে পারব। ক্লাউড রান-এ এটি হোস্ট করার নির্দেশাবলী এখানে দেওয়া আছে। এখন আমরা মূল ধাপগুলো আলোচনা করব।

একটি নতুন ক্লাউড শেল টার্মিনাল চালু করুন অথবা একটি বিদ্যমান ক্লাউড শেল টার্মিনাল ব্যবহার করুন। mcp-toolbox ফোল্ডারে যান, যেখানে toolbox বাইনারি এবং tools.yaml ফাইলটি রয়েছে।

নিম্নলিখিত কমান্ডগুলো চালান (প্রতিটি কমান্ডের ব্যাখ্যা দেওয়া আছে):

PROJECT_ID ভেরিয়েবলটি আপনার গুগল ক্লাউড প্রজেক্ট আইডি নির্দেশ করার জন্য সেট করুন।

export PROJECT_ID="YOUR_GOOGLE_CLOUD_PROJECT_ID" 

এরপর, যাচাই করুন যে প্রজেক্টটিতে নিম্নলিখিত গুগল ক্লাউড পরিষেবাগুলো সক্রিয় করা আছে।

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

চলুন একটি আলাদা সার্ভিস অ্যাকাউন্ট তৈরি করি, যেটি গুগল ক্লাউড রান-এ ডেপ্লয় করা টুলবক্স সার্ভিসের আইডেন্টিটি হিসেবে কাজ করবে। আমরা এটাও নিশ্চিত করছি যে এই সার্ভিস অ্যাকাউন্টটির যেন সঠিক রোলগুলো থাকে, অর্থাৎ সিক্রেট ম্যানেজার অ্যাক্সেস করার এবং ক্লাউড এসকিউএল-এর সাথে যোগাযোগ করার ক্ষমতা থাকে।

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 ফাইলটিকে একটি সিক্রেট হিসেবে আপলোড করব এবং যেহেতু আমাদের ক্লাউড রান-এ টুলবক্সটি ইনস্টল করতে হবে, তাই আমরা টুলবক্সের জন্য সর্বশেষ কন্টেইনার ইমেজটি ব্যবহার করব এবং সেটি IMAGE ভেরিয়েবলে সেট করব।

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

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

ক্লাউড রান-এর পরিচিত ডেপ্লয়মেন্ট কমান্ডের শেষ ধাপ:

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 সহ টুলবক্স সার্ভারটি ক্লাউড রান-এ ডেপ্লয় করার প্রক্রিয়া শুরু হবে। সফলভাবে ডেপ্লয়মেন্ট হলে, আপনি নিচের মতো একটি বার্তা দেখতে পাবেন:

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 ভিজিট করতে পারেন। এতে পূর্বে দেখা "হ্যালো ওয়ার্ল্ড" বার্তাটি প্রদর্শিত হওয়া উচিত।

আপনি গুগল ক্লাউড কনসোল থেকেও ক্লাউড রান-এ যেতে পারেন এবং সেখানে থাকা পরিষেবাগুলোর তালিকায় টুলবক্স পরিষেবাটি দেখতে পাবেন।

দ্রষ্টব্য: আপনি যদি আপনার হোটেল এজেন্ট স্থানীয়ভাবে চালাতে চান এবং একই সাথে নতুনভাবে স্থাপন করা ক্লাউড রান পরিষেবার সাথে সংযোগ করতে চান, তাহলে আপনাকে my-agents/hotel_agent_app/agent.py ফাইলটিতে শুধু একটি পরিবর্তন করতে হবে।

নিম্নলিখিতটির পরিবর্তে:

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

এটিকে নিচে দেওয়া Cloud Run সার্ভিসের Service URL-এ পরিবর্তন করুন:

toolbox = ToolboxSyncClient("CLOUD_RUN_SERVICE_URL")

পূর্বে যেমন দেখা গেছে adk run অথবা adk web ব্যবহার করে এজেন্ট অ্যাপ্লিকেশনটি পরীক্ষা করে দেখুন।

ক্লাউড রানে হোটেল এজেন্ট অ্যাপ স্থাপন করা

প্রথম ধাপ হলো, উপরে দেওয়া নির্দেশনা অনুযায়ী my-agents/hotel_agent_app/agent.py ফাইলে পরিবর্তন করে সেটিকে লোকাল হোস্টের পরিবর্তে ক্লাউড রানে চলমান টুলবক্স সার্ভিস ইউআরএল-এর দিকে নির্দেশ করা নিশ্চিত করা।

একটি নতুন ক্লাউড শেল টার্মিনালে অথবা বিদ্যমান টার্মিনাল সেশনে, নিশ্চিত করুন যে আপনি আমাদের পূর্বে সেট আপ করা সঠিক পাইথন ভার্চুয়াল এনভায়রনমেন্টে আছেন।

প্রথমেই, নিচে দেখানো অনুযায়ী 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

অবশেষে, নিচে দেওয়া 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

এর মাধ্যমে ক্লাউড রান-এ হোটেল এজেন্ট অ্যাপ্লিকেশনটি ডেপ্লয় করার প্রক্রিয়া শুরু হবে। এটি সোর্সগুলো আপলোড করবে, সেগুলোকে একটি ডকার কন্টেইনারে প্যাকেজ করবে, আর্টিফ্যাক্ট রেজিস্ট্রি-তে পুশ করবে এবং তারপর ক্লাউড রান-এ সার্ভিসটি ডেপ্লয় করবে। এতে কয়েক মিনিট সময় লাগতে পারে, তাই অনুগ্রহ করে ধৈর্য ধরুন।

আপনি নিচেরটির মতো একটি বার্তা দেখতে পাবেন:

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

সফলভাবে ডেপ্লয়মেন্ট সম্পন্ন হলে, আপনাকে সার্ভিস ইউআরএল (Service URL)-এর জন্য একটি ভ্যালু দেওয়া হবে, যা আপনি ব্রাউজারে অ্যাক্সেস করে সেই একই ওয়েব অ্যাপ্লিকেশনটি দেখতে পারবেন, যেটি ব্যবহার করে আপনি হোটেল এজেন্টের সাথে চ্যাট করেছিলেন, যেমনটি আমরা আগে লোকাল সেটআপের সময় দেখেছিলাম।

575191f524dd097d.png

১০. পরিচ্ছন্নতা

আপনার গুগল ক্লাউড অ্যাকাউন্টে চলমান চার্জ এড়ানোর জন্য, এই কর্মশালার সময় আমাদের তৈরি করা রিসোর্সগুলো মুছে ফেলা জরুরি। আমরা ক্লাউড এসকিউএল ইনস্ট্যান্সটি মুছে ফেলব এবং ঐচ্ছিকভাবে, যদি আপনি ক্লাউড রান-এ টুলবক্স এবং হোটেলস অ্যাপ ডেপ্লয় করে থাকেন, তাহলে আমরা সেই সার্ভিসগুলোও মুছে ফেলব।

আপনার প্রজেক্ট এবং অঞ্চল অনুযায়ী নিম্নলিখিত এনভায়রনমেন্ট ভেরিয়েবলগুলো সঠিকভাবে সেট করা আছে কিনা, তা নিশ্চিত করুন:

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

নিম্নলিখিত দুটি কমান্ড আমাদের স্থাপন করা ক্লাউড রান পরিষেবাগুলি মুছে দেয়:

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

নিম্নলিখিত কমান্ডটি ক্লাউড SQL ইনস্ট্যান্সটি মুছে ফেলে:

gcloud sql instances delete hoteldb-instance

১১. অভিনন্দন

অভিনন্দন, আপনি এজেন্ট ডেভেলপমেন্ট কিট (ADK) ব্যবহার করে সফলভাবে একটি ট্র্যাভেল এজেন্ট তৈরি করেছেন, যা ডেটাবেসের জন্য এমসিপি টুলবক্স (MCP Toolbox for Databases) ব্যবহার করে। আপনি আরও শিখেছেন কীভাবে এজেন্টদের আপনার নিজস্ব ডেটাবেসের সাথে সংযুক্ত করতে হয় এবং ঐচ্ছিকভাবে, ক্লাউড রান-এ এজেন্ট ও টুলবক্সটি ইনস্টল করতে হয়।

রেফারেন্স নথি