1. ভূমিকা
এই কোডল্যাবে, আপনি এজেন্ট ডেভেলপমেন্ট কিট (ADK) ব্যবহার করে একটি এজেন্ট তৈরি করবেন যা ডেটাবেসের জন্য MCP টুলবক্স ব্যবহার করে।
কোডল্যাবের মাধ্যমে, আপনি নিম্নরূপ ধাপে ধাপে পদ্ধতি ব্যবহার করবেন:
- PostgreSQL ডাটাবেসের জন্য একটি ক্লাউড SQL সরবরাহ করুন যাতে হোটেল ডাটাবেস এবং নমুনা ডেটা থাকবে।
- ডেটাবেসের জন্য MCP টুলবক্স সেটআপ করুন, যা ডেটাতে অ্যাক্সেস প্রদান করে।
- এজেন্ট ডেভেলপমেন্ট কিট (ADK) ব্যবহার করে এমন একটি এজেন্ট ডিজাইন এবং ডেভেলপ করুন যা ব্যবহারকারীর প্রশ্নের উত্তর দেওয়ার জন্য MCP টুলবক্স ব্যবহার করবে।
- ক্লাউড রান পরিষেবার মাধ্যমে স্থানীয়ভাবে এবং গুগল ক্লাউডে ডেটাবেসের জন্য এজেন্ট এবং এমসিপি টুলবক্স পরীক্ষা করার বিকল্পগুলি অন্বেষণ করুন।

তুমি কি করবে
- এমন একটি এজেন্ট ডিজাইন, তৈরি এবং মোতায়েন করুন যা কোনও স্থানে হোটেল সম্পর্কে ব্যবহারকারীদের প্রশ্নের উত্তর দেবে অথবা নাম অনুসারে হোটেল অনুসন্ধান করবে।
তুমি কি শিখবে
- নমুনা ডেটা সহ PostgreSQL ডাটাবেসের জন্য একটি ক্লাউড SQL প্রভিশনিং এবং পপুলেট করা।
- PostgreSQL ডাটাবেস ইনস্ট্যান্সের জন্য ক্লাউড SQL এর জন্য ডেটাবেসের জন্য MCP টুলবক্স সেটআপ করুন।
- ব্যবহারকারীর প্রশ্নের উত্তর দেওয়ার জন্য এজেন্ট ডেভেলপমেন্ট কিট (ADK) ব্যবহার করে একটি এজেন্ট ডিজাইন এবং ডেভেলপ করুন।
- স্থানীয় পরিবেশে ডাটাবেসের জন্য এজেন্ট এবং এমসিপি টুলবক্স পরীক্ষা করে দেখুন।
- (ঐচ্ছিকভাবে) গুগল ক্লাউডে ডেটাবেসের জন্য এজেন্ট এবং এমসিপি টুলবক্স স্থাপন করুন।
তোমার যা লাগবে
- ক্রোম ওয়েব ব্রাউজার
- একটি জিমেইল অ্যাকাউন্ট
- বিলিং সক্ষম করা একটি ক্লাউড প্রকল্প
সকল স্তরের ডেভেলপারদের জন্য (নতুনদের সহ) তৈরি এই কোডল্যাবটি তার নমুনা অ্যাপ্লিকেশনে পাইথন ব্যবহার করে। তবে, পাইথনের জ্ঞানের প্রয়োজন নেই এবং উপস্থাপিত ধারণাগুলি বোঝার জন্য মৌলিক কোড পড়ার ক্ষমতা যথেষ্ট হবে।
2. শুরু করার আগে
একটি প্রকল্প তৈরি করুন
- গুগল ক্লাউড কনসোলে , প্রজেক্ট সিলেক্টর পৃষ্ঠায়, একটি গুগল ক্লাউড প্রজেক্ট নির্বাচন করুন বা তৈরি করুন।
- আপনার ক্লাউড প্রোজেক্টের জন্য বিলিং সক্ষম আছে কিনা তা নিশ্চিত করুন। কোনও প্রোজেক্টে বিলিং সক্ষম আছে কিনা তা কীভাবে পরীক্ষা করবেন তা শিখুন।
- আপনি ক্লাউড শেল ব্যবহার করবেন, এটি গুগল ক্লাউডে চলমান একটি কমান্ড-লাইন পরিবেশ যা bq সহ প্রিলোডেড আসে। গুগল ক্লাউড কনসোলের শীর্ষে অ্যাক্টিভেট ক্লাউড শেল ক্লিক করুন।

- ক্লাউড শেলের সাথে সংযুক্ত হয়ে গেলে, আপনি নিম্নলিখিত কমান্ড ব্যবহার করে পরীক্ষা করতে পারবেন যে আপনি ইতিমধ্যেই প্রমাণীকরণপ্রাপ্ত এবং প্রকল্পটি আপনার প্রকল্প আইডিতে সেট করা আছে কিনা:
gcloud auth list
- 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 কমান্ড এবং ব্যবহারের জন্য ডকুমেন্টেশন দেখুন।
৩. একটি ক্লাউড SQL ইনস্ট্যান্স তৈরি করুন
আমাদের হোটেলের ডেটা সংরক্ষণের জন্য আমরা PostgreSQL ইনস্ট্যান্সের জন্য একটি Google Cloud SQL ব্যবহার করব। PostgreSQL এর জন্য Cloud SQL হল একটি সম্পূর্ণরূপে পরিচালিত ডাটাবেস পরিষেবা যা আপনাকে 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
এই কমান্ডটি কার্যকর করতে প্রায় ৩-৫ মিনিট সময় লাগে। কমান্ডটি সফলভাবে কার্যকর হয়ে গেলে, আপনার ক্লাউড SQL ইনস্ট্যান্স তথ্য যেমন NAME, DATABASE_VERSION, LOCATION ইত্যাদি সহ একটি আউটপুট দেখতে পাবেন যা নির্দেশ করে যে কমান্ডটি সম্পন্ন হয়েছে।
৪. হোটেল ডাটাবেস প্রস্তুত করুন
এখন আমাদের কাজ হবে আমাদের হোটেল এজেন্টের জন্য কিছু নমুনা ডেটা তৈরি করা।
ক্লাউড কনসোলের ক্লাউড SQL পৃষ্ঠাটি দেখুন। আপনি hoteldb-instance প্রস্তুত এবং তৈরি দেখতে পাবেন। নীচে দেখানো হিসাবে ইনস্ট্যান্সের নামের উপর ক্লিক করুন ( hoteldb-instance ):

