ডাটাবেসের জন্য MCP টুলবক্স: MCP ক্লায়েন্টদের জন্য BigQuery ডেটাসেট উপলব্ধ করা

১. ভূমিকা

এই কোডল্যাবে, আপনি আপনার BigQuery ডেটাসেটগুলো ব্যবহারযোগ্য করার জন্য MCP Toolbox for Databases ব্যবহার করবেন।

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

  1. পাবলিক BigQuery ডেটাসেট প্রোগ্রাম থেকে একটি নির্দিষ্ট BigQuery ডেটাসেট ("Google Cloud Release Notes") শনাক্ত করুন।
  2. MCP টুলবক্স ফর ডেটাবেস সেটআপ করুন, যা BigQuery ডেটাসেটের সাথে সংযোগ স্থাপন করে।
  3. এজেন্ট ডেভেলপমেন্ট কিট (ADK) ব্যবহার করে এমন একটি এজেন্ট তৈরি করুন যা গুগল ক্লাউড রিলিজ নোট সম্পর্কিত ব্যবহারকারীর প্রশ্নের উত্তর দেওয়ার জন্য এমসিপি টুলবক্স ব্যবহার করবে।

আপনি যা করবেন

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

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

  • BigQuery-এর পাবলিক ডেটাসেটগুলো অন্বেষণ করুন এবং একটি নির্দিষ্ট ডেটাসেট বেছে নিন।
  • যে BigQuery পাবলিক ডেটাসেটটি আমরা MCP ক্লায়েন্টদের কাছে উপলব্ধ করতে চাই, সেটির জন্য MCP Toolbox for Databases সেটআপ করুন।
  • ব্যবহারকারীর প্রশ্নের উত্তর দেওয়ার জন্য এজেন্ট ডেভেলপমেন্ট কিট (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 কমান্ড ও তার ব্যবহারবিধি জানতে ডকুমেন্টেশন দেখুন।

৩. গুগল রিলিজ নোটস ডেটাসেট এবং এমসিপি ক্লায়েন্ট

প্রথমেই, চলুন গুগল ক্লাউড রিলিজ নোটগুলো দেখে নেওয়া যাক, যা অফিসিয়াল গুগল ক্লাউড রিলিজ নোটস ওয়েবপেজে নিয়মিত আপডেট করা হয়, যার একটি স্ক্রিনশট নিচে দেখানো হলো:

e177d58f7a866838.png

আপনি ফিড ইউআরএল-এ সাবস্ক্রাইব করতে পারেন, কিন্তু কেমন হয় যদি আমরা আমাদের এজেন্ট চ্যাটে এই রিলিজ নোটগুলো সম্পর্কে সরাসরি জিজ্ঞাসা করতে পারতাম? হতে পারে একটি সাধারণ জিজ্ঞাসা, যেমন: "আমাকে গুগল ক্লাউড রিলিজ নোট সম্পর্কে আপডেট দিন"।

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

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

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

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

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

12c16960e74b57f9.png

সহজ কথায় সংক্ষেপে বলতে গেলে:

  1. এমসিপি টুলবক্স বাইনারি, কন্টেইনার ইমেজ হিসেবে পাওয়া যায় অথবা আপনি এটি সোর্স থেকে বিল্ড করতে পারেন।
  2. এটি এমন কিছু টুল সরবরাহ করে যা আপনি একটি tools.yaml ফাইলের মাধ্যমে কনফিগার করতে পারেন। এই টুলগুলোকে আপনার ডেটা সোর্সগুলোর সাথে সংযোগকারী হিসেবে ভাবা যেতে পারে। এটি যে বিভিন্ন ডেটা সোর্স সমর্থন করে তা আপনি দেখতে পারেন: AlloyDB, BigQuery, ইত্যাদি।
  3. যেহেতু এই টুলবক্সটি এখন MCP সমর্থন করে, তাই আপনার কাছে স্বয়ংক্রিয়ভাবে একটি MCP সার্ভার এন্ডপয়েন্ট থাকে যা এজেন্টরা (IDE) ব্যবহার করতে পারে অথবা আপনি এজেন্ট ডেভেলপমেন্ট কিট (ADK)-এর মতো বিভিন্ন ফ্রেমওয়ার্ক ব্যবহার করে আপনার এজেন্ট অ্যাপ্লিকেশন তৈরি করার সময়ও এটি কাজে লাগাতে পারেন।

এই ব্লগ পোস্টে আমাদের আলোচনার কেন্দ্রবিন্দু হবে নিচে উল্লেখিত বিষয়গুলো:

7527a2a4bff20adc.png

সংক্ষেপে, আমরা MCP টুলবক্স ফর ডেটাবেসেস-এ এমন একটি কনফিগারেশন তৈরি করতে যাচ্ছি যা আমাদের BigQuery ডেটাসেটের সাথে সংযোগ স্থাপন করতে জানে। এরপর আমরা এজেন্ট ডেভেলপমেন্ট কিট (ADK) ব্যবহার করে একটি এজেন্ট তৈরি করব যা MCP টুলবক্স এন্ডপয়েন্টের সাথে ইন্টিগ্রেট করবে এবং আমাদের ডেটাসেট সম্পর্কে জিজ্ঞাসা করার জন্য স্বাভাবিক কোয়েরি পাঠাতে দেবে। এটিকে এমন একটি এজেন্টিক অ্যাপ্লিকেশন হিসেবে ভাবুন যা আপনি তৈরি করছেন, যা আপনার BigQuery ডেটাসেটের সাথে কথা বলতে জানে এবং কিছু কোয়েরি চালায়।

৫. গুগল ক্লাউডের জন্য বিগকোয়েরি ডেটাসেট রিলিজ নোট

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

adb5593504dbb71d.png

পরীক্ষা হিসেবে, আমি নিচে দেখানো একটি সাধারণ কোয়েরি চালিয়ে ডেটাসেটটি যাচাই করে নিই:

SELECT
       product_name,description,published_at
     FROM
       `bigquery-public-data`.`google_cloud_release_notes`.`release_notes`
     WHERE
       DATE(published_at) >= DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY)
     GROUP BY product_name,description,published_at
     ORDER BY published_at DESC

এর মাধ্যমে আমি রিলিজ নোটস ডেটাসেট থেকে গত ৭ দিনে প্রকাশিত রেকর্ডগুলোর একটি তালিকা পাই।

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

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

আপনার লোকাল মেশিনে একটি টার্মিনাল খুলুন এবং 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

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

৭. ডেটাবেসের জন্য এমসিপি টুলবক্স কনফিগার করা

এখন, আমাদের BigQuery ডেটাসেট এবং টুলসগুলো tools.yaml ফাইলে সংজ্ঞায়িত করতে হবে, যা MCP Toolbox for Database-এর জন্য প্রয়োজন। এই tools.yaml ফাইলটিই টুলবক্স কনফিগার করার প্রধান উপায়।

একই ফোল্ডারে অর্থাৎ mcp-toolboxtools.yaml নামে একটি ফাইল তৈরি করুন, যার বিষয়বস্তু নিচে দেখানো হলো।

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

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

kind: source
name: my-bq-source
type: bigquery
project: gcp-experiments-349209
---
kind: tool
name: search_release_notes_bq
type: bigquery-sql
source: my-bq-source
description: Use this tool to get information on Google Cloud Release Notes.
statement: |
    SELECT
     product_name,description,published_at
    FROM
      `bigquery-public-data`.`google_cloud_release_notes`.`release_notes`
    WHERE
     DATE(published_at) >= DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY)
    GROUP BY product_name,description,published_at
    ORDER BY published_at DESC;
---
kind: toolset
name: my_bq_toolset
tools:
  - search_release_notes_bq

