জেমিনি সিএলআই এবং গো দিয়ে কীভাবে একটি এমসিপি সার্ভার তৈরি করবেন

1. ভূমিকা

এই কোডল্যাবে, আপনি শিখবেন কিভাবে Gemini CLI এর ক্ষমতা বৃদ্ধির জন্য একটি মডেল কনটেক্সট প্রোটোকল (MCP) সার্ভার তৈরি এবং স্থাপন করতে হয়। আপনি godoctor তৈরি করবেন, একটি Go-ভিত্তিক সার্ভার যা Go ডেভেলপমেন্টের জন্য কাস্টম টুল সরবরাহ করে, যা Gemini CLI কে একটি সাধারণ-উদ্দেশ্য কোডিং সহকারী থেকে একজন বিশেষ Go ডেভেলপমেন্ট বিশেষজ্ঞে রূপান্তরিত করবে।

এই কোডল্যাবটি "প্রম্পট-চালিত" পদ্ধতি ব্যবহার করে। আপনি একজন টেক লিড হিসেবে কাজ করবেন, আপনার AI সহকারীকে (Gemini CLI নিজেই) প্রম্পট প্রদান করবেন। আপনার লক্ষ্য হল প্রকল্পের প্রয়োজনীয়তাগুলিকে কার্যকর প্রম্পটে রূপান্তরিত করতে শেখা এবং AI-কে বাস্তবায়নের বিশদ বিবরণ পরিচালনা করতে দেওয়া।

এই প্রকল্পের কেন্দ্রবিন্দুতে রয়েছে মডেল কনটেক্সট প্রোটোকল (MCP)। MCP হল একটি ওপেন-সোর্স প্রোটোকল যা জেমিনির মতো বৃহৎ ভাষা মডেল (LLM) কীভাবে বহিরাগত সরঞ্জাম এবং পরিষেবাগুলির সাথে যোগাযোগ করে তা মানসম্মত করে। এটি একটি সেতু হিসেবে কাজ করে, যা AI-কে বাস্তব-বিশ্বের তথ্য অ্যাক্সেস করতে এবং তার অন্তর্নির্মিত জ্ঞানের বাইরেও ক্রিয়া সম্পাদন করতে দেয়। একটি MCP সার্ভার তৈরি করে, আপনি একটি কাস্টম প্লাগইন তৈরি করছেন যা জেমিনি CLI আবিষ্কার এবং ব্যবহার করতে পারে, কার্যকরভাবে নতুন দক্ষতা শেখায়।

তুমি কি শিখবে

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

তোমার যা লাগবে

এই কর্মশালাটি সম্পূর্ণরূপে গুগল ক্লাউড শেলের মধ্যে চালানো যেতে পারে, যা সমস্ত প্রয়োজনীয় নির্ভরতা (gcloud CLI, Go, Docker, Gemini CLI) সহ আগে থেকে ইনস্টল করা থাকে।

বিকল্পভাবে, যদি আপনি নিজের মেশিনে কাজ করতে পছন্দ করেন, তাহলে আপনার নিম্নলিখিতগুলির প্রয়োজন হবে:

  • Node.js ২০ বা তার পরবর্তী সংস্করণ
  • বিলিং সক্ষম করা একটি Google ক্লাউড প্রকল্প
  • গুগল ক্লাউড এসডিকে (জিক্লাউড সিএলআই) ইনস্টল এবং আরম্ভ করা হয়েছে
  • আপনার সিস্টেমে ১.২৪ বা তার পরবর্তী সংস্করণ ইনস্টল করুন।
  • আপনার সিস্টেমে ডকার ইনস্টল করা আছে

মূল প্রযুক্তি

আমরা যে প্রযুক্তিগুলি ব্যবহার করব সে সম্পর্কে আরও তথ্য এখানে পাবেন:

একটি সফল কোডল্যাবের জন্য টিপস

একজন AI সহকারীর সাথে কাজ করা সফটওয়্যার তৈরির একটি নতুন উপায়। আপনার অভিজ্ঞতাকে মসৃণ এবং সফল করার জন্য এখানে কিছু টিপস দেওয়া হল:

  1. ESC চাপতে ভয় পাবেন না। AI কখনও কখনও এমন পদক্ষেপ বা কোড প্রস্তাব করবে যার সাথে আপনি একমত নন। প্রস্তাবিত পদক্ষেপ বাতিল করতে ESC কী ব্যবহার করুন এবং সঠিক দিকে পরিচালিত করার জন্য একটি নতুন প্রম্পট প্রদান করুন। আপনিই পাইলট।
  2. টুল ব্যবহারে উৎসাহিত করুন। যদি মনে হয় এআই হারিয়ে গেছে অথবা তথ্য তৈরি করছে, তাহলে এর উপলব্ধ টুলগুলি ব্যবহার করতে উৎসাহিত করুন। "আপনি কি এটি যাচাই করতে গুগল সার্চ ব্যবহার করতে পারেন?" অথবা "পরিবর্তন করার আগে বর্তমান কোডটি বুঝতে read_file টুলটি ব্যবহার করুন" এর মতো প্রম্পটগুলি খুবই কার্যকর হতে পারে।
  3. ম্যানুয়াল পরিবর্তন প্রতিরোধ করুন। সমস্ত কাজ AI-কে করতে চেষ্টা করুন। এটিই আপনার অনুশীলনের মূল দক্ষতা। তবে, যদি আপনাকে ম্যানুয়াল পরিবর্তন করতেই হয়, তাহলে পরে AI-কে এটি সম্পর্কে বলুন। "আমি README.md ফাইলটি ম্যানুয়ালি আপডেট করেছি। আপনার জ্ঞান রিফ্রেশ করার জন্য দয়া করে এটি আবার পড়ুন" এর মতো একটি প্রম্পট নিশ্চিত করবে যে AI আপনার প্রকল্পের সাথে সামঞ্জস্যপূর্ণ থাকবে।
  4. আপনি কি এটি বন্ধ করে আবার চালু করার চেষ্টা করেছেন? বিরল ক্ষেত্রে যখন AI আপনার কমান্ডের বিরুদ্ধে কোনও নির্দিষ্ট পথ জোর করে চাপিয়ে দেওয়ার চেষ্টা করে, তখন এটি কনটেক্সট ডিগ্রেডেশনের কারণে হতে পারে (কখনও কখনও "কনটেক্সট রট"ও বলা হয়)। এই ক্ষেত্রে আপনি কনটেক্সট নয়েজ কমাতে জেমিনি CLI কমান্ড "/compress" ব্যবহার করতে পারেন অথবা, চরম ক্ষেত্রে, আপনি সম্পূর্ণ সেশন ইতিহাস পরিষ্কার করতে "/clear" কমান্ড ব্যবহার করতে পারেন।

2. পরিবেশ সেটআপ

স্ব-গতিসম্পন্ন পরিবেশ সেটআপ

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

295004821bab6a87.png সম্পর্কে

37d264871000675d.png সম্পর্কে

96d86d3d5655cdbe.png সম্পর্কে

  • এই প্রকল্পের অংশগ্রহণকারীদের জন্য প্রজেক্টের নামটি প্রদর্শন করা হবে। এটি একটি অক্ষর স্ট্রিং যা Google API গুলি ব্যবহার করে না। আপনি যেকোনো সময় এটি আপডেট করতে পারেন।
  • সমস্ত Google ক্লাউড প্রোজেক্টে প্রোজেক্ট আইডি অনন্য এবং অপরিবর্তনীয় (সেট করার পরে এটি পরিবর্তন করা যাবে না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত আপনি এটি কী তা নিয়ে চিন্তা করেন না। বেশিরভাগ কোডল্যাবে, আপনাকে আপনার প্রোজেক্ট আইডি (সাধারণত PROJECT_ID হিসাবে চিহ্নিত) উল্লেখ করতে হবে। যদি আপনি জেনারেট করা আইডি পছন্দ না করেন, তাহলে আপনি অন্য একটি র্যান্ডম তৈরি করতে পারেন। বিকল্পভাবে, আপনি নিজের চেষ্টা করে দেখতে পারেন, এবং এটি উপলব্ধ কিনা তা দেখতে পারেন। এই ধাপের পরে এটি পরিবর্তন করা যাবে না এবং প্রকল্পের সময়কালের জন্য থাকবে।
  • আপনার তথ্যের জন্য, তৃতীয় একটি মান আছে, একটি Project Number , যা কিছু API ব্যবহার করে। ডকুমেন্টেশনে এই তিনটি মান সম্পর্কে আরও জানুন।
  1. এরপর, ক্লাউড রিসোর্স/API ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে। এই কোডল্যাবটি চালানোর জন্য খুব বেশি খরচ হবে না, এমনকি কিছু খরচও হবে না। এই টিউটোরিয়ালের বাইরে বিলিং এড়াতে রিসোর্স বন্ধ করতে, আপনি আপনার তৈরি রিসোর্সগুলি মুছে ফেলতে পারেন অথবা প্রকল্পটি মুছে ফেলতে পারেন। নতুন গুগল ক্লাউড ব্যবহারকারীরা $300 USD ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য।

ক্লাউড শেল শুরু করুন

যদিও গুগল ক্লাউড আপনার ল্যাপটপ থেকে দূরবর্তীভাবে পরিচালিত হতে পারে, এই কোডল্যাবে আপনি গুগল ক্লাউড শেল ব্যবহার করবেন, যা ক্লাউডে চলমান একটি কমান্ড লাইন পরিবেশ।

গুগল ক্লাউড কনসোল থেকে, উপরের ডানদিকের টুলবারে ক্লাউড শেল আইকনে ক্লিক করুন:

ক্লাউড শেল সক্রিয় করুন

পরিবেশের সাথে সংযোগ স্থাপন এবং সংযোগ স্থাপন করতে মাত্র কয়েক মুহূর্ত সময় লাগবে। এটি সম্পন্ন হলে, আপনি এরকম কিছু দেখতে পাবেন:

গুগল ক্লাউড শেল টার্মিনালের স্ক্রিনশট যা দেখায় যে পরিবেশটি সংযুক্ত হয়েছে

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

৩. জেমিনি সিএলআই দিয়ে শুরু করা

এই বিভাগে আপনি জেমিনি সিএলআই সম্পর্কে শিখবেন, আপনার পরিবেশের জন্য এটি কীভাবে ইনস্টল এবং কনফিগার করবেন তা সহ।

জেমিনি সিএলআই কী?

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

স্থাপন

npm ব্যবহার করে বিশ্বব্যাপী Gemini CLI ইনস্টল করুন।

npm install -g @google/gemini-cli

আপনি নিম্নলিখিত কমান্ডগুলি চালিয়ে নিশ্চিত করতে পারেন যে CLI ইনস্টল করা আছে:

gemini --version

কনফিগারেশন

জেমিনি সিএলআই-এর আচরণ কনফিগারেশন ফাইল এবং পরিবেশ ভেরিয়েবল দ্বারা নিয়ন্ত্রিত হয়। দুটি মূল ফাইল রয়েছে:

  • GEMINI.md : এই ফাইলটি AI-কে প্রাকৃতিক ভাষা নির্দেশিকা এবং প্রসঙ্গ প্রদান করে। CLI আপনার প্রকল্পের কোডিং মান এবং নিয়মাবলী বোঝার জন্য এই ফাইলটি পড়ে।
  • .gemini/settings.json : এই ফাইলটি CLI এর কনফিগারেশন নিয়ন্ত্রণ করে, যার মধ্যে রয়েছে বহিরাগত সরঞ্জামগুলির সাথে কীভাবে সংযোগ স্থাপন করতে হয়। আমরা এই ল্যাবে যে MCP সার্ভারটি তৈরি করছি তা ব্যবহার করার জন্য CLI কনফিগার করতে এই ফাইলটি ব্যবহার করব।

আমরা প্রথমে পরিবেশ সেট আপ করব এবং তারপর GEMINI.md ফাইল তৈরি করব। settings.json ফাইলটি পরবর্তী ধাপে কনফিগার করা হবে।

  1. একটি প্রকল্প ডিরেক্টরি তৈরি এবং আরম্ভ করুন:
mkdir godoctor
cd godoctor
go mod init godoctor
  1. গুগল ক্লাউড অ্যাপ্লিকেশন ডিফল্ট শংসাপত্রের সাহায্যে প্রমাণীকরণ করুন:

এই কোডল্যাবের জন্য আপনি যে GCP প্রকল্পটি ব্যবহার করতে যাচ্ছেন তার অ্যাক্সেস আছে এমন একটি অ্যাকাউন্টে আমাদের লগইন করতে হবে:

gcloud auth application-default login

৪. উন্নয়ন নির্দেশিকা

এআই সহকারী যাতে উচ্চমানের, ইডিওম্যাটিক গো কোড তৈরি করে তা নিশ্চিত করার জন্য, এটিকে স্পষ্ট নির্দেশিকা প্রদান করা অপরিহার্য। এটি GEMINI.md ফাইলে করা হয়েছে।

লক্ষ্য: একটি GEMINI.md ফাইল তৈরি করুন যা এই প্রকল্পের সময় AI সহকারীর জন্য নিয়মের সেট হিসেবে কাজ করবে।

কাজ: আপনার godoctor ডিরেক্টরির রুটে GEMINI.md নামে একটি ফাইল তৈরি করুন এবং এতে নিম্নলিখিত বিষয়বস্তু পেস্ট করুন।

# Go Development Guidelines
All code contributed to this project must adhere to the following principles.

### 1. Formatting
All Go code **must** be formatted with `gofmt` before being submitted.

### 2. Naming Conventions
- **Packages:** Use short, concise, all-lowercase names.
- **Variables, Functions, and Methods:** Use `camelCase` for unexported identifiers and `PascalCase` for exported identifiers.
- **Interfaces:** Name interfaces for what they do (e.g., `io.Reader`), not with a prefix like `I`.

### 3. Error Handling
- Errors are values. Do not discard them.
- Handle errors explicitly using the `if err != nil` pattern.
- Provide context to errors using `fmt.Errorf("context: %w", err)`.

### 4. Simplicity and Clarity
- "Clear is better than clever." Write code that is easy to understand.
- Avoid unnecessary complexity and abstractions.
- Prefer returning concrete types, not interfaces.

### 5. Documentation
- All exported identifiers (`PascalCase`) **must** have a doc comment.
- Comments should explain the *why*, not the *what*.

# Agent Guidelines
- **Reading URLs:** ALWAYS read URLs provided by the user. They are not optional.

এখন আপনার ডেভেলপমেন্ট পরিবেশ সম্পূর্ণরূপে সেট আপ হয়ে গেছে।

৫. প্রাথমিক বিল্ড: একটি গডক সার্ভার

আপনার প্রথম লক্ষ্য হল godoctor সার্ভারের প্রাথমিক সংস্করণ তৈরি করা। এই সংস্করণটি একটি ন্যূনতম, উৎপাদন-প্রস্তুত অ্যাপ্লিকেশন হওয়া উচিত যা godoc নামক একটি একক সরঞ্জাম সরবরাহ করে যা Go ডকুমেন্টেশন অনুসন্ধান করার ক্ষমতা সরবরাহ করে।

লক্ষ্য: একটি প্রোডাকশন-রেডি MCP সার্ভার তৈরি করুন যা go doc কমান্ডটি প্রকাশ করে, একটি LLM কে Go ডকুমেন্টেশন জিজ্ঞাসা করার অনুমতি দেয়।

শেলটিতে Gemini CLI কমান্ড চালান:

gemini

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

7db0f94960fadac4.png সম্পর্কে

যদি আপনার নির্বাচন পরিবর্তন করার প্রয়োজন হয়, তাহলে আপনি /auth টাইপ করে এন্টার টিপে আবার এই মেনুটি খুলতে পারেন।

এরপর আপনাকে একটি থিম বেছে নিতে বলা হবে:

6289bdfb3b519fa7.png সম্পর্কে

/auth এর মতো, আপনি পরে /theme কমান্ডের সাহায্যে থিম পরিবর্তন করতে পারেন।

প্রমাণীকরণ পদ্ধতি এবং আপনার পছন্দের থিম নির্বাচন করার পরে আপনাকে কমান্ড প্রম্পটে নিয়ে যাওয়া হবে। এখানে আপনি আপনার কমান্ড টাইপ করতে পারেন, উদাহরণস্বরূপ:

Write a hello world application in Go.

CLI তার নিজস্ব যুক্তি (Gemini Flash বা Gemini Pro এর মতো Gemini মডেলের মাধ্যমে) এবং কাজগুলি সম্পাদনের জন্য টুলসের সংমিশ্রণ ব্যবহার করে। ফাইল সিস্টেম বা API, ডাটাবেস ইত্যাদির মতো বহিরাগত পরিষেবাগুলির সাথে ইন্টারঅ্যাক্ট করার প্রয়োজন হলে এটি টুলস ব্যবহার করে। বাক্স থেকে আসা টুলস বা "অভ্যন্তরীণ টুলস" এর উদাহরণ হল read_file , write_file , web_fetch এবং google_search । আমরা যে MCP সার্ভারটি তৈরি করছি তা CLI-এর জন্য উপলব্ধ একটি টুল হয়ে উঠবে।

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

2cfd761183e4b770.png সম্পর্কে

প্রম্পট ছাড়াও, আপনি স্ল্যাশ কমান্ডও ব্যবহার করতে পারেন। আপনি যদি "/" টাইপ করেন, তাহলে CLI স্বয়ংক্রিয়ভাবে আপনাকে স্বয়ংক্রিয়ভাবে সম্পূর্ণ করার বিকল্পগুলি দেখাবে। আপনি সম্পূর্ণ কমান্ডটি টাইপ করা চালিয়ে যেতে পারেন অথবা বিকল্পগুলি থেকে একটি নির্বাচন করতে পারেন। উপরে উল্লিখিত /auth এবং /theme কমান্ডগুলি এরকম কয়েকটি কমান্ড।

26c3f3f7b8bceb3f.png

ইন্টারফেসের সাথে পরিচিত হয়ে গেলে, আপনি এই বিভাগের মূল কাজটি শুরু করতে পারেন, যা হল CLI কে আমাদের জন্য MCP সার্ভার লিখতে বলা।

একটি হ্যালো ওয়ার্ল্ড এমসিপি সার্ভার তৈরি করা হচ্ছে

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

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

একটি উদাহরণ প্রম্পট নিচে দেখানো হল:

Your task is to create a Model Context Protocol (MCP) server to expose a "hello world" tool. For the MCP implementation, you should use the official Go SDK for MCP and use the stdio transport.

Read these references to gather information about the technology and project structure before writing any code:
- https://github.com/modelcontextprotocol/go-sdk/blob/main/README.md
- https://modelcontextprotocol.io/specification/2025-06-18/basic/lifecycle
- https://go.dev/doc/modules/layout

To test the server, use shell commands like these:
(
  echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18"}}';
  echo '{"jsonrpc":"2.0","method":"notifications/initialized","params":{}}';
  echo '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}';
) | ./bin/godoctor

মনে রাখবেন যে উপরের প্রম্পটটি তিনটি প্রধান অংশ দ্বারা গঠিত:

  1. সমস্যার স্পেসিফিকেশন, আমরা কী তৈরি করতে চাই এবং সীমাবদ্ধতাগুলি সহ (যেমন যেকোনো SDK এর পরিবর্তে অফিসিয়াল SDK ব্যবহার করুন)
  2. অনুরোধটি দ্ব্যর্থতা নিরসনে সহায়তা করার জন্য মডেলটির জন্য রেফারেন্স ডকুমেন্টেশন
  3. একটি পরীক্ষার পদ্ধতি, যা কাজের গ্রহণযোগ্যতার মানদণ্ড হিসেবে কাজ করে

এই তিনটি উপাদান থাকা মডেলটিকে আরও ধারাবাহিকভাবে কাঙ্ক্ষিত ফলাফল অর্জনে সহায়তা করবে।

গো ডক টুল বাস্তবায়ন

একবার আপনার একটি কার্যকরী বাস্তবায়ন হয়ে গেলে, আমরা আসল "go doc" টুলটি বাস্তবায়নে এগিয়ে যেতে পারি:

Add a new tool to our MCP server called "godoc" that invokes the "go doc" shell command. The tool will take a mandatory "package" argument and an optional "symbol" argument.

Read the reference for the go doc command to understand its API: https://pkg.go.dev/golang.org/x/tools/cmd/godoc

Test it by executing the call with:
  echo '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name": "godoc", "arguments": {"package": "fmt"} } }'
 | ./bin/godoctor

Test it using both a standard library package and an external package like "github.com/modelcontextprotocol/go-sdk/mcp", both with and without symbols.

এই প্রম্পটটি নিয়ে পরীক্ষা-নিরীক্ষা করতে দ্বিধা করবেন না অথবা আপনার নিজস্ব প্রম্পট তৈরি করার চেষ্টা করবেন না।

একটি সহায়ক কমান্ড লাইন ইন্টারফেস

একটি ভালো বাস্তবায়নের সিদ্ধান্ত নেওয়ার সাথে সাথেই, আপনি মডেলটিকে একটি MCP ক্লায়েন্ট ব্যবহার করে একটি godoctor CLI তৈরি করার নির্দেশ দিতে পারেন। এটি JSON-RPC কল ম্যানুয়ালি তৈরি করার প্রয়োজনীয়তা এড়িয়ে বৈশিষ্ট্যগুলির পরীক্ষাকে সহজতর করতে সাহায্য করবে।

উদাহরণ প্রম্পট:

Now create a godoctor-cli component that will call the MCP server using command transport. This CLI will expose all tools using subcommands and allow us to test the MCP server implementation without needing to build the JSON-RPC calls manually.

Use the reference implementation at https://github.com/modelcontextprotocol/go-sdk/blob/main/README.md to build the client.

Test it by calling from the command line:
- the hello_world tool 
- the godoc tool with a local package
- the godoc tool with a local package and symbol
- the godoc tool with an external package
- the godoc tool with an external package and symbol

এখন যেহেতু আপনার কাছে ক্লায়েন্ট এবং সার্ভারের একটি কার্যকরী সেট আছে, পরবর্তী বিভাগে আপনি আপনার তৈরি করা MCP সার্ভারের সাথে Gemini CLI কনফিগার করতে যাচ্ছেন যাতে পরবর্তী কোডিং টাস্কে এর সুবিধাগুলি কাজে লাগানো শুরু করা যায়।

দরকারী সম্পদ

যেহেতু MCP এখনও একটি অভিনব ধারণা এবং MCP-এর জন্য Go SDK একটি নতুন লাইব্রেরি, এই ধাপে Gemini-এর নিজেরাই সঠিক বাস্তবায়ন আবিষ্কার করতে অনেক সময় লাগতে পারে। মডেলটিকে সঠিক সমাধান নিয়ে আসতে সাহায্য করার জন্য, আপনি নিম্নলিখিত রেফারেন্সগুলি দিতে পারেন:

  1. আপনি মডেলটিকে নিম্নলিখিত প্রম্পট দিতে পারেন যাতে এটি SDK API আরও ধারাবাহিকভাবে আবিষ্কার করতে পারে: "go-sdk লাইব্রেরির জন্য api আবিষ্কার করতে go doc shell কমান্ডটি ব্যবহার করুন"
  2. যদি মডেলটি read_file টুল দিয়ে SDK এর সোর্স কোড পরীক্ষা করার চেষ্টা করে, তাহলে এটি ব্যর্থ হবে কারণ Gemini CLI তার বর্তমান সুযোগের বাইরে ফাইলগুলি পড়তে পারে না। আপনি run_shell_command টুলের মাধ্যমে cat এবং ls কমান্ড ব্যবহার করার নির্দেশ দিতে পারেন।
  3. যদি মডেলটির অ্যাপ্লিকেশনটি ডিবাগ করতে সমস্যা হয়, তাহলে আরও ভার্বোজ লগিং যোগ করার এবং ত্রুটি বার্তাগুলিতে প্রাসঙ্গিক তথ্য উন্নত করার নির্দেশ দিন।
  4. যদি অন্য সবকিছু ব্যর্থ হয়, তাহলে এটিকে একটি রেফারেন্স বাস্তবায়ন দিন: https://github.com/danicat/godoctor

৬. জেমিনি সিএলআই-এর জন্য গোডক্টরকে এমসিপি সার্ভার হিসেবে কনফিগার করা

AI সহকারী ক্লায়েন্ট এবং সার্ভার উভয়ের জন্য কোড তৈরি করার পরে, আপনি এটিকে কয়েকটি ম্যানুয়াল পরীক্ষা চালানোর নির্দেশ দিতে পারেন। উদাহরণস্বরূপ:

retrieve the documentation for the package net/http

নিশ্চিত করুন যে আপনি এটি একটি বহিরাগত নির্ভরতা দিয়েও পরীক্ষা করছেন (স্ট্যান্ডার্ড লাইব্রেরিতে নয়):

retrieve the documentation for the github.com/modelcontextprotocol/go-sdk/mcp package

ফলাফলে সন্তুষ্ট হয়ে গেলে, এই প্রকল্পটি কীভাবে ব্যবহার এবং বিকাশ করবেন তার নির্দেশাবলী সহ একটি README.md লিখতে নির্দেশ দিন।

Now write a detailed README.md file explaining both from a user and a developer perspective how to use and to build this project.

এখন আমরা সার্ভারটি এমনভাবে কনফিগার করতে যাচ্ছি যাতে জেমিনি সিএলআই ডেভেলপমেন্টের পরবর্তী পর্যায়ে এটি ব্যবহার করতে পারে।

  1. ডকুমেন্টেশন পড়ার জন্য পছন্দের পদ্ধতি হিসেবে godoc ব্যবহার করার জন্য CLI-কে GEMINI.md আপডেট করতে বলুন:
update the GEMINI.md file to use the godoc tool to retrieve documentation about Go packages or symbols. Always prefer to use godoc over WebFetch and GoogleSearch, and only use those when godoc doesn't give a clear answer.
  1. এখন আমাদের এটি কনফিগার করার জন্য জেমিনি সিএলআই পুনরায় চালু করতে হবে। প্রথমে, চ্যাট সেশনটি সংরক্ষণ করা যাক যাতে এটি পুনরায় চালু হওয়ার পরে আপনি যেখানে থামিয়েছিলেন সেখান থেকে পুনরায় শুরু করতে পারেন।
/chat save workshop001
  1. Ctrl+D দুবার চেপে অথবা /quit কমান্ড লিখে CLI থেকে বেরিয়ে আসুন।
  2. সার্ভার বাইনারি কম্পাইল করুন: একটি bin ডিরেক্টরি তৈরি করুন এবং এতে godoctor সার্ভার কম্পাইল করুন।
mkdir -p bin
go build -o ./bin/godoctor ./cmd/godoctor # adjust paths as needed
  1. স্থানীয় টুলের জন্য Gemini CLI কনফিগার করুন: আপনার প্রজেক্ট রুটে একটি .gemini/settings.json ফাইল তৈরি করুন এবং Gemini CLI কে আপনার কম্পাইল করা সার্ভারটি কীভাবে চালাবেন তা জানাতে একটি mcpServers বিভাগ যুক্ত করুন।
mkdir -p .gemini
touch .gemini/settings.json
  1. এখন, vim অথবা nano মতো কমান্ড লাইন এডিটর ব্যবহার করে নতুন ফাইলে নিম্নলিখিত বিষয়বস্তু যোগ করুন:
{
  "mcpServers": {
    "godoctor": {
      "command": "./bin/godoctor"
    }
  }
}
  1. এখন জেমিনি সিএলআই চালু করুন এবং চ্যাট সেশন পুনরুদ্ধার করুন:
/chat resume workshop001
  1. /mcp কমান্ড টাইপ করে আপনি দেখতে পাবেন যে টুলটি লোড হয়েছে। আপনি /mcp desc ব্যবহার করেও টুলগুলির সম্পূর্ণ বিবরণ দেখাতে পারেন:

84e399367085940f.png সম্পর্কে

  1. "Get the documentation for net/http" এর মতো একটি প্রম্পট ব্যবহার করে জেমিনি সিএলআইকে আপনার টুলটি ব্যবহার করতে বলে ইন্টিগ্রেশন পরীক্ষা করুন।

তোমার এরকম কিছু দেখা উচিত:

ce0d27e7cc66df17.png

যদি টুলটি সঠিকভাবে কাজ করে তবে আপনি টুল কলের মাধ্যমে প্রাপ্ত ডকুমেন্টেশন দেখতে পাবেন:

eca5bcc6dc20df05.png সম্পর্কে

অভিনন্দন, তুমি একটি MCP টুল তৈরি করেছো! কিন্তু এখানেই শেষ নয়, আমরা এখনও এটিকে আরও কিছুটা কার্যকর করতে পারি।

৭. একজন এআই-চালিত কোড রিভিউয়ার যোগ করা

আসুন আরও পরিশীলিত, AI-চালিত বৈশিষ্ট্য যুক্ত করি: একটি কোড রিভিউয়ার যা জেমিনি API ব্যবহার করে।

লক্ষ্য: বিদ্যমান প্রকল্পে code_review নামে একটি নতুন টুল যোগ করুন। এই টুলটি Go কোড বিশ্লেষণ করতে এবং প্রতিক্রিয়া প্রদান করতে Gemini API ব্যবহার করবে।

উদাহরণ প্রম্পট:

I want to add a new tool to my project called code_review. This tool should use the Gemini API on Vertex AI (with gemini-2.5-flash) to analyze Go code and provide a list of improvements in json format according to the best practices accepted by the Go community.

The tool should take the Go code content and an optional hint as input. The hint will be used to provide additional guidance for the AI reviewer, like "focus on security" or "help me simplify this code". Please update the server to include this new tool and modify the CLI client to add a review command to use it.

Use this SDK to call Gemini: https://github.com/googleapis/go-genai

দরকারী টিপস

মডেলটি একবার এটিতে কাজ শুরু করলে আপনি স্বয়ংক্রিয়ভাবে দেখতে পাবেন যে এটি genai প্যাকেজের ডকুমেন্টেশন ব্রাউজ করার জন্য godoc টুলটি কল করার অনুরোধ করছে। যদি তা না হয়, তাহলে আপনি সর্বদা escape কী দিয়ে প্রক্রিয়াটি ব্যাহত করতে পারেন এবং মনে করিয়ে দিতে পারেন যে এখন এটির কাছে godoc টুল রয়েছে।

কোড রিভিউয়ার পরীক্ষা করা হচ্ছে

  1. /chat save workshop002 দিয়ে চ্যাট সেশনটি সংরক্ষণ করুন এবং তারপর Ctrl+D দুবার টিপে CLI থেকে প্রস্থান করুন।
  2. code_review টুলটির Vertex AI অ্যাক্সেস প্রয়োজন, তাই আমাদের প্রথমে API সক্রিয় করতে হবে:
gcloud services enable aiplatform.googleapis.com
  1. নিচের বিষয়বস্তু দিয়ে একটি .env ফাইল তৈরি করুন। এই ল্যাবের শুরুতে তৈরি করা প্রজেক্টের আসল প্রজেক্ট আইডি দিয়ে GOOGLE_CLOUD_PROJECT ভেরিয়েবল এবং আপনার পছন্দের লোকেশন দিয়ে GOOGLE_CLOUD_LOCATION প্রতিস্থাপন করতে ভুলবেন না (যেমন 'us-central1')।
export GOOGLE_GENAI_USE_VERTEXAI=true
export GOOGLE_CLOUD_PROJECT='your-project-id'
export GOOGLE_CLOUD_LOCATION='your-location'
  1. কমান্ড সোর্স ব্যবহার করে .env ফাইলটি লোড করুন:
source .env
  1. নতুন টুল সংজ্ঞা দিয়ে সার্ভারটি পুনরায় কম্পাইল করুন:।
go build -o ./bin/godoctor ./cmd/godoctor
  1. আবার জেমিনি সিএলআই চালু করুন। /chat resume workshop002 দিয়ে চ্যাট সেশনটি পুনরুদ্ধার করুন।
  2. /mcp কমান্ডটি টাইপ করে নিশ্চিত করুন যে টুলটি সক্রিয় আছে। আপনি এরকম কিছু দেখতে পাবেন:

cde6e516c4993ad2.png সম্পর্কে

  1. এবার আসুন code-review টুলটি পরীক্ষা করে দেখি টুলের সোর্স ফাইলগুলির একটি পর্যালোচনা করে:

"cmd/godoctor/main.go ফাইলটি পর্যালোচনা করতে godoctor টুলটি ব্যবহার করুন।"

    You should see something like this:

c55d1dc88ffa3924.png সম্পর্কে

কোড পর্যালোচনা টুলটি কাজ করার সাথে সাথে, এখন আপনি মডেলটিকে একটি সম্পূর্ণ "স্ব-উন্নতিশীল" কর্মপ্রবাহের জন্য, পাওয়া কিছু উন্নতি প্রয়োগ করার পরামর্শ দিতে পারেন!

আপনি এখন নিশ্চিত করেছেন যে code-review টুলটি কাজ করে। পরবর্তী বিভাগে আপনি এটি ক্লাউডে স্থাপনের কাজ করবেন। /chat save workshop003 দিয়ে আপনার বর্তমান সেশনটি সংরক্ষণ করুন এবং CLI থেকে প্রস্থান করুন।

৮. ক্লাউডের জন্য আপনার সার্ভার প্রস্তুত করুন

আমরা এখন পর্যন্ত যে MCP সার্ভারটি তৈরি করেছি তা শুধুমাত্র স্থানীয় মেশিনে চলে, যা আপনার নিজস্ব ব্যবহারের জন্য সরঞ্জাম তৈরি করলে ঠিক আছে, তবে প্রায়শই এন্টারপ্রাইজ পরিবেশে আমাদের শত শত এমনকি হাজার হাজার ডেভেলপারের বৃহত্তর ব্যবহারের জন্য সরঞ্জাম স্থাপন করতে হয়।

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

লক্ষ্য: স্ট্রিমেবল HTTP ট্রান্সপোর্ট ব্যবহার করার জন্য godoctor সার্ভারটিকে রিফ্যাক্টর করুন।

উদাহরণ প্রম্পট:

The godoctor server is currently using the stdio transport. I want to deploy it to Cloud Run, so I need to refactor it to use the streamable HTTP transport instead. Please modify the server to comply with the streamable HTTP specification.

দরকারী সম্পদ

  1. যদি মডেলটি স্ট্রিমেবল HTTP ট্রান্সপোর্ট বাস্তবায়নে সমস্যায় পড়ে, তাহলে আপনি এটির জন্য এই রেফারেন্সটি দিতে পারেন: https://github.com/modelcontextprotocol/go-sdk/blob/main/design/design.md
  2. মডেলটি HTTP+SSE ব্যবহার করার চেষ্টা করতে পারে, যা এখন বন্ধ করে দেওয়া হয়েছে। যদি আপনি দেখেন যে এটি এই পথ দিয়ে যাচ্ছে, তাহলে এটিকে আবার স্ট্রিমেবল HTTP-এর দিকে ফিরিয়ে আনুন।

HTTP ব্যবহার করে সার্ভার পরীক্ষা করা হচ্ছে

মডেলটিকে godoctor ক্লায়েন্ট আপডেট করতে বলুন যাতে তারা স্ট্রিমেবল HTTP ব্যবহার করতে পারে যাতে আপনি পরীক্ষা করতে পারেন যে এটি এখনও কাজ করছে কিনা।

Now update the client to use streamable HTTP and run a test by retrieving documentation from one package

ঐচ্ছিক: যদি আপনি HTTP এর মাধ্যমে সার্ভার ব্যবহার করার জন্য Gemini CLI কনফিগার করতে চান:

  1. আপনার সেশন সংরক্ষণ করুন এবং CLI থেকে প্রস্থান করুন।
  2. আপনার .gemini/settings.json ফাইলটি সম্পাদনা করুন এবং আপনার স্থানীয় চলমান সার্ভারের দিকে নির্দেশ করার জন্য কনফিগারেশনটি পরিবর্তন করুন।
"mcpServers": {
  "godoctor": {
    "httpUrl": "http://localhost:8080"
  }
}
  1. স্থানীয়ভাবে রিফ্যাক্টর করা সার্ভারটি চালান:
go run ./cmd/godoctor/main.go
  1. একটি নতুন টার্মিনালে (যেহেতু উপরের অপারেশনটি ব্লক করছে), জেমিনি সিএলআই শুরু করুন এবং সংযোগটি পরীক্ষা করার জন্য একটি প্রম্পট দিন, যেমন, "fmt.Println এর জন্য ডকুমেন্টেশন পেতে godoctor টুলটি ব্যবহার করুন।"
  2. পরীক্ষা শেষ হলে Ctrl+C দিয়ে সার্ভারটি বন্ধ করুন।

৯. ডকারের সাহায্যে অ্যাপ্লিকেশনটি কন্টেইনারাইজ করা

এখন যেহেতু আমাদের সার্ভার সঠিক পরিবহন প্রোটোকল ব্যবহার করছে, আমরা এটি স্থাপনের জন্য কন্টেইনারাইজ করতে পারি।

লক্ষ্য: godoctor সার্ভারটিকে একটি পোর্টেবল, উৎপাদন-প্রস্তুত কন্টেইনার ছবিতে প্যাকেজ করার জন্য একটি Dockerfile তৈরি করুন।

উদাহরণ প্রম্পট:

Please create a multi-stage Dockerfile that compiles the Go binary and copies it into a minimal golang image like golang:1.24-alpine.

ডকার ইমেজ পরীক্ষা করা হচ্ছে

Dockerfile তৈরি হওয়ার পর, ছবিটি তৈরি করুন এবং এটি সঠিকভাবে কাজ করে তা নিশ্চিত করার জন্য এটি চালান। আপনি জেমিনিকে এটি করার নির্দেশ দিতে পারেন:

build the image and test the connectivity to the server using the godoctor client

ঐচ্ছিক: যদি আপনি নিজে পরীক্ষাটি করতে চান:

  1. পাত্রটি তৈরি করুন:
docker build -t godoctor:latest .
  1. স্থানীয়ভাবে কন্টেইনারটি চালান:
docker run -p 8080:8080 -e PORT=8080 godoctor:latest
  1. চলমান কন্টেইনারটি পরীক্ষা করুন: অন্য একটি টার্মিনালে, জেমিনি CLI শুরু করুন এবং ডকুমেন্টেশন আনতে বলুন।
  2. পরীক্ষা শেষ হলে Ctrl+C দিয়ে সার্ভারটি বন্ধ করুন।

১০. ক্লাউড রানে মোতায়েন করা

এখন আমাদের কন্টেইনারটিকে ক্লাউডে স্থাপন করার সময়।

লক্ষ্য: কন্টেইনারাইজড গোডক্টর সার্ভারটি গুগল ক্লাউড রানে স্থাপন করুন।

তাৎক্ষণিক নির্দেশনা: আপনার কন্টেইনার স্থাপনের জন্য আপনার AI সহকারীকে gcloud কমান্ড প্রদান করতে বলুন।

উদাহরণ প্রম্পট:

Now please deploy this image to Cloud Run and return me an URL I can use to call the MCP tool. Configure Cloud Run to use the environment variables in the .env file.

একবার স্থাপন শেষ হয়ে গেলে, আমরা আপনার স্থাপন করা টুলটি ব্যবহার করার জন্য জেমিনি সিএলআই কনফিগার করব।

আপনার .gemini/settings.json ফাইলটি আপডেট করুন যাতে MCP টুল কনফিগারেশনটি আপনার ডিপ্লয় করা পরিষেবার দিকে নির্দেশিত হয়, অথবা Gemini CLI কে আপনার জন্য এটি করতে বলুন:

now update the .gemini/settings.json file to use this URL for the godoctor server

চূড়ান্ত mcpServers বিভাগটি দেখতে এরকম হওয়া উচিত (প্লেসহোল্ডারটি আপনার আসল Cloud Run অ্যাপ URL দিয়ে প্রতিস্থাপন করতে ভুলবেন না):

"mcpServers": {
  "godoctor": {
    "httpUrl": "https://<your-cloud-run-id>.us-central1.run.app"
  }
}

ক্লাউড রান ডিপ্লয়মেন্ট পরীক্ষা করা হচ্ছে

তুমি এখন চূড়ান্ত, এন্ড-টু-এন্ড পরীক্ষার জন্য প্রস্তুত।

শেষবারের মতো জেমিনি সিএলআই পুনরায় চালু করুন (আপনার প্রসঙ্গ সংরক্ষণের জন্য /chat save এবং /chat resume ব্যবহার করে)। এখন সিএলআই রিমোট এমসিপি সার্ভারে কল করতে সক্ষম হবে। যেকোনো প্যাকেজের জন্য ডকুমেন্টেশন জিজ্ঞাসা করার চেষ্টা করুন।

আপনি কোড পর্যালোচনা টুলটিও পরীক্ষা করতে পারেন:

Use the godoctor tool to review the cmd/godoctor/main.go file

পরিষ্কার করা

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

I'm done with my tests on the CloudRun server, please delete this deployment for me and revert my .gemini/settings.json to use the local version.

১১. অভিনন্দন!

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

রেফারেন্স ডক্স