ক্লাউড এসকিউএল এর বাম মেনু থেকে, নীচে দেখানো Cloud SQL Studio মেনু বিকল্পটি দেখুন:

এটি আপনাকে ক্লাউড SQL স্টুডিওতে সাইন ইন করতে বলবে যার মাধ্যমে আমরা কয়েকটি SQL কমান্ড দেব। Database বিকল্পের জন্য postgres নির্বাচন করুন এবং User এবং Password উভয়ের জন্য, ব্যবহার করার জন্য মান হল postgres । AUTHENTICATE এ ক্লিক করুন।
প্রথমে নীচের স্কিমা অনুসারে হোটেল টেবিল তৈরি করা যাক। ক্লাউড এসকিউএল স্টুডিওর এডিটর প্যানে, নিম্নলিখিত এসকিউএল কার্যকর করুন:
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;
নীচে দেখানো হোটেল টেবিলে আপনার বেশ কয়েকটি রেকর্ড দেখতে পাওয়া উচিত:

আমরা একটি ক্লাউড SQL ইনস্ট্যান্স সেট আপ করার প্রক্রিয়া সম্পন্ন করেছি এবং আমাদের নমুনা ডেটা তৈরি করেছি। পরবর্তী বিভাগে, আমরা ডেটাবেসের জন্য MCP টুলবক্স সেট আপ করব।
৫. ডাটাবেসের জন্য MCP টুলবক্স সেটআপ করুন
ডেটাবেসের জন্য MCP টুলবক্স হল ডাটাবেসের জন্য একটি ওপেন সোর্স MCP সার্ভার। এটি এন্টারপ্রাইজ-গ্রেড এবং উৎপাদন-মানের কথা মাথায় রেখে ডিজাইন করা হয়েছে। এটি আপনাকে সংযোগ পুলিং, প্রমাণীকরণ এবং আরও অনেক জটিলতা মোকাবেলা করে সহজে, দ্রুত এবং আরও নিরাপদে সরঞ্জামগুলি বিকাশ করতে সক্ষম করে।
টুলবক্স আপনাকে জেনারেশন এআই টুল তৈরি করতে সাহায্য করে যা আপনার এজেন্টদের আপনার ডাটাবেসের ডেটা অ্যাক্সেস করতে দেয়। টুলবক্স প্রদান করে:
- সরলীকৃত উন্নয়ন: ১০টিরও কম লাইনের কোডে আপনার এজেন্টের সাথে টুলগুলিকে একীভূত করুন, একাধিক এজেন্ট বা ফ্রেমওয়ার্কের মধ্যে টুলগুলি পুনঃব্যবহার করুন এবং আরও সহজে টুলের নতুন সংস্করণ স্থাপন করুন।
- উন্নত কর্মক্ষমতা: সংযোগ পুলিং, প্রমাণীকরণ এবং আরও অনেক কিছুর মতো সর্বোত্তম অনুশীলন।
- উন্নত নিরাপত্তা: আপনার ডেটাতে আরও নিরাপদ অ্যাক্সেসের জন্য সমন্বিত প্রমাণীকরণ
- এন্ড-টু-এন্ড পর্যবেক্ষণযোগ্যতা: ওপেনটেলিমেট্রির জন্য অন্তর্নির্মিত সমর্থন সহ আউট অফ দ্য বক্স মেট্রিক্স এবং ট্রেসিং।
টুলবক্স আপনার অ্যাপ্লিকেশনের অর্কেস্ট্রেশন ফ্রেমওয়ার্ক এবং আপনার ডাটাবেসের মধ্যে অবস্থিত, একটি নিয়ন্ত্রণ সমতল প্রদান করে যা সরঞ্জামগুলিকে সংশোধন, বিতরণ বা আহ্বান করতে ব্যবহৃত হয়। এটি আপনাকে সরঞ্জামগুলি সংরক্ষণ এবং আপডেট করার জন্য একটি কেন্দ্রীভূত অবস্থান প্রদান করে আপনার সরঞ্জামগুলির ব্যবস্থাপনাকে সহজ করে তোলে, যা আপনাকে এজেন্ট এবং অ্যাপ্লিকেশনগুলির মধ্যে সরঞ্জামগুলি ভাগ করে নেওয়ার এবং আপনার অ্যাপ্লিকেশনটি পুনরায় স্থাপন না করেই সেই সরঞ্জামগুলি আপডেট করার অনুমতি দেয়।

আপনি দেখতে পাচ্ছেন যে MCP টুলবক্স ফর ডাটাবেস দ্বারা সমর্থিত একটি ডাটাবেস হল Cloud SQL এবং আমরা পূর্ববর্তী বিভাগে এটির ব্যবস্থা করেছি।
টুলবক্স ইনস্টল করা
ক্লাউড শেল টার্মিনাল খুলুন এবং mcp-toolbox নামে একটি ফোল্ডার তৈরি করুন।
mkdir mcp-toolbox
নিচের কমান্ডের মাধ্যমে mcp-toolbox ফোল্ডারে যান:
cd mcp-toolbox
নিচে দেওয়া স্ক্রিপ্টের মাধ্যমে MCP Toolbox for Databases এর বাইনারি ভার্সনটি ইনস্টল করুন। নিচে দেওয়া কমান্ডটি লিনাক্সের জন্য, কিন্তু যদি আপনি Mac বা Windows ব্যবহার করেন, তাহলে নিশ্চিত করুন যে আপনি সঠিক বাইনারিটি ডাউনলোড করছেন। আপনার অপারেশন সিস্টেম এবং আর্কিটেকচারের রিলিজ পৃষ্ঠাটি দেখুন এবং সঠিক বাইনারিটি ডাউনলোড করুন।
export VERSION=0.18.0
curl -O https://storage.googleapis.com/genai-toolbox/v$VERSION/linux/amd64/toolbox
chmod +x toolbox
এখন আমাদের ব্যবহারের জন্য টুলবক্সের বাইনারি সংস্করণ প্রস্তুত। আসুন যাচাই করি যে আমরা টুলবক্স বাইনারিটি সঠিকভাবে সেট আপ করেছি এবং এটি সঠিক সংস্করণটি নির্দেশ করে।
টুলবক্সের সংস্করণ নির্ধারণ করতে নিম্নলিখিত কমান্ডটি দিন:
./toolbox -v
এটি নিম্নলিখিতগুলির মতো একটি আউটপুট প্রিন্ট করবে:
toolbox version 0.18.0+binary.linux.amd64.3ca58b1
পরবর্তী ধাপ হল আমাদের ডেটা সোর্স এবং অন্যান্য কনফিগারেশন দিয়ে টুলবক্সটি কনফিগার করা।
tools.yaml কনফিগার করা হচ্ছে
টুলবক্স কনফিগার করার প্রাথমিক উপায় হল tools.yaml ফাইলের মাধ্যমে। একই ফোল্ডারে অর্থাৎ mcp-toolbox এ tools.yaml নামে একটি ফাইল তৈরি করুন, যার বিষয়বস্তু নীচে দেখানো হয়েছে।
আপনি ক্লাউড শেলে উপলব্ধ ন্যানো এডিটরটি ব্যবহার করতে পারেন। ন্যানো কমান্ডটি নিম্নরূপ: " nano tools.yaml "।
আপনার Google Cloud Project Id দিয়ে YOUR_PROJECT_ID মানটি প্রতিস্থাপন করতে ভুলবেন না।
sources:
my-cloud-sql-source:
kind: cloud-sql-postgres
project: YOUR_PROJECT_ID
region: us-central1
instance: hoteldb-instance
database: postgres
user: postgres
password: "postgres"
tools:
search-hotels-by-name:
kind: postgres-sql
source: my-cloud-sql-source
description: Search for hotels based on name.
parameters:
- name: name
type: string
description: The name of the hotel.
statement: SELECT * FROM hotels WHERE name ILIKE '%' || $1 || '%';
search-hotels-by-location:
kind: postgres-sql
source: my-cloud-sql-source
description: Search for hotels based on location. Result is sorted by price from least to most expensive.
parameters:
- name: location
type: string
description: The location of the hotel.
statement: |
SELECT *
FROM hotels
WHERE location ILIKE '%' || $1 || '%'
ORDER BY
CASE price_tier
WHEN 'Midscale' THEN 1
WHEN 'Upper Midscale' THEN 2
WHEN 'Upscale' THEN 3
WHEN 'Upper Upscale' THEN 4
WHEN 'Luxury' THEN 5
ELSE 99 -- Handle any unexpected values, place them at the end
END;
toolsets:
my_first_toolset:
- search-hotels-by-name
- search-hotels-by-location
আসুন সংক্ষেপে ফাইলটি বুঝতে পারি:
-
Sourcesআপনার বিভিন্ন ডেটা সোর্সকে প্রতিনিধিত্ব করে যার সাথে একটি টুল ইন্টারঅ্যাক্ট করতে পারে। সোর্স এমন একটি ডেটা সোর্সকে প্রতিনিধিত্ব করে যার সাথে একটি টুল ইন্টারঅ্যাক্ট করতে পারে। আপনি আপনার tools.yaml ফাইলের সোর্স বিভাগেSourcesএকটি মানচিত্র হিসাবে সংজ্ঞায়িত করতে পারেন। সাধারণত, একটি সোর্স কনফিগারেশনে ডাটাবেসের সাথে সংযোগ স্থাপন এবং ইন্টারঅ্যাক্ট করার জন্য প্রয়োজনীয় যেকোনো তথ্য থাকবে। আমাদের ক্ষেত্রে, আমরা একটি একক সোর্স কনফিগার করেছি যা ক্রেডেনশিয়াল সহ আমাদের ক্লাউড SQL for PostgreSQL ইনস্ট্যান্সকে নির্দেশ করে। আরও তথ্যের জন্য, সোর্স রেফারেন্স দেখুন। -
Toolsএকজন এজেন্ট যে কাজগুলো করতে পারে তা সংজ্ঞায়িত করে - যেমন সোর্স পড়া এবং লেখা। টুল এমন একটি কাজ উপস্থাপন করে যা আপনার এজেন্ট নিতে পারে, যেমন একটি SQL স্টেটমেন্ট চালানো। আপনি আপনার tools.yaml ফাইলের টুলস বিভাগেToolsএকটি মানচিত্র হিসেবে সংজ্ঞায়িত করতে পারেন। সাধারণত, একটি টুলের কাজ করার জন্য একটি সোর্স প্রয়োজন হবে। আমাদের ক্ষেত্রে, আমরা দুটি টুল সংজ্ঞায়িত করছি:search-hotels-by-nameএবংsearch-hotels-by-locationএবং SQL এবং প্যারামিটার সহ এটি যে সোর্সে কাজ করছে তা নির্দিষ্ট করে। আরও তথ্যের জন্য, টুলস রেফারেন্স দেখুন। - অবশেষে, আমাদের কাছে
Toolsetআছে, যা আপনাকে এমন টুলসের গ্রুপ নির্ধারণ করতে দেয় যা আপনি একসাথে লোড করতে চান। এটি এজেন্ট বা অ্যাপ্লিকেশনের উপর ভিত্তি করে বিভিন্ন গ্রুপ নির্ধারণের জন্য কার্যকর হতে পারে। আমাদের ক্ষেত্রে, আমাদের কাছেmy_first_toolsetনামে একটি একক টুলসেট আছে, যেখানে আমরা সংজ্ঞায়িত দুটি টুল রয়েছে।
নিম্নলিখিত ধাপগুলি অনুসরণ করে ন্যানো এডিটরে tools.yaml ফাইলটি সংরক্ষণ করুন:
-
Ctrl + O("Write Out" কমান্ড) টিপুন। - এটি আপনাকে "ফাইলের নাম লেখার জন্য" নিশ্চিত করতে বলবে। শুধু
Enterটিপুন। - এবার
Ctrl + Xটিপে বেরিয়ে আসুন।
ডাটাবেস সার্ভারের জন্য MCP টুলবক্স চালান
সার্ভারটি শুরু করতে নিম্নলিখিত কমান্ডটি ( mcp-toolbox ফোল্ডার থেকে) চালান:
./toolbox --tools-file "tools.yaml"
আদর্শভাবে আপনি এমন একটি আউটপুট দেখতে পাবেন যে সার্ভারটি আমাদের ডেটা সোর্সের সাথে সংযোগ স্থাপন করতে সক্ষম হয়েছে এবং টুলসেট এবং টুল লোড করেছে। একটি নমুনা আউটপুট নীচে দেওয়া হল:
2025-09-05T12:56:28.490964335Z INFO "Initialized 1 sources."
2025-09-05T12:56:28.491127294Z INFO "Initialized 0 authServices."
2025-09-05T12:56:28.491184521Z INFO "Initialized 2 tools."
2025-09-05T12:56:28.491223782Z INFO "Initialized 2 toolsets."
2025-09-05T12:56:28.497457533Z INFO "Server ready to serve!"
MCP টুলবক্স সার্ভারটি ডিফল্টভাবে 5000 পোর্টে চলে। যদি আপনি দেখেন যে 5000 পোর্ট ইতিমধ্যেই ব্যবহৃত হচ্ছে, তাহলে নীচের কমান্ড অনুসারে অন্য একটি পোর্ট (যেমন 7000 ) ব্যবহার করতে দ্বিধা করবেন না। পরবর্তী কমান্ডগুলিতে 5000 পোর্টের পরিবর্তে 7000 ব্যবহার করুন।
./toolbox --tools-file "tools.yaml" --port 7000
এটি পরীক্ষা করার জন্য ক্লাউড শেল ব্যবহার করা যাক।
নিচের চিত্রের মতো ক্লাউড শেলে ওয়েব প্রিভিউতে ক্লিক করুন:

Change port- এ ক্লিক করুন এবং নিচের চিত্রের মতো পোর্টটি 5000-এ সেট করুন এবং Change and Preview-এ ক্লিক করুন।

এটি নিম্নলিখিত আউটপুট আনতে হবে:

ব্রাউজার URL-এ, URL-এর শেষে নিম্নলিখিতটি যোগ করুন:
/api/toolset
এটি বর্তমানে কনফিগার করা সরঞ্জামগুলি সামনে আনবে। একটি নমুনা আউটপুট নীচে দেখানো হয়েছে:
{
"serverVersion": "0.15.0+binary.linux.amd64.c934d7adfd4d012dab3f1707dc0adbdc7cb328cb",
"tools": {
"search-hotels-by-location": {
"description": "Search for hotels based on location. Result is sorted by price from least to most expensive.",
"parameters": [
{
"name": "location",
"type": "string",
"required": true,
"description": "The location of the hotel.",
"authSources": []
}
],
"authRequired": []
},
"search-hotels-by-name": {
"description": "Search for hotels based on name.",
"parameters": [
{
"name": "name",
"type": "string",
"required": true,
"description": "The name of the hotel.",
"authSources": []
}
],
"authRequired": []
}
}
}
ডাটাবেস UI এর জন্য MCP টুলবক্সের মাধ্যমে টুলগুলি পরীক্ষা করুন
টুলবক্স একটি ভিজ্যুয়াল ইন্টারফেস ( টুলবক্স UI ) প্রদান করে যা একটি সাধারণ ওয়েব UI এর মধ্যে প্যারামিটার পরিবর্তন করে, হেডার পরিচালনা করে এবং কল সম্পাদন করে সরাসরি টুলের সাথে ইন্টারঅ্যাক্ট করে।
যদি আপনি এটি পরীক্ষা করে দেখতে চান, তাহলে আপনি --ui বিকল্পের সাহায্যে টুলবক্স সার্ভার চালু করার জন্য ব্যবহৃত পূর্ববর্তী কমান্ডটি চালাতে পারেন।
এটি করার জন্য, আপনার চলমান ডেটাবেস সার্ভারের জন্য MCP টুলবক্সের পূর্ববর্তী ইনস্ট্যান্সটি বন্ধ করুন এবং নিম্নলিখিত কমান্ডটি দিন:
./toolbox --tools-file "tools.yaml" --ui
আদর্শভাবে, আপনার এমন একটি আউটপুট দেখা উচিত যেখানে সার্ভারটি আমাদের ডেটা সোর্সের সাথে সংযোগ স্থাপন করতে সক্ষম হয়েছে এবং টুলসেট এবং টুলস লোড করেছে। নীচে একটি নমুনা আউটপুট দেওয়া হল এবং আপনি লক্ষ্য করবেন যে এটিতে উল্লেখ করা হবে যে টুলবক্স UI চালু এবং চলমান।
2025-09-08T02:44:11.561572538Z INFO "Initialized 1 sources."
2025-09-08T02:44:11.561966395Z INFO "Initialized 0 authServices."
2025-09-08T02:44:11.562060934Z INFO "Initialized 2 tools."
2025-09-08T02:44:11.562105678Z INFO "Initialized 2 toolsets."
2025-09-08T02:44:11.568209923Z INFO "Server ready to serve!"
2025-09-08T02:44:11.568259411Z INFO "Toolbox UI is up and running at: http://localhost:5000/ui"
UI url-এ ক্লিক করুন এবং নিশ্চিত করুন যে আপনার কাছে আছে
/ui
URL এর শেষে (যদি আপনি এটি ক্লাউড শেলে চালান, তাহলে ব্রাউজার পুনঃনির্দেশের ফলে /ui শেষে থাকবে না)। এটি নীচে দেখানো একটি UI প্রদর্শন করবে:

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

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

ডেটাবেসের জন্য MCP টুলকিট আপনার জন্য সরঞ্জামগুলি যাচাই এবং পরীক্ষা করার জন্য একটি পাইথোনিক উপায়ও বর্ণনা করে, যা এখানে নথিভুক্ত করা হয়েছে।
যদি আমরা আগের চিত্রটি আবার দেখি (যেমনটি নীচে দেখানো হয়েছে), আমরা এখন ডাটাবেস এবং MCP সার্ভার সেটআপ সম্পন্ন করেছি এবং আমাদের সামনে দুটি পথ রয়েছে:

- কিভাবে আপনি MCP সার্ভারকে একটি AI অ্যাসিস্টেড টার্মিনাল / IDE তে কনফিগার করতে পারেন তা বুঝতে, ধাপ 6 এ যান। এটি আমাদের MCP টুলবক্স সার্ভারকে Gemini CLI তে কীভাবে একীভূত করে তা কভার করবে।
- পাইথন ব্যবহার করে এজেন্ট ডেভেলপমেন্ট কিট (ADK) কীভাবে ব্যবহার করবেন তা বুঝতে, MCP সার্ভার টুলবক্সকে একটি টুল হিসেবে ব্যবহার করতে পারে এমন নিজস্ব এজেন্ট লিখতে, ডেটাসেট সম্পর্কিত প্রশ্নের উত্তর দিতে, ধাপ 7 এবং 8 এ যান।
৬. জেমিনি সিএলআই-তে এমসিপি টুলবক্স একীভূত করা
জেমিনি সিএলআই একটি ওপেন-সোর্স এআই এজেন্ট যা জেমিনির শক্তি সরাসরি আপনার টার্মিনালে নিয়ে আসে। আপনি এটি কোডিং এবং নন-কোডিং উভয় কাজের জন্যই ব্যবহার করতে পারেন। এটি বিভিন্ন সরঞ্জামের সাথে সমন্বিত, এবং এমসিপি সার্ভারের জন্য সমর্থনও প্রদান করে।
যেহেতু আমাদের একটি কার্যকরী MCP সার্ভার আছে, এই বিভাগে আমাদের লক্ষ্য হবে Gemini CLI-তে ডেটাবেস সার্ভারের জন্য MCP টুলবক্স কনফিগার করা এবং তারপর Gemini CLI ব্যবহার করে আমাদের ডেটার সাথে কথা বলা।
আমাদের প্রথম ধাপ হবে নিশ্চিত করা যে আপনার টুলবক্সটি ক্লাউড শেল টার্মিনালে চালু আছে কিনা। ধরে নিচ্ছি যে আপনি এটি ডিফল্ট পোর্ট 5000 এ চালাচ্ছেন, MCP সার্ভার ইন্টারফেসটি নিম্নলিখিত এন্ডপয়েন্টে উপলব্ধ: http://localhost:5000/mcp ।
একটি নতুন টার্মিনাল খুলুন এবং my-gemini-cli-project নামে একটি ফোল্ডার তৈরি করুন। my-gemini-cli-project ফোল্ডারেও যান।
mkdir my-gemini-cli-project
cd my-gemini-cli-project
জেমিনি সিএলআই-তে কনফিগার করা এমসিপি সার্ভারের তালিকায় এমসিপি সার্ভার যুক্ত করতে নিম্নলিখিত কমান্ডটি দিন।
gemini mcp add --scope="project" --transport="http" "MCPToolbox" "http://localhost:5000/mcp"
আপনি নিম্নলিখিত কমান্ডের মাধ্যমে জেমিনি সিএলআইতে কনফিগার করা এমসিপি সার্ভারের বর্তমান তালিকাটি পরীক্ষা করতে পারেন:
gemini mcp list
আদর্শভাবে, আপনার MCPToolboxটি দেখতে হবে যা আমরা কনফিগার করেছি এবং এর পাশে একটি সবুজ টিক চিহ্ন রয়েছে, যা নির্দেশ করে যে Gemini CLI MCP সার্ভারের সাথে সংযোগ করতে সক্ষম হয়েছে।
Configured MCP servers:
✓ MCPToolbox: http://localhost:5000/mcp (http) - Connected
একই টার্মিনাল থেকে, নিশ্চিত করুন যে আপনি my-gemini-cli-project ফোল্ডারে আছেন। gemini কমান্ডের মাধ্যমে Gemini CLI চালু করুন।
এটি জেমিনি সিএলআই ইন্টারফেসটি আনবে এবং আপনি দেখতে পাবেন যে এটিতে এখন ১টি এমসিপি সার্ভার কনফিগার করা আছে। আপনি /mcp list কমান্ড ব্যবহার করে এমসিপি সার্ভার এবং সরঞ্জামগুলির তালিকা দেখতে পারেন। উদাহরণস্বরূপ, এখানে একটি নমুনা আউটপুট রয়েছে:

আপনি এখন যেকোনো প্রম্পট দিতে পারেন:
-
Which hotels are there in Basel? -
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 টুলবক্স ফর ডাটাবেস প্যাকেজ ইনস্টল করুন:
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.
create Creates a new app in the current folder with prepopulated agent template.
deploy Deploys agent to hosted environments.
eval Evaluates an agent given the eval sets.
run Runs an interactive CLI for a certain agent.
web Starts a FastAPI server with Web UI for agents.
আমাদের প্রথম এজেন্ট অ্যাপ্লিকেশন তৈরি করা হচ্ছে
আমরা এখন adk ব্যবহার করে আমাদের হোটেল এজেন্ট অ্যাপ্লিকেশনের জন্য একটি স্ক্যাফোল্ডিং তৈরি করব adk create কমান্ডের মাধ্যমে যার নাম ** (hotel-agent-app) ** নিচে দেওয়া হল।
adk create hotel-agent-app
ধাপগুলি অনুসরণ করুন এবং নিম্নলিখিতগুলি নির্বাচন করুন:
- রুট এজেন্টের জন্য একটি মডেল নির্বাচন করার জন্য জেমিনি মডেল।
- ব্যাকএন্ডের জন্য Vertex AI বেছে নিন।
- আপনার ডিফল্ট গুগল প্রজেক্ট আইডি এবং অঞ্চল প্রদর্শিত হবে। ডিফল্টটি নিজেই নির্বাচন করুন।
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
এজেন্টের জন্য একটি ডিফল্ট টেমপ্লেট এবং প্রয়োজনীয় ফাইল তৈরি করা হয়েছে এমন ফোল্ডারটি লক্ষ্য করুন।
প্রথমে .env ফাইলটি। যার বিষয়বস্তু নীচে দেখানো হয়েছে:
GOOGLE_GENAI_USE_VERTEXAI=1
GOOGLE_CLOUD_PROJECT=YOUR_GOOGLE_PROJECT_ID
GOOGLE_CLOUD_LOCATION=YOUR_GOOGLE_PROJECT_REGION
মানগুলি নির্দেশ করে যে আমরা Google ক্লাউড প্রজেক্ট আইডি এবং অবস্থানের জন্য সংশ্লিষ্ট মানগুলির সাথে Vertex AI এর মাধ্যমে Gemini ব্যবহার করব।
তারপর আমাদের কাছে __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 নামে ডাকা হয়, তারা লার্জ ল্যাঙ্গুয়েজ মডেল (LLMs) কে তাদের মূল ইঞ্জিন হিসেবে ব্যবহার করে প্রাকৃতিক ভাষা বোঝার, যুক্তি, পরিকল্পনা, প্রতিক্রিয়া তৈরি করার এবং কীভাবে এগিয়ে যেতে হবে বা কোন সরঞ্জামগুলি ব্যবহার করতে হবে তা গতিশীলভাবে সিদ্ধান্ত নেওয়ার জন্য, যা নমনীয়, ভাষা-কেন্দ্রিক কাজের জন্য তাদের আদর্শ করে তোলে। 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)
শেষ লিঙ্কটিতে ক্লিক করলে এজেন্টটি পরীক্ষা করার জন্য একটি ওয়েব কনসোল আসবে। আপনি নীচের চিত্রের মতো ব্রাউজারে নিম্নলিখিতটি চালু দেখতে পাবেন:

লক্ষ্য করুন যে উপরের বাম দিকে, hotel-agent-app চিহ্নিত করা হয়েছে। আপনি এখন এজেন্টের সাথে কথোপকথন শুরু করতে পারেন। শহরগুলি সম্পর্কে জিজ্ঞাসা করার জন্য কয়েকটি প্রম্পট প্রদান করুন। কথোপকথনের একটি উদাহরণ নীচে দেখানো হয়েছে:

আপনি ক্লাউড শেল টার্মিনালে (Ctrl-C) চলমান প্রক্রিয়াটি বন্ধ করতে পারেন।
এজেন্ট পরীক্ষা করার একটি বিকল্প উপায় হল my-agents ফোল্ডার থেকে নিচে দেওয়া adk run কমান্ডের মাধ্যমে।
adk run hotel-agent-app
কমান্ডটি ব্যবহার করে দেখুন এবং আপনি কমান্ড লাইন (টার্মিনাল) এর মাধ্যমে এজেন্টের সাথে কথোপকথন করতে পারবেন। কথোপকথনটি বন্ধ করতে exit টাইপ করুন।
৮. আমাদের এজেন্টকে টুলের সাথে সংযুক্ত করা
এখন আমরা জানি কিভাবে একটি এজেন্ট লিখতে হয় এবং স্থানীয়ভাবে এটি পরীক্ষা করতে হয়। আমরা এই এজেন্টটিকে টুলসের সাথে সংযুক্ত করতে যাচ্ছি। ADK-এর প্রেক্ষাপটে, একটি টুল একটি AI এজেন্টকে প্রদত্ত একটি নির্দিষ্ট ক্ষমতার প্রতিনিধিত্ব করে, যা এটিকে তার মূল টেক্সট তৈরি এবং যুক্তি ক্ষমতার বাইরেও ক্রিয়া সম্পাদন করতে এবং বিশ্বের সাথে যোগাযোগ করতে সক্ষম করে।
আমাদের ক্ষেত্রে, আমরা এখন আমাদের এজেন্টকে ডেটাবেসের জন্য MCP টুলবক্সে কনফিগার করা টুল দিয়ে সজ্জিত করব।
নিম্নলিখিত কোডটি ব্যবহার করে 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 টুলবক্স চালু করুন। আমরা আগে যেমন পরীক্ষা করেছি, আপনার কাছে এটি স্থানীয়ভাবে পোর্ট 5000-এ চলমান থাকতে পারে। যদি না থাকে, তাহলে সার্ভারটি শুরু করতে নিম্নলিখিত কমান্ডটি ( mcp-toolbox ফোল্ডার থেকে) চালান:
./toolbox --tools_file "tools.yaml"
আদর্শভাবে আপনি এমন একটি আউটপুট দেখতে পাবেন যে সার্ভারটি আমাদের ডেটা সোর্সের সাথে সংযোগ স্থাপন করতে সক্ষম হয়েছে এবং টুলসেট এবং টুল লোড করেছে। একটি নমুনা আউটপুট নীচে দেওয়া হল:
2025-09-05T12:56:28.490964335Z INFO "Initialized 1 sources."
2025-09-05T12:56:28.491127294Z INFO "Initialized 0 authServices."
2025-09-05T12:56:28.491184521Z INFO "Initialized 2 tools."
2025-09-05T12:56:28.491223782Z INFO "Initialized 2 toolsets."
2025-09-05T12:56:28.497457533Z INFO "Server ready to serve!"
MCP সার্ভারটি সফলভাবে শুরু হয়ে গেলে, অন্য একটি টার্মিনালে, নীচে দেখানো adk run ( my-agents ফোল্ডার থেকে) কমান্ডের মাধ্যমে আমরা আগে যেমন করেছি, এজেন্টটি চালু করুন। আপনি চাইলে adk web কমান্ডটিও ব্যবহার করতে পারেন।
$ adk run hotel-agent-app/
Log setup complete: /tmp/agents_log/agent.20250423_170001.log
To access latest log: tail -F /tmp/agents_log/agent.latest.log
Running agent hotel_agent, type exit to exit.
user: what can you do for me?
[hotel_agent]: I can help you find hotels in a specific city or search for hotels by name.
user: I would like to search for hotels
[hotel_agent]: Great, do you have a specific city or hotel name in mind?
user: Yes a specific city
[hotel_agent]: Great, which city are you interested in?
user: Basel
[hotel_agent]: OK. I found three hotels in Basel: Hilton Basel, Hyatt Regency Basel, and Holiday Inn Basel.
লক্ষ্য করুন যে এজেন্ট এখন ডেটাবেসের জন্য MCP টুলবক্সে ( search-hotels-by-name এবং search-hotels-by-location ) কনফিগার করা দুটি টুল ব্যবহার করছে এবং আমাদের সঠিক বিকল্পগুলি প্রদান করছে। এরপর এটি PostgreSQL ইনস্ট্যান্স ডাটাবেস থেকে নির্বিঘ্নে ডেটা পুনরুদ্ধার করতে এবং সেই অনুযায়ী প্রতিক্রিয়া ফর্ম্যাট করতে সক্ষম।
এটি আমাদের হোটেল এজেন্টের স্থানীয় উন্নয়ন এবং পরীক্ষা সম্পন্ন করে, যা আমরা এজেন্ট ডেভেলপমেন্ট কিট (ADK) ব্যবহার করে তৈরি করেছি এবং যা ডেটাবেসের জন্য MCP টুলবক্সে কনফিগার করা সরঞ্জাম দ্বারা চালিত ছিল।
৯. (ঐচ্ছিক) ক্লাউড রানে ডাটাবেস এবং এজেন্টের জন্য MCP টুলবক্স স্থাপন করা
পূর্ববর্তী বিভাগে, আমরা MCP টুলবক্স সার্ভার চালু করার জন্য ক্লাউড শেল টার্মিনাল ব্যবহার করেছি এবং এজেন্টের সাহায্যে টুলগুলি পরীক্ষা করেছি। এটি ক্লাউড শেল পরিবেশে স্থানীয়ভাবে চলমান ছিল।
আপনার কাছে MCP টুলবক্স সার্ভার এবং এজেন্ট টু গুগল ক্লাউড পরিষেবা উভয়ই স্থাপন করার বিকল্প রয়েছে যা আমাদের জন্য এই অ্যাপ্লিকেশনগুলি হোস্ট করতে পারে।
ক্লাউড রানে MCP টুলবক্স সার্ভার হোস্ট করা হচ্ছে
প্রথমে, আমরা MCP টুলবক্স সার্ভার দিয়ে শুরু করতে পারি এবং এটি ক্লাউড রানে হোস্ট করতে পারি। এটি আমাদের একটি পাবলিক এন্ডপয়েন্ট দেবে যা আমরা অন্য যেকোনো অ্যাপ্লিকেশন এবং/অথবা এজেন্ট অ্যাপ্লিকেশনের সাথেও ইন্টিগ্রেট করতে পারি। ক্লাউড রানে এটি হোস্ট করার নির্দেশাবলী এখানে দেওয়া হল। আমরা এখন মূল ধাপগুলি দেখে নেব।
একটি নতুন ক্লাউড শেল টার্মিনাল চালু করুন অথবা একটি বিদ্যমান ক্লাউড শেল টার্মিনাল ব্যবহার করুন। mcp-toolbox ফোল্ডারে যান, যেখানে toolbox বাইনারি এবং tools.yaml উপস্থিত রয়েছে।
নিম্নলিখিত কমান্ডগুলি চালান (প্রতিটি কমান্ডের জন্য একটি ব্যাখ্যা প্রদান করা হয়েছে):
আপনার Google ক্লাউড প্রজেক্ট আইডির দিকে নির্দেশ করার জন্য PROJECT_ID ভেরিয়েবল সেট করুন।
export PROJECT_ID="YOUR_GOOGLE_CLOUD_PROJECT_ID"
এরপর, যাচাই করুন যে প্রকল্পে নিম্নলিখিত Google ক্লাউড পরিষেবাগুলি সক্ষম করা আছে।
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 ফাইলটি গোপনে আপলোড করব এবং যেহেতু আমাদের Cloud Run-এ Toolbox ইনস্টল করতে হবে, তাই আমরা টুলবক্সের জন্য সর্বশেষ Container ইমেজটি ব্যবহার করব এবং 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="--tools_file=/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 দেখতে পারেন। এটিতে "হ্যালো ওয়ার্ল্ড" বার্তাটি প্রদর্শিত হবে যা আমরা আগে দেখেছি। এছাড়াও, উপলব্ধ সরঞ্জামগুলি দেখতে আপনি নিম্নলিখিত URL টিও দেখতে পারেন:
SERVICE URL/api/toolset
আপনি গুগল ক্লাউড কনসোল থেকে ক্লাউড রানেও যেতে পারেন এবং ক্লাউড রানের পরিষেবার তালিকায় উপলব্ধ টুলবক্স পরিষেবাটি দেখতে পাবেন।
দ্রষ্টব্য: যদি আপনি এখনও আপনার হোটেল এজেন্ট স্থানীয়ভাবে চালাতে চান এবং নতুন মোতায়েন করা ক্লাউড রান পরিষেবার সাথে সংযোগ স্থাপন করতে চান, তাহলে আপনাকে my-agents/hotel-agent-app/agent.py ফাইলে কেবল একটি পরিবর্তন করতে হবে।
নিম্নলিখিতগুলির পরিবর্তে:
toolbox = ToolboxSyncClient("http://127.0.0.1:5000")
নীচের দেওয়া অনুযায়ী ক্লাউড রান সার্ভিসের সার্ভিস ইউআরএলে এটি পরিবর্তন করুন:
toolbox = ToolboxSyncClient("CLOUD_RUN_SERVICE_URL")
আমরা আগে যেমন দেখেছি, adk run অথবা adk web ব্যবহার করে এজেন্ট অ্যাপ্লিকেশনটি পরীক্ষা করে দেখুন।
ক্লাউড রানে হোটেল এজেন্ট অ্যাপ স্থাপন করা
প্রথম ধাপ হল নিশ্চিত করা যে আপনি উপরে নির্দেশিত my-agents/hotel-agent-app/agent.py তে পরিবর্তন করেছেন যাতে স্থানীয় হোস্টের পরিবর্তে ক্লাউড রানে চলমান টুলবক্স পরিষেবা URL-এ নির্দেশ করা যায়।
একটি নতুন ক্লাউড শেল টার্মিনাল বা বিদ্যমান টার্মিনাল সেশনে, নিশ্চিত করুন যে আপনি সঠিক পাইথন ভার্চুয়াল পরিবেশে আছেন যা আমরা আগে সেট আপ করেছি।
প্রথমে, নীচে দেখানো 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 কমান্ডের মাধ্যমে Agent Application কে 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
সফলভাবে স্থাপনের পর, আপনাকে পরিষেবা URL-এর জন্য একটি মান প্রদান করা হবে, যা আপনি ব্রাউজারে অ্যাক্সেস করতে পারবেন এবং একই ওয়েব অ্যাপ্লিকেশনটি দেখতে পারবেন যা আপনাকে হোটেল এজেন্টের সাথে চ্যাট করার অনুমতি দিয়েছিল, যেমনটি আমরা আগে স্থানীয় সেটআপে দেখেছি।

১০. পরিষ্কার-পরিচ্ছন্নতা
আপনার গুগল ক্লাউড অ্যাকাউন্টে চলমান চার্জ এড়াতে, এই কর্মশালার সময় আমরা যে রিসোর্সগুলি তৈরি করেছি তা মুছে ফেলা গুরুত্বপূর্ণ। আমরা ক্লাউড এসকিউএল ইনস্ট্যান্স মুছে ফেলব এবং ঐচ্ছিকভাবে, যদি আপনি ক্লাউড রানে টুলবক্স এবং হোটেল অ্যাপ স্থাপন করে থাকেন, তাহলে আমরা সেই পরিষেবাগুলিও মুছে ফেলব।
আপনার প্রকল্প এবং অঞ্চল অনুসারে নিম্নলিখিত পরিবেশগত ভেরিয়েবলগুলি সঠিকভাবে সেট করা আছে কিনা তা নিশ্চিত করুন:
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 টুলবক্স ব্যবহার করে।