আসুন ফাইলটি সংক্ষেপে বুঝে নেওয়া যাক:

  1. সোর্সগুলো আপনার বিভিন্ন ডেটা সোর্সকে প্রতিনিধিত্ব করে, যেগুলোর সাথে একটি টুল ইন্টারঅ্যাক্ট করতে পারে। একটি সোর্স এমন একটি ডেটা সোর্সকে বোঝায় যার সাথে একটি টুল ইন্টারঅ্যাক্ট করতে পারে। আপনি আপনার tools.yaml ফাইলের sources সেকশনে সোর্সগুলোকে একটি ম্যাপ হিসেবে সংজ্ঞায়িত করতে পারেন। সাধারণত, একটি সোর্স কনফিগারেশনে ডাটাবেসের সাথে সংযোগ স্থাপন এবং ইন্টারঅ্যাক্ট করার জন্য প্রয়োজনীয় সমস্ত তথ্য থাকে। আমাদের ক্ষেত্রে, আমরা my-bq-source নামে একটি BigQuery সোর্স সংজ্ঞায়িত করেছি এবং আপনাকে আপনার Google Cloud প্রজেক্ট আইডি প্রদান করতে হবে। আরও তথ্যের জন্য, সোর্স রেফারেন্সটি দেখুন।
  2. টুলস এমন সব কাজ নির্ধারণ করে যা একজন এজেন্ট করতে পারে – যেমন কোনো সোর্স থেকে পড়া এবং তাতে লেখা। একটি টুল আপনার এজেন্টের একটি কাজকে বোঝায়, যেমন একটি SQL স্টেটমেন্ট চালানো। আপনি আপনার tools.yaml ফাইলের tools সেকশনে টুলসকে একটি ম্যাপ হিসেবে সংজ্ঞায়িত করতে পারেন। সাধারণত, কোনো টুলের কাজ করার জন্য একটি সোর্সের প্রয়োজন হয়। আমাদের ক্ষেত্রে, আমরা search_release_notes_bq নামে একটিমাত্র টুল সংজ্ঞায়িত করেছি। এটি প্রথম ধাপে সংজ্ঞায়িত করা BigQuery সোর্স my-bq-source রেফারেন্স করে। এতে সেই স্টেটমেন্ট এবং নির্দেশনাও রয়েছে যা AI এজেন্ট ক্লায়েন্টরা ব্যবহার করবে। আরও তথ্যের জন্য, টুলস রেফারেন্স দেখুন।
  3. সবশেষে, আমাদের কাছে রয়েছে টুলসেট, যা আপনাকে এমন টুলগুলোর গ্রুপ নির্ধারণ করার সুযোগ দেয় যেগুলো আপনি একসাথে লোড করতে চান। এজেন্ট বা অ্যাপ্লিকেশনের উপর ভিত্তি করে বিভিন্ন গ্রুপ নির্ধারণের জন্য এটি কার্যকর হতে পারে। আমাদের ক্ষেত্রে, একটি টুলসেট ডেফিনিশন রয়েছে যেখানে আমরা বর্তমানে শুধুমাত্র আমাদের সংজ্ঞায়িত একটি বিদ্যমান টুল search_release_notes_bq নির্ধারণ করেছি। আপনার একাধিক টুলসেট থাকতে পারে, যেগুলোতে বিভিন্ন টুলের সংমিশ্রণ থাকবে।

সুতরাং বর্তমানে, আমরা কেবল একটি টুল নির্ধারণ করেছি যা কোয়েরি অনুযায়ী গত ৭ দিনের রিলিজ নোট সংগ্রহ করে। কিন্তু আপনি প্যারামিটারগুলির সাথে বিভিন্ন সংমিশ্রণও ব্যবহার করতে পারেন।

MCP টুলবক্স ফর ডেটাবেসেস-এ BigQuery ডেটাসোর্স কনফিগারেশনের আরও কিছু বিস্তারিত তথ্য দেখে নিন।

৮. ডেটাবেসের জন্য এমসিপি টুলবক্স পরীক্ষা করা

আমরা mcp-toolbox ফোল্ডারে থাকা tools.yaml ফাইলটি দিয়ে টুলবক্সটি ডাউনলোড ও কনফিগার করেছি। চলুন প্রথমে এটি লোকালি রান করি।

নিম্নলিখিত কমান্ডটি চালান:

./toolbox --config "tools.yaml"

সফলভাবে কার্যকর হলে, আপনি নীচেরটির মতো একটি নমুনা আউটপুট সহ সার্ভার চালু হতে দেখবেন:

2026-04-29T10:26:15.435384+05:30 INFO "Initialized 1 sources: my-bq-source" 
2026-04-29T10:26:15.435424+05:30 INFO "Initialized 0 authServices: " 
2026-04-29T10:26:15.435428+05:30 INFO "Initialized 0 embeddingModels: " 
2026-04-29T10:26:15.435446+05:30 INFO "Initialized 1 tools: search_release_notes_bq" 
2026-04-29T10:26:15.435456+05:30 INFO "Initialized 2 toolsets: my_bq_toolset, default" 
2026-04-29T10:26:15.435461+05:30 INFO "Initialized 0 prompts: " 
2026-04-29T10:26:15.435467+05:30 INFO "Initialized 1 promptsets: default" 
2026-04-29T10:26:15.435487+05:30 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-29T10:26:15.435508+05:30 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-29T10:26:15.435728+05:30 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 --tools-file "tools.yaml" --ui

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

2026-04-29T10:29:44.750446+05:30 INFO "Initialized 1 sources: my-bq-source" 
2026-04-29T10:29:44.750463+05:30 INFO "Initialized 0 authServices: " 
2026-04-29T10:29:44.750467+05:30 INFO "Initialized 0 embeddingModels: " 
2026-04-29T10:29:44.750474+05:30 INFO "Initialized 1 tools: search_release_notes_bq" 
2026-04-29T10:29:44.750482+05:30 INFO "Initialized 2 toolsets: my_bq_toolset, default" 
2026-04-29T10:29:44.750487+05:30 INFO "Initialized 0 prompts: " 
2026-04-29T10:29:44.750493+05:30 INFO "Initialized 1 promptsets: default" 
2026-04-29T10:29:44.7505+05:30 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-29T10:29:44.750512+05:30 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-29T10:29:44.750601+05:30 INFO "Server ready to serve!" 
2026-04-29T10:29:44.750605+05:30 INFO "Toolbox UI is up and running at: http://127.0.0.1:5000/ui" 

UI ইউআরএল-টিতে ক্লিক করুন এবং নিশ্চিত করুন যে ইউআরএল-টির শেষে /ui রয়েছে। এতে নিচে দেখানো ছবির মতো একটি UI প্রদর্শিত হবে:

cfad8321357e4322.png

কনফিগার করা টুলগুলো দেখতে বামদিকের টুলস অপশনে ক্লিক করুন এবং আমাদের ক্ষেত্রে, সেখানে শুধু একটিই টুল থাকবে, অর্থাৎ search_release_notes_bq , যা নিচে দেখানো হয়েছে:

a315a6613e9e38ea.png

কেবলমাত্র টুলস ( search_release_notes_bq )-এ ক্লিক করুন এবং এটি আপনার জন্য টুলটি পরীক্ষা করার একটি পৃষ্ঠা নিয়ে আসবে। যেহেতু কোনো প্যারামিটার দেওয়ার প্রয়োজন নেই, আপনি ফলাফল দেখতে সরাসরি রান টুল- এ ক্লিক করতে পারেন। নিচে একটি নমুনা রান দেখানো হলো:

de883f9d92de6537.png

৯. এজেন্ট ডেভেলপমেন্ট কিট (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

এটি আপনাকে কমান্ডগুলোর একটি তালিকা দেখাবে।

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

  Agent Development Kit CLI tools.

Options:
  --help  Show this message and exit.

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

আমাদের প্রথম এজেন্ট অ্যাপ্লিকেশন তৈরি করা

আমরা এখন adk create কমান্ড ব্যবহার করে Google Cloud Release Notes Agent Application-এর জন্য একটি স্কাফোল্ডিং তৈরি করব adk যার অ্যাপের নাম হবে ** (gcp_releasenotes_agent_app) **, যা নিচে দেওয়া হলো।

adk create gcp_releasenotes_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_GOOGLE_PROJECT_ID]: 
Enter Google Cloud region [us-central1]: 

Agent created in ../my-agents/gcp_releasenotes_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

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

এরপর রয়েছে __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) ব্যবহার করে স্বাভাবিক ভাষা বুঝতে, যুক্তি দিতে, পরিকল্পনা করতে, প্রতিক্রিয়া তৈরি করতে এবং কীভাবে এগোতে হবে বা কোন সরঞ্জাম ব্যবহার করতে হবে সে বিষয়ে গতিশীলভাবে সিদ্ধান্ত নিতে পারে। এই বৈশিষ্ট্যগুলো এটিকে নমনীয় ও ভাষাকেন্দ্রিক কাজের জন্য আদর্শ করে তোলে। এলএলএম এজেন্ট সম্পর্কে আরও জানতে এখানে ক্লিক করুন।

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

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

আমরা এখন এই এজেন্টটিকে টুলগুলোর সাথে সংযুক্ত করতে যাচ্ছি। 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 all the tools
tools = toolbox.load_toolset('my_bq_toolset')

root_agent = Agent(
    name="gcp_releasenotes_agent",
    model="gemini-2.5-flash",
    description=(
        "Agent to answer questions about Google Cloud Release notes."
    ),
    instruction=(
        "You are a helpful agent who can answer user questions about the Google Cloud Release notes. Use the tools to answer the question"
    ),
    tools=tools,
)

আমরা এখন সেই এজেন্টটিকে পরীক্ষা করতে পারি যেটি আমাদের BigQuery ডেটাসেট থেকে আসল ডেটা সংগ্রহ করবে, যা MCP টুলবক্স ফর ডেটাবেস দিয়ে কনফিগার করা হয়েছে।

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

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

./toolbox --config "tools.yaml"

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

এমসিপি সার্ভার সফলভাবে চালু হয়ে গেলে, অন্য একটি টার্মিনালে, নিচে দেখানো adk run ( my-agents ফোল্ডার থেকে) কমান্ডের মাধ্যমে এজেন্টটি চালু করুন। আপনি চাইলে adk web কমান্ডও ব্যবহার করতে পারেন।

$ adk run gcp_releasenotes_agent_app/
Running agent gcp_releasenotes_agent, type exit to exit.
[user]: Hello
[gcp_releasenotes_agent]: Hello! I'm here to help you with Google Cloud Release Notes. What would you like to know today?
[user]: get me the google cloud release notes
[gcp_releasenotes_agent]: Here are the Google Cloud Release Notes:
*   **Cloud Asset Inventory** (Published: 2026-04-28)
    The following resource types are publicly available through the ExportAssets, ListAssets, BatchGetAssetsHistory, QueryAssets, Feed, SearchAllResources, and SearchAllIamPolicies APIs.
    *   App Lifecycle Manager
        *   `saasservicemgmt.googleapis.com/Saas`
        *   `saasservicemgmt.googleapis.com/Tenant`
        *   `saasservicemgmt.googleapis.com/UnitKind`
        *   `saasservicemgmt.googleapis.com/Unit`
        *   `saasservicemgmt.googleapis.com/Release`
    *   Backup and DR
        *   `backupdr.googleapis.com/BackupPlanRevision`
    *   Parallelstore
        *   `parallelstore.googleapis.com/Instance`
    *   Vertex AI
        *   `aiplatform.googleapis.com/DeploymentResourcePool`
*   **Google Cloud Contact Center as a Service** (Published: 2026-04-27)
    **Call scheduling improvements**
    We've made the following improvements to call scheduling for web SDK v3 and the headless web SDK:
    *   **Configurable time slots**. You can configure the length of call-scheduling time slots.
    *   **Day-based time slot selection**. End-users can browse available time slots organized by day.
    *   **Rescheduling**. If an end-user reopens the web SDK and has an existing scheduled call, they're prompted to manage that appointment (reschedule or cancel) before starting a new flow.
    *   **Cancellation**. End-users can cancel a previously scheduled call.
    *   **Queue-level configuration**. You can configure call scheduling at the queue level.
    **Note:** Headless web SDK users must specify `useAdvancedCallScheduling: true` with calls to the `getTimeSlots` method to access these call scheduling improvements.
    Administrators:
    *   There's a new **Scheduled Calls** pane on the **Settings > Calls** page.
    *   There's a new **Scheduled Calls** section in the **Settings > Queue > Web > SELECT_QUEUE** pane.
    *   We moved **Scheduled Call Countdown** and **Scheduled Call Expiration** from **Settings > Calls > Call Details** to **Settings > Calls > Scheduled Calls**.
    *   We've added the following settings to the **Settings > Calls > Scheduled Calls** pane:
        *   **Consumers can schedule calls up to SELECT_INTEGER day(s) in the future**
        *   **Static > Maximum calls per time slot**
    User experience changes:
    *   For **Scheduled Calls**, if you select **Consumers can schedule calls up to SELECT_INTEGER day(s) in the future**, a new **Select a day** screen appears to end-users who reschedule a call.
*   **Compute Engine** (Published: 2026-04-27)
    **Generally available**: Compute Engine now offers support for AI zones. To learn more, see AI zones.
*   **Cloud Storage** (Published: 2026-04-27)
    Cloud Storage now offers support for AI zones. To learn more, see AI zones.
*   **Apigee hybrid** (Published: 2026-04-27)
    **Sidecar authentication for Workload Identity Federation on non-GKE platforms**
    Starting in version v1.14.4, you can now use a sidecar along with Workload Identity Federation on non-GKE platforms to mount security tokens from your preferred identity provider (IDP) for service account authentication. See Use sidecar authentication for Workload Identity Federation on non-GKE platforms.
*   **Cloud Workstations** (Published: 2026-04-27)
    The preconfigured base images include a notification when the `running_timeout` for the workstation is close to being reached.
*   **Cloud Trace** (Published: 2026-04-27)
    Cloud Trace is a service covered by the Cloud Obse

......
......

লক্ষ্য করুন যে এজেন্টটি MCP টুলবক্স ফর ডেটাবেস ( search_release_notes_bq )-এ আমাদের কনফিগার করা টুলটি ব্যবহার করছে এবং BigQuery ডেটাসেট থেকে ডেটা পুনরুদ্ধার করে সেই অনুযায়ী প্রতিক্রিয়াটি ফরম্যাট করছে।

১১. অভিনন্দন

অভিনন্দন, আপনি সফলভাবে ডেটাবেসের জন্য এমসিপি টুলবক্সটি কনফিগার করেছেন এবং এমসিপি ক্লায়েন্টদের মধ্যে অ্যাক্সেসের জন্য একটি বিগকোয়েরি ডেটাসেটও কনফিগার করেছেন।

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