১. ভূমিকা
স্বাগতম! এই কোডল্যাবে, আপনি শিখবেন কীভাবে গুগল পরিচালিত মডেল কনটেক্সট প্রোটোকল (MCP) সার্ভার ব্যবহার করে আপনার এআই এজেন্টদের আরও শক্তিশালী করে তোলা যায়।
মডেল কনটেক্সট প্রোটোকল (MCP) একটি ওপেন-সোর্স স্ট্যান্ডার্ড যা এআই মডেলগুলোকে নিরাপদে এবং দক্ষতার সাথে বাহ্যিক ডেটা উৎস ও টুলের সাথে সংযোগ স্থাপন করতে সক্ষম করে। যদিও বেশিরভাগ MCP ইমপ্লিমেন্টেশন আপনার মেশিনে স্থানীয়ভাবে চলে, গুগল ম্যানেজড রিমোট MCP সার্ভার সরবরাহ করে। এগুলো হলো সম্পূর্ণরূপে হোস্ট করা, এন্টারপ্রাইজ-রেডি এন্ডপয়েন্ট যা আপনার এজেন্টদেরকে কোনো সার্ভার-সাইড কোড বা কন্টেইনার পরিচালনা না করেই সরাসরি গুগল ক্লাউড অবকাঠামোর সাথে যোগাযোগ করতে দেয়।
'পরিচালিত' সুবিধা
স্ট্যান্ডার্ড ইনপুট/আউটপুট (stdio) ব্যবহারকারী লোকাল এমসিপি সার্ভারগুলোর বিপরীতে, গুগলের পরিচালিত সার্ভারগুলো স্ট্রিমেবল এইচটিটিপি (Streamable HTTP ) ব্যবহার করে। এই আর্কিটেকচারটি নিম্নলিখিত সুবিধাগুলো প্রদান করে:
- জিরো ইনফ্রাস্ট্রাকচার: কোনো সার্ভার প্রোভিশন বা স্কেল করার প্রয়োজন নেই।
- ডিজাইন দ্বারাই নিরাপত্তা: গুগল ক্লাউড আইএএম এবং অডিট লগ-এর সাথে নেটিভ ইন্টিগ্রেশন।
- স্টেটলেস স্কেলিং: স্ট্যান্ডার্ড লোড ব্যালেন্সার এবং প্রক্সির মাধ্যমে নির্বিঘ্ন মিথস্ক্রিয়া।
আপনি যা শিখবেন
- ম্যানেজড এমসিপি সার্ভারগুলি কীভাবে সক্রিয় এবং প্রমাণীকরণ করবেন।
- ক্লাউড লগিং এমসিপি সার্ভারকে একটি ভিত্তিগত বেসলাইন হিসেবে কীভাবে ব্যবহার করবেন
- স্বায়ত্তশাসিত ওয়ার্কফ্লো তৈরি করতে একাধিক এমসিপি সার্ভার (ডেভেলপার নলেজ, ফায়ারস্টোর, ইত্যাদি) কীভাবে সমন্বিত করা যায়।
আপনার যা যা লাগবে
- বিলিং সক্ষম একটি গুগল ক্লাউড প্রজেক্ট।
- গুগল ক্লাউড কনসোল এবং
gcloudCLI সম্পর্কে পরিচিতি। - গুগল ক্লাউড শেল (এখানে জেমিনি সিএলআই আগে থেকেই ইনস্টল করা আছে)।
এই কোডল্যাবটি সকল স্তরের (শিক্ষানবিশ সহ) ব্যবহারকারী এবং ডেভেলপারদের জন্য ডিজাইন করা হয়েছে।
সমস্যা রিপোর্ট করা
কোডল্যাব এবং অ্যান্টিগ্র্যাভিটি নিয়ে কাজ করার সময় আপনি সমস্যার সম্মুখীন হতে পারেন।
কোডল্যাব সম্পর্কিত সমস্যার (বানান ভুল, ভুল নির্দেশনা) জন্য, অনুগ্রহ করে এই কোডল্যাবের নিচের বাম কোণে থাকা Report a mistake বোতামটি ব্যবহার করে একটি বাগ রিপোর্ট করুন:

২. শুরু করার আগে
এই ধাপে, আপনি আপনার গুগল ক্লাউড পরিবেশ প্রস্তুত করবেন। আমরা সমস্ত কাজ গুগল ক্লাউড শেল-এর মধ্যে সম্পন্ন করব, যা একটি স্থায়ী ও পূর্ব-কনফিগার করা টার্মিনাল প্রদান করে।
ক্লাউড শেল সক্রিয় করুন
- গুগল ক্লাউড কনসোলে যান।
- উপরের ডানদিকের হেডারে থাকা Activate Cloud Shell আইকনটিতে ক্লিক করুন।
- টার্মিনাল সেশন শুরু হয়ে গেলে, জিজ্ঞাসা করা হলে প্রম্পটটি অনুমোদন করুন।
আপনার প্রজেক্ট আইডি সেট করুন
আপনার ক্লাউড শেল সঠিক প্রজেক্টে নির্দেশ করছে কিনা তা নিশ্চিত করুন:
# Set your active project
gcloud config set project YOUR_PROJECT_ID
# Verify the setting
gcloud config list project
ফাউন্ডেশন এপিআই সক্রিয় করুন
ম্যানেজড এমসিপি সার্ভারগুলির জন্য অন্তর্নিহিত প্রোডাক্ট এপিআই এবং এমসিপি ইন্টারফেস উভয়ই সক্রিয় থাকা প্রয়োজন। ক্লাউড লগিং ব্যাকএন্ড (এই ল্যাবের জন্য আমাদের বেসলাইন) সক্রিয় করতে নিম্নলিখিত কমান্ডটি চালান:
# Enable the Cloud Logging API and its MCP interface
gcloud services enable logging.googleapis.com
gcloud beta services mcp enable logging.googleapis.com
দ্রষ্টব্য: পরিচালিত এমসিপি পরিষেবাগুলি বর্তমানে বিটা পর্যায়ে রয়েছে। এগুলি সক্রিয় করতে আপনাকে অবশ্যই gcloud বিটা কম্পোনেন্ট ব্যবহার করতে হবে।
অ্যাপ্লিকেশন ডিফল্ট ক্রেডেনশিয়াল (ADC) সেটআপ করুন
Gemini CLI আপনার ব্যবহারকারীর পরিচয় ব্যবহার করে MCP সার্ভারগুলির সাথে যোগাযোগ করে। এজেন্টকে আপনার পক্ষ থেকে কাজ করার অনুমতি দিন:
gcloud auth application-default login
টার্মিনালে থাকা URL-টি অনুসরণ করে সাইন ইন করুন এবং অথরাইজেশন কোডটি ক্লাউড শেলে পেস্ট করুন।
ফাউন্ডেশনাল IAM রোলগুলি অ্যাসাইন করুন
ম্যানেজড এমসিপি সার্ভারগুলো একটি দ্বি-স্তরীয় নিরাপত্তা মডেল ব্যবহার করে। এর জন্য দুটি নির্দিষ্ট 'গেট' খোলা থাকা প্রয়োজন:
- গেট ১ (এমসিপি অ্যাক্সেস): যে ভূমিকাটি আপনাকে প্রোটোকলটি কল করার অনুমতি দেয়।
- গেট ২ (পরিষেবা অ্যাক্সেস): যে ভূমিকাটি আপনাকে ডেটা দেখার অনুমতি দেয় (যেমন, লগ দেখা)।
নিজেকে প্রয়োজনীয় অ্যাক্সেস দেওয়ার জন্য নিম্নলিখিতটি চালান:
export PROJECT_ID=$(gcloud config get-value project)
export USER_EMAIL=$(gcloud config get-value account)
# Gate 1: Permission to use the MCP protocol
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="user:$USER_EMAIL" \
--role="roles/mcp.toolUser"
# Gate 2: Permission to view the actual logs
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="user:$USER_EMAIL" \
--role="roles/logging.viewer"
৩. ভিত্তি: আপনার প্রথম এমসিপি সার্ভার সংযোগ করা
এই ধাপে, আপনি আপনার এআই এজেন্টকে (Gemini CLI) গুগল ক্লাউড লগিং এমসিপি সার্ভারের সাথে সংযুক্ত করবেন। এটিই আমাদের 'ভিত্তি', কারণ এর মাধ্যমে এজেন্ট আপনার প্রোজেক্টের ভেতরে কী ঘটছে তা রিয়েল-টাইমে দেখতে পায়।
কাজ ১: লগিং এমসিপি সার্ভার কনফিগার করুন
Gemini CLI তার সংযোগগুলি পরিচালনা করার জন্য একটি settings.json ফাইল ব্যবহার করে। আপনাকে এই ফাইলটি (যা ~/.gemini ফোল্ডারে রয়েছে) সম্পাদনা করে mcpServers ব্লকের ভিতরে নিম্নলিখিত কোডটি যোগ করতে হবে। YOUR_PROJECT_ID জায়গায় আপনার আসল প্রজেক্ট আইডি বসান:
"logging-mcp": {
"httpUrl": "https://logging.googleapis.com/mcp",
"authProviderType": "google_credentials",
"oauth": {
"scopes": [
"https://www.googleapis.com/auth/logging.read"
]
},
"timeout": 30000,
"headers": {
"x-goog-user-project": "YOUR_PROJECT_ID"
}
}
দ্রষ্টব্য : ম্যানেজড এমসিপি সার্ভারগুলির জন্য x-goog-user-project হেডারটি আবশ্যক, যাতে এপিআই ব্যবহার এবং বিলিং সঠিকভাবে আপনার প্রোজেক্টের সাথে যুক্ত করা যায়।
কাজ ২: প্রকল্পের কার্যকলাপ অনুকরণ করুন (লগ তৈরি করুন)
আপনার প্রজেক্টটি নতুন বা নিষ্ক্রিয় হলে, এতে সাম্প্রতিক কোনো "গুরুত্বপূর্ণ" লগ নাও থাকতে পারে। চলুন gcloud CLI ব্যবহার করে কয়েকটি কাস্টম এন্ট্রি যোগ করি, যাতে এজেন্টের খুঁজে পাওয়ার মতো কিছু থাকে।
একটি ধারাবাহিক ঘটনা অনুকরণ করতে এই কমান্ডগুলো এক এক করে চালান:
# 1. Simulate a standard system start
gcloud logging write mcp-test-log "System boot sequence initiated" --severity=INFO
# 2. Simulate a warning about resource limits
gcloud logging write mcp-test-log "High memory pressure detected in zone us-central1-a" --severity=WARNING
# 3. Simulate a critical authentication failure
gcloud logging write mcp-test-log "ERROR: Failed to connect to Cloud SQL. Permission Denied." --severity=ERROR
কাজ ৩: Gemini CLI-তে টুলগুলো যাচাই করুন
চ্যাটিং শুরু করার আগে, চলুন যাচাই করে নিই যে এজেন্টটি লগিং সার্ভার দ্বারা উন্মুক্ত টুলগুলো "দেখতে" পাচ্ছে কিনা। Gemini CLI চালু করুন:
gemini
একবার Gemini CLI প্রম্পটে ( > ) প্রবেশ করলে, list কমান্ডটি চালান:
/mcp list
যাচাইকরণ ধাপ: আপনার দেখা উচিত যে logging-mcp ‘Ready’ অবস্থায় তালিকাভুক্ত আছে এবং list_log_entries সহ প্রায় ৬টি টুল উপলব্ধ রয়েছে।
টাস্ক ৪: আপনার প্রথম লাইভ ইনফ্রাস্ট্রাকচার প্রম্পট
এখন, আমরা এজেন্টকে এইমাত্র তৈরি করা লগগুলো খুঁজে বের করতে বলি। যেহেতু আপনি আগে roles/logging.viewer রোলটি মঞ্জুর করেছেন, এজেন্ট এখন আপনার প্রোজেক্টের অবস্থা পড়তে পারবে।
Gemini CLI-তে নিম্নলিখিত প্রম্পটটি টাইপ করুন:
Show me the 3 most recent log entries from the log named 'mcp-test-log'. What is the highest severity issue you see?
এজেন্টকে পর্যবেক্ষণ করুন:
- এজেন্ট আপনার কাছে গুগল ক্লাউড প্রজেক্ট আইডি চাইতে পারে। অনুগ্রহ করে সেটি প্রদান করুন।
- এটি শনাক্ত করবে যে এটির
list_log_entriesটুলটি প্রয়োজন। - এটি টুলটি চালানোর জন্য আপনার অনুমতি চাইবে। ১. হ্যাঁ, একবারের জন্য অনুমতি দিন নির্বাচন করুন।
- এটি JSON রেসপন্সটি পার্স করবে এবং আমাদের সিমুলেট করা Cloud SQL Permission Denied এররটি সম্পর্কে আপনাকে জানাবে।
৪. যাত্রা ক: মস্তিষ্ক (ডেভেলপার নলেজ এমসিপি)
এই যাত্রায়, আপনি আপনার এজেন্টকে গুগল ডেভেলপার নলেজ এমসিপি সার্ভারের সাথে সংযুক্ত করে এটিকে একটি 'মস্তিষ্ক' দেবেন।
এআই এজেন্টদের অন্যতম বড় ঝুঁকি হলো বিভ্রম —অর্থাৎ আত্মবিশ্বাসের সাথে সেকেলে CLI কমান্ড বা বাতিল হয়ে যাওয়া API প্যারামিটার সরবরাহ করা। এই MCP সার্ভারটি এজেন্টকে গুগলের অফিশিয়াল, লাইভ ডেভেলপার ডকুমেন্টেশন কর্পাসের (যা গুগল ক্লাউড, ফায়ারবেস, অ্যান্ড্রয়েড এবং আরও অনেক কিছু অন্তর্ভুক্ত করে) উপর ভিত্তি করে স্থাপন করার মাধ্যমে এই সমস্যার সমাধান করে।
কাজ ১: জ্ঞান পরিষেবাগুলি সক্ষম করুন
আমাদের ভিত্তি স্থাপনের ধাপের মতোই, আমাদের অবশ্যই ব্যাকএন্ড এপিআই এবং এমসিপি সার্ভিস এন্ডপয়েন্ট উভয়ই সক্রিয় করতে হবে।
# 1. Enable the Developer Knowledge API
gcloud services enable developerknowledge.googleapis.com
# 2. Enable the MCP Server interface
gcloud beta services mcp enable developerknowledge.googleapis.com
কাজ ২: একটি সীমাবদ্ধ এপিআই কী সরবরাহ করুন
ডেভেলপার নলেজ এমসিপি প্রমাণীকরণের জন্য এপিআই কী ব্যবহার করে। নিরাপত্তার জন্য, আমরা একটি কী তৈরি করব এবং সেটিকে এমনভাবে সীমাবদ্ধ করব যাতে এটি শুধুমাত্র এই নির্দিষ্ট এপিআই-এর সাথেই ব্যবহার করা যায়।
- আপনার কী তৈরি ও পুনরুদ্ধার করতে নিম্নলিখিত স্ক্রিপ্টটি চালান:
# Create the restricted API key
gcloud alpha services api-keys create \
--display-name="MCP-Knowledge-Key" \
--api-target service=developerknowledge.googleapis.com
# Wait a few seconds for the key to propagate, then fetch the string
gcloud alpha services api-keys get-key-string \
$(gcloud alpha services api-keys list \
--filter="displayName='MCP-Knowledge-Key'" \
--format="value(name)") \
--format="value(keyString)"
- দ্বিতীয় কমান্ডের মাধ্যমে প্রাপ্ত দীর্ঘ অক্ষরমালাটি কপি করুন। এটিই আপনার
YOUR_API_KEY।
কাজ ৩: জেমিনি সিএলআই কনফিগার করুন
এখন, আপনার এজেন্টের সাথে নলেজ এমসিপি সার্ভারটি রেজিস্টার করুন। এর ফলে, এজেন্ট যখনই এমন কোনো প্রযুক্তিগত প্রশ্নের সম্মুখীন হবে যার উত্তর সে শতভাগ নিশ্চিতভাবে দিতে পারে না, তখন সে অফিশিয়াল ডক্স অনুসন্ধান করতে পারবে।
আপনার ~/.gemini/settings.json ফাইলের mcpServers সেকশনের ভিতরে নিম্নলিখিত কোডটি যোগ করুন, এবং YOUR_API_KEY জায়গায় আপনার এইমাত্র কপি করা স্ট্রিংটি বসান:
"developer-knowledge-mcp": {
"httpUrl": "https://developerknowledge.googleapis.com/mcp",
"headers": {
"X-Goog-Api-Key": "YOUR_API_KEY"
}
}
কাজ ৪: বিভ্রম-বিরোধী পরীক্ষা
চলুন যাচাই করে দেখি যে এজেন্টটি এখন 'অনুমান' করার পরিবর্তে 'গবেষণা' করছে।
জেমিনি সিএলআই চালু করুন:
gemini
সার্ভারটি প্রস্তুত কিনা তা যাচাই করুন: /mcp list টাইপ করুন। আপনি google-developer-knowledge দেখতে পাবেন, যেখানে দুটি টুল ( search_documents , get_document ) থাকবে।
নির্দেশ: এজেন্টকে একটি নির্দিষ্ট, আধুনিক কমান্ড খুঁজে বের করতে বলুন।
I want to create a Google Cloud Storage bucket using the modern gcloud storage command. Search the official documentation for the exact syntax and show me an example for a bucket in the 'us-central1' region.
কী কী দেখতে হবে:
- জেমিনি
search_documentsব্যবহার করার জন্য অনুমতি চাইবে। - এরপর এটি সম্ভবত খুঁজে পাওয়া নির্দিষ্ট পৃষ্ঠাটি পড়ার জন্য
get_documentকল করবে। - চূড়ান্ত উত্তরে অবশ্যই `
gcloud storage buckets create ...` কমান্ডটি অন্তর্ভুক্ত করতে হবে, যা সরাসরি ডকুমেন্টেশন থেকে উদ্ধৃত করা হবে।
৫. যাত্রা বি: ট্রায়েজ (স্বয়ংক্রিয় সমস্যা সমাধান)
পূর্বশর্ত: এই যাত্রার জন্য আপনাকে 'যাত্রা ক: মস্তিষ্ক' সম্পন্ন করতে হবে, যাতে এজেন্ট সমাধানগুলো নিয়ে গবেষণা করতে পারে।
এই যাত্রায়, আপনি আপনার এজেন্টের চোখ (ক্লাউড লগিং এমসিপি) এবং মস্তিষ্ক (ডেভেলপার নলেজ এমসিপি)-কে একত্রিত করে একটি স্বয়ংক্রিয় ট্রাবলশুটিং লুপ তৈরি করবেন।
সার্চ ইঞ্জিনে ম্যানুয়ালি এরর কোড কপি করার পরিবর্তে, আপনি এজেন্টকে একবার নির্দেশ দিলেই সে আপনার প্রজেক্টে ত্রুটি খুঁজে বের করবে, আনুষ্ঠানিক সমাধান অনুসন্ধান করবে এবং একটি কার্যকর সমাধান প্রতিবেদন তৈরি করবে।
কাজ ১: GCP-তে একটি "খারাপ দিন" অনুকরণ করুন
স্বয়ংক্রিয় সমস্যা সমাধানের ক্ষমতা দেখতে হলে, আমাদের কিছু বাস্তবসম্মত ব্যর্থতার উদাহরণ প্রয়োজন। আমরা একটি পাইথন স্ক্রিপ্ট ব্যবহার করে আপনার লগ-এ সরাসরি বিভিন্ন ধরনের অবকাঠামোগত বাধা—যেমন ‘অনুমতি নেই’ ত্রুটি থেকে শুরু করে কোটা সংক্রান্ত সমস্যা পর্যন্ত—প্রবেশ করাবো।
- ক্লাউড শেলে আপনার পছন্দমতো একটি ফোল্ডার তৈরি করুন এবং সেটির ভেতরে প্রবেশ করুন।
-
simulate_errors.pyনামে একটি ফাইল তৈরি করুন:
nano simulate_errors.py
- নিম্নলিখিত কোডটি এডিটরে পেস্ট করুন:
import argparse
from google.cloud import logging
def simulate_errors(project_id):
client = logging.Client(project=project_id)
logger = client.logger("mcp-scenario-logger")
print(f"Simulating realistic errors for project: {project_id}...")
# 1. GCS Permission Error
logger.log_text("ERROR: GCS Upload failed for 'gs://my-app-bucket/data.json'. Status: 403 Forbidden. Missing 'storage.objects.create' for service account.", severity="ERROR")
# 2. Cloud Run Startup Error
logger.log_text("ERROR: Cloud Run service 'api-gateway' failed to start. Container failed to listen on port 8080. Check 'Cloud Run container startup requirements'.", severity="ERROR")
# 3. Secret Manager Access Error
logger.log_text("ERROR: Access denied to secret 'API_KEY'. The identity lacks 'secretmanager.versions.access'.", severity="ERROR")
print("Log entries written to 'mcp-scenario-logger'.")
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("--project", required=True)
args = parser.parse_args()
simulate_errors(args.project)
- সংরক্ষণ করে বের হওয়ার জন্য Ctrl+O, Enter এবং
Ctrl+Xচাপুন। -
Google Cloud Loggingলাইব্রেরি ইনস্টল করুন এবং স্ক্রিপ্টটি চালান:
python -m venv mcp_env
source mcp_env/bin/activate
pip install google-cloud-logging
python simulate_errors.py --project $(gcloud config get-value project)
কাজ ২: স্বায়ত্তশাসিত লুপটি কার্যকর করুন
এখন, আমরা একটি জটিল নির্দেশ পাঠাব যা জেমিনিকে একই সাথে উভয় এমসিপি সার্ভার পরিচালনা করার নির্দেশ দেবে।
জেমিনি সিএলআই চালু করুন:
gemini
এজেন্টের মধ্যে এই 'মাস্টার প্রম্পট' টাইপ করুন:
I need to troubleshoot recent issues in my project. Perform the following autonomous loop:
Step 1 : Retrieval: Use the Logging MCP to fetch the 5 most recent ERROR entries from the log 'mcp-scenario-logger'.
Step 2 : Iteration: For every unique error found, extract the service and specific error message.
Step 3 : Research: Use the Developer Knowledge MCP to find the official resolution or gcloud command to fix each issue.
Step 4 : Resolution: Consolidate everything into a markdown table with columns: | Service | Error Summary | Recommended Fix |.
কী আশা করা যায়
আপনি এখন রিয়েল-টাইমে একটি এজেন্টিক ওয়ার্কফ্লো দেখছেন। এজেন্টটি যা করবে:
- আমরা এইমাত্র যে "খারাপ দিন"টির সিমুলেশন করেছি, তা দেখতে
list_log_entriesকল করুন। - GCS, Cloud Run, এবং Secret Manager যে ব্যর্থ হচ্ছে, তা শনাক্ত করতে টেক্সটটি বিশ্লেষণ করুন।
- সঠিক IAM রোল বা কনফিগারেশন সমাধান খুঁজে বের করার জন্য ওই সার্ভিসগুলোর প্রতিটির জন্য
search_documentsএবংget_documentকল করুন। - আপনাকে এইরকম দেখতে একটি কাঠামোবদ্ধ টেবিল উপস্থাপন করা হলো (সুপারিশগুলো ভিন্ন হতে পারে):
পরিষেবা | ত্রুটির সারাংশ | প্রস্তাবিত সমাধান |
ক্লাউড স্টোরেজ | ৪০৩ আপলোডে নিষিদ্ধ | সার্ভিস অ্যাকাউন্টকে |
ক্লাউড রান | ৮০৮০ পোর্টে শুনতে ব্যর্থ হয়েছে | নিশ্চিত করুন যে অ্যাপটি |
গোপন ব্যবস্থাপক | অনুপস্থিত সংস্করণ অ্যাক্সেস ভূমিকা | আইডেন্টিটিতে |
৬. যাত্রা সি: ডেটা (ফায়ারস্টোর এমসিপি)
এই যাত্রায়, আপনি ফায়ারস্টোর এমসিপি সার্ভার ব্যবহার করে শুধুমাত্র স্বাভাবিক ভাষা দিয়ে একটি নোএসকিউএল ডকুমেন্ট ডেটাবেস পরিচালনা করবেন।
ফায়ারস্টোর একটি নমনীয় ও সম্প্রসারণযোগ্য ডেটাবেস, কিন্তু এটি পরিচালনা করতে প্রায়শই জটিল SDK কোড লিখতে হয় অথবা কনসোল ব্যবহার করতে হয়। MCP-এর মাধ্যমে আপনার এজেন্ট একজন ডেটাবেস অ্যাডমিনিস্ট্রেটর হয়ে ওঠেন, যিনি চ্যাটের মাধ্যমেই ডেটা সিড করা, রেকর্ড কোয়েরি করা এবং এমনকি জটিল স্কিমা মাইগ্রেশনও সম্পাদন করতে সক্ষম।
কাজ ১: ফায়ারস্টোর পরিষেবাগুলি সক্রিয় করুন
প্রথমে, Firestore API এবং এর সংশ্লিষ্ট MCP এন্ডপয়েন্টটি সক্রিয় করুন।
# 1. Enable the Firestore API
gcloud services enable firestore.googleapis.com
# 2. Enable the MCP Server interface
gcloud beta services mcp enable firestore.googleapis.com
কাজ ২: ফায়ারস্টোর আইএএম রোল বরাদ্দ করুন
কোয়েরি চালানোর জন্য, আপনার আইডেন্টিটির সাধারণ এমসিপি অ্যাক্সেসের বাইরেও নির্দিষ্ট অনুমতির প্রয়োজন।
# Grant Firestore User role
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="user:$USER_EMAIL" \
--role="roles/datastore.user"
কাজ ৩: একটি ডেডিকেটেড টেস্ট ডেটাবেস তৈরি করুন
আমাদের পরীক্ষা-নিরীক্ষাগুলো সুরক্ষিত রাখার জন্য, আমরা mcp-lab-db নামে একটি বিশেষ ফায়ারস্টোর ডেটাবেস তৈরি করব।
gcloud firestore databases create --database=mcp-lab-db --location=nam5 --type=firestore-native
কাজ ৪: জেমিনি সিএলআই কনফিগার করুন
আপনার এজেন্টে ফায়ারস্টোর এমসিপি সার্ভারটি যুক্ত করুন। ~/.gemini/settings.json ফাইলের mcpServers বিভাগে নিম্নলিখিত কনফিগারেশনটি যোগ করুন। YOUR_PROJECT_ID জায়গায় আপনার আসল প্রজেক্ট আইডি বসান:
"firestore-mcp": {
"httpUrl": "https://firestore.googleapis.com/mcp",
"authProviderType": "google_credentials",
"oauth": {
"scopes": [
"https://www.googleapis.com/auth/cloud-platform"
]
},
"timeout": 30000,
"headers": {
"x-goog-user-project": "YOUR_PROJECT_ID"
}
}
টাস্ক ৫: স্বাভাবিক ভাষা ডিবি অপস
Gemini CLI চালু করুন এবং সংযোগ যাচাই করার জন্য কিছু প্রাথমিক কার্যক্রম সম্পাদন করুন।
জেমিনি সিএলআই চালু করুন:
gemini
সার্ভারটি প্রস্তুত কিনা তা যাচাই করুন: /mcp list টাইপ করুন। আপনি firestore-mcp দেখতে পাবেন, যেখানে বিভিন্ন টুল ( add_document, create_database, list_documents, etc ) থাকবে।
এই নির্দেশগুলো ক্রমানুসারে চেষ্টা করুন:
বীজের তথ্য:
In the 'mcp-lab-db' database, add three documents to a 'products' collection. Include a laptop (stock 5), a mouse (stock 25), and a keyboard (stock 8).
যাচাই করুন:
List all documents in the 'products' collection from the 'mcp-lab-db' database.
অন্যান্য প্রম্পটগুলোও ব্যবহার করে দেখুন যেগুলো আপনাকে স্বাভাবিক ভাষার মাধ্যমে ফায়ারস্টোর ডেটাবেস এবং কালেকশন পরিচালনা করতে সাহায্য করে।
৭. যাত্রা ডি: বুদ্ধিমত্তা (বিগকোয়েরি ও ম্যাপস)
এই যাত্রায়, আপনি BigQuery এবং Maps Grounding Lite MCP সার্ভার ব্যবহার করে আপনার এজেন্টকে পেটাবাইট পরিমাণ ডেটা বিশ্লেষণ করার এবং ভৌত জগৎকে বোঝার ক্ষমতা দিয়ে সজ্জিত করবেন।
এই অংশের শেষে, আপনার এজেন্ট স্বাভাবিক ভাষাকে জটিল SQL কোয়েরিতে অনুবাদ করতে এবং বাস্তবতার নিরিখে প্রাসঙ্গিক ভূ-স্থানিক পরামর্শ (যেমন ভ্রমণের সময় ও আবহাওয়া) প্রদান করতে সক্ষম হবে।
কাজ ১: গোয়েন্দা পরিষেবা সক্রিয় করুন
BigQuery এবং Google Maps উভয়ের জন্য API এবং MCP ইন্টারফেস সক্রিয় করুন।
# 1. Enable product APIs
gcloud services enable bigquery.googleapis.com mapstools.googleapis.com
# 2. Enable MCP Server interfaces
gcloud beta services mcp enable bigquery.googleapis.com
gcloud beta services mcp enable mapstools.googleapis.com
কাজ ২: BigQuery IAM রোলগুলি বরাদ্দ করুন
কোয়েরি চালানোর জন্য, আপনার আইডেন্টিটির সাধারণ এমসিপি অ্যাক্সেসের বাইরেও নির্দিষ্ট অনুমতির প্রয়োজন।
# Grant BigQuery Job User and Data Viewer roles
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="user:$USER_EMAIL" \
--role="roles/bigquery.jobUser"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="user:$USER_EMAIL" \
--role="roles/bigquery.dataViewer"
কাজ ৩: একটি ম্যাপস এপিআই কী সরবরাহ করুন
শুধুমাত্র IAM-এর উপর নির্ভরশীল অন্যান্য পরিষেবাগুলির থেকে ভিন্ন, Maps Grounding Lite সার্ভারের কোটা ও বিলিংয়ের জন্য একটি API Key প্রয়োজন হয়।
চাবিটি তৈরি করুন:
gcloud alpha services api-keys create --display-name="MCP-Maps-Key"
কী স্ট্রিংটি আনুন:
# Wait a few seconds for the key to propagate, then fetch the string
gcloud alpha services api-keys get-key-string \
$(gcloud alpha services api-keys list \
--filter="displayName='MCP-Maps-Key'" \
--format="value(name)") \
--format="value(keyString)"
পরবর্তী ধাপের জন্য কী স্ট্রিংটি কপি করুন ।
কাজ ৪: জেমিনি সিএলআই কনফিগার করুন
এখন, উভয় সার্ভার রেজিস্টার করুন। ~/.gemini/settings.json ফাইলের mcpServers সেকশনে নিচের কোডটুকু যোগ করুন। YOUR_PROJECT_ID এবং YOUR_MAPS_API_KEY যথাযথভাবে প্রতিস্থাপন করুন।
"bigquery-mcp": {
"httpUrl": "https://bigquery.googleapis.com/mcp",
"authProviderType": "google_credentials",
"oauth": {
"scopes": [
"https://www.googleapis.com/auth/cloud-platform"
]
},
"timeout": 30000,
"headers": {
"x-goog-user-project": "YOUR_PROJECT_ID"
}
},
"maps-grounding-lite-mcp": {
"httpUrl": "https://mapstools.googleapis.com/mcp",
"headers": {
"X-Goog-Api-Key": "YOUR_MAPS_API_KEY"
}
}
কাজ ৫: কর্মক্ষেত্রে বুদ্ধিমত্তা
Gemini CLI চালু করুন এবং নতুন 'ইন্টেলিজেন্স' সক্ষমতাগুলো পরীক্ষা করুন।
gemini
সার্ভারটি প্রস্তুত কিনা তা যাচাই করুন: /mcp list টাইপ করুন। আপনি bigquery-mcp এবং maps-grounding-lite-mcp সহ বেশ কিছু টুলের তালিকা দেখতে পাবেন।
দৃশ্যকল্প ১: অ্যানালিটিক্যাল ইঞ্জিন (বিগকোয়েরি) কোনো SQL না জেনেই এজেন্টকে একটি পাবলিক ডেটাসেট কোয়েরি করতে বলুন:
Run a query to count the number of penguins on each island in the BigQuery public dataset ml_datasets.penguins.
দৃশ্যকল্প ২: ভূ-স্থানিক প্রেক্ষাপট (মানচিত্র) এজেন্টকে একটি বাস্তব ভ্রমণের পরিকল্পনা করতে বলুন:
I am planning a drive from Mumbai to Pune tomorrow morning. Based on current weather and routing, what should I expect in terms of travel time and what should I carry?
কী কী দেখতে হবে:
- BigQuery-এর ক্ষেত্রে, এজেন্ট স্কিমা খুঁজে বের করতে এবং কোয়েরিটি চালাতে
execute_sqlকল করবে। - ম্যাপের ক্ষেত্রে, এটি আপনাকে একটি বাস্তবসম্মত ও সহায়ক ভ্রমণ পরিকল্পনা দেওয়ার জন্য
lookup_weatherএবং compute_routes-কে সমন্বিত করবে।
৮. সুরক্ষা বৃদ্ধি: প্রোডাকশন সিকিউরিটি এবং আইএএম
এই চূড়ান্ত ধাপে, আপনি ব্যাপক "মালিক" অনুমতি ব্যবহার থেকে সরে এসে একটি প্রোডাকশন-গ্রেড ডিফেন্স-ইন-ডেপথ মডেলে চলে যাবেন।
এআই এজেন্টরা স্বভাবতই 'সহায়ক' হয়। আপনি যদি ইউজার ইন্টারফেস (UI) পর্যায়ে কোনো টুল সীমাবদ্ধ করেন, তাহলে একটি স্মার্ট এজেন্ট তার পরিবর্তে একটি শেল কমান্ড চালিয়ে সেই সীমাবদ্ধতা এড়িয়ে যাওয়ার চেষ্টা করতে পারে। আপনার পরিকাঠামোকে সত্যিকার অর্থে সুরক্ষিত করতে, আপনাকে অবশ্যই গুগল ক্লাউড আইএএম (Google Cloud IAM) ব্যবহার করে কঠোর সীমানা তৈরি করতে হবে।
দ্বি-স্তর নিরাপত্তা মডেল
যেকোনো কাজ সম্পাদন করতে, একজন এজেন্টকে দুটি গেট অতিক্রম করতে হয়:
- গেট ১ (এমসিপি গেট): আইডেন্টিটিটির কি
roles/mcp.toolUserআছে? (প্রোটোকলটি ব্যবহারের অনুমতি)। - গেট ২ (সার্ভিস গেট): আইডেন্টিটিটির কি নির্দিষ্ট প্রোডাক্ট রোল (যেমন,
roles/datastore.viewer) আছে? (ডেটা দেখার অনুমতি)।
টাস্ক ১: লেয়ার ১ - ক্লায়েন্ট-সাইড ফিল্টারিং ( excludeTools )
প্রতিরক্ষার প্রথম স্তর হলো এজেন্টের কাছ থেকে সরঞ্জামগুলো লুকিয়ে রাখা, যাতে সে সেগুলো ব্যবহার করার কথা 'ভাবতেও' না পারে।
- ক্লাউড শেল এডিটরে আপনার জেমিনি সিএলআই সেটিংস খুলুন:
cloudshell edit ~/.gemini/settings.json
- firestore-mcp ব্লকটি খুঁজুন এবং ক্ষতিকর কার্যকলাপগুলি গোপন করতে
excludeToolsডিরেক্টিভটি যোগ করুন:
"firestore-mcp": {
"httpUrl": "https://firestore.googleapis.com/mcp",
"excludeTools": ["delete_database", "update_database", "delete_document"],
...
}
ফাইলটি সেভ করুন এবং Gemini CLI রিস্টার্ট করুন। /mcp list চালান এবং লক্ষ্য করুন যে টুলগুলো এখন আর নেই।
টাস্ক ২: লেয়ার ২ - ইনফ্রাস্ট্রাকচার সুপ্রিমেসি (দ্য আইএএম বাউন্সার)
ক্লায়েন্ট-সাইড ফিল্টারিং হলো একটি "নরম" সুরক্ষা ব্যবস্থা। আপনি যদি এজেন্টকে "আমার ফায়ারস্টোর ডেটাবেস মুছুন" বলেন এবং টুলটি লুকানো থাকে, তবে এটি gcloud firestore databases delete চালানোর চেষ্টা করতে পারে। এটি প্রতিরোধ করার জন্য, আমরা একটি লিস্ট প্রিভিলেজ সার্ভিস অ্যাকাউন্ট (Least Privilege Service Account) ব্যবহার করি।
একটি "শুধুমাত্র পাঠক" পরিষেবা অ্যাকাউন্ট তৈরি করুন:
# Create the service account
gcloud iam service-accounts create mcp-reader-sa --display-name="MCP Reader Only"
# Grant ONLY the necessary roles (Gate 1 + Gate 2)
export PROJECT_ID=$(gcloud config get-value project)
SA_EMAIL="mcp-reader-sa@$PROJECT_ID.iam.gserviceaccount.com"
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SA_EMAIL" --role="roles/mcp.toolUser"
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SA_EMAIL" --role="roles/datastore.viewer"
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SA_EMAIL" --role="roles/aiplatform.user"
চাবিটি তৈরি ও সক্রিয় করুন:
gcloud iam service-accounts keys create reader-key.json --iam-account=$SA_EMAIL
export GOOGLE_APPLICATION_CREDENTIALS=$(pwd)/reader-key.json
টাস্ক ৩: "সহায়ক এজেন্ট" বাউন্সার পরীক্ষা
এখন, এজেন্টটি আমাদের নিরাপত্তা ব্যবস্থা ভেদ করতে পারে কি না, তা পরীক্ষা করে দেখা যাক।
আমাদের প্রথম পদক্ষেপ হবে সার্ভিস অ্যাকাউন্টটি সক্রিয় করা, যাতে এজেন্ট যদি gcloud কমান্ড ব্যবহার করতেও ফিরে যায়, তবুও এটি আমাদের সদ্য তৈরি করা সার্ভিস অ্যাকাউন্ট আইডেন্টিটির অধীনেই কাজ করে।
সার্ভিস অ্যাকাউন্টটি সক্রিয় করুন:
নিম্নলিখিত কমান্ডটি চালান, যেখানে [PATH_TO_KEY_FILE]-এর জায়গায় আপনার JSON কী ফাইলের আসল পাথটি (যেমন, reader-key.json ) বসান।
gcloud auth activate-service-account --key-file=[PATH_TO_KEY_FILE]
পরিবর্তনটি যাচাই করুন:
কমান্ডটি চালানোর পর, সার্ভিস অ্যাকাউন্টটি সক্রিয় আছে কিনা তা আপনি নিম্নলিখিত কমান্ডটি চালিয়ে যাচাই করতে পারেন:
gcloud auth list
আউটপুটে সার্ভিস অ্যাকাউন্টটিকে সক্রিয় ক্রেডেনশিয়াল হিসেবে দেখানো হবে।
জেমিনি সিএলআই চালু করুন:
gemini
এই প্রম্পটটি টাইপ করুন:
I want to delete the 'mcp-lab-db' firestore database. If the tool is missing, try using the gcloud firestore command in the terminal.
কী ঘটে?
- এজেন্টটি প্রথমে ফায়ারস্টোর এমসিপি সার্ভারে `delete_database` টুলটি ব্যবহার করার চেষ্টা করবে। অনুমতির অভাবে এটি ব্যর্থ হবে।
- এরপর এটি gcloud firestore কমান্ডটি ব্যবহার করার জন্য
run_shell_commandটুলে ফিরে গিয়ে "সহায়ক" হওয়ার চেষ্টা করে।
ফলাফল:
কমান্ডটি একটি Forbidden ত্রুটির কারণে ব্যর্থ হয়। যেহেতু এজেন্টটি mcp-reader-sa আইডেন্টিটির অধীনে চলছে, তাই এটির datastore.databases.delete পারমিশন নেই। IAM হলো চূড়ান্ত রক্ষাকবচ। এজেন্ট যেভাবেই রিসোর্সটিতে পৌঁছানোর চেষ্টা করুক না কেন, Google Cloud API লেভেলের "Bouncer" অনুরোধটি ব্লক করে দেবে।
আপনার ব্যবহারকারী অ্যাকাউন্টে ফিরে যান:
আপনার ব্যবহারকারী অ্যাকাউন্টে ফিরে যেতে, নিম্নলিখিত কমান্ডটি দিন:
gcloud config set account YOUR_EMAIL_ADDRESS
৯. পরিচ্ছন্নতা
অনাকাঙ্ক্ষিত চার্জ এড়াতে, আপনার পরীক্ষার রিসোর্সগুলো মুছে ফেলুন:
# Delete the Firestore database
gcloud firestore databases delete --database=mcp-lab-db
# Remove the service account
gcloud iam service-accounts delete mcp-reader-sa@$PROJECT_ID.iam.gserviceaccount.com
১০. উপসংহার
অভিনন্দন! আপনি সফলভাবে গুগল পরিচালিত এমসিপি সার্ভারগুলোর সম্পূর্ণ স্তরটি সম্পন্ন করেছেন।
আপনি ল্যাবের "ট্রাঙ্ক" দিয়ে শুরু করেছিলেন, ক্লাউড লগিং- এর সাথে একটি ভিত্তিগত সংযোগ স্থাপন করে। সেখান থেকে, আপনি মডিউলার "অ্যাডভেঞ্চার"-এর দিকে অগ্রসর হয়েছেন—আপনার এজেন্টের জ্ঞানকে সুদৃঢ় করেছেন, জটিল ট্রাবলশুটিং লুপগুলোকে স্বয়ংক্রিয় করেছেন, ফায়ারস্টোরে ডেটা মাইগ্রেট করেছেন এবং বিগকোয়েরি ও ম্যাপস থেকে ইন্টেলিজেন্স আহরণ করেছেন।
সবচেয়ে গুরুত্বপূর্ণ বিষয় হলো, আপনি আপনার এজেন্টকে প্রোডাকশন সিকিউরিটির মূলে স্থাপন করে আপনার আলোচনা শেষ করেছেন। আপনি প্রমাণ করেছেন যে, যদিও একটি এজেন্ট প্রয়োজনের চেয়ে বেশি "সহায়ক" হতে পারে, গুগল ক্লাউড আইএএম হলো চূড়ান্ত রক্ষাকবচ, যা নিশ্চিত করে যে আপনার স্বায়ত্তশাসিত ওয়ার্কফ্লো সর্বদা ন্যূনতম বিশেষাধিকারের নীতি (Principle of Least Privilege) মেনে চলে।
মূল বিষয়বস্তু
- পরিচালিত মানেই সম্প্রসারণযোগ্য: আপনি একটিও সার্ভার স্থাপন না করেই Streamable HTTP-এর মাধ্যমে পরিকাঠামো-স্তরের টুলগুলির সাথে সংযুক্ত হয়েছেন।
- গ্রাউন্ডিং বাধ্যতামূলক: আপনি LLM-এর 'অনুমান' করার পদ্ধতিকে ডেভেলপার নলেজ MCP দ্বারা প্রতিস্থাপন করেছেন, যা নিশ্চিত করে যে আপনার এজেন্ট বর্তমান ও বৈধ কমান্ড ব্যবহার করছে।
- সমন্বয়ই শক্তি: আপনি দেখেছেন যে আসল জাদু তখনই ঘটে, যখন কোনো এজেন্ট একটিমাত্র ব্যবসায়িক সমস্যা সমাধানের জন্য একাধিক এমসিপি সার্ভারকে একত্রিত করে।