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

1. ভূমিকা

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

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

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

আপনি কি শিখবেন

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

আপনি কি প্রয়োজন হবে

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

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

  • Node.js 20 বা তার পরে
  • বিলিং সক্ষম সহ একটি Google ক্লাউড প্রকল্প৷
  • Google ক্লাউড SDK (gcloud CLI) ইনস্টল এবং আরম্ভ করা হয়েছে৷
  • যান 1.24 বা তার পরে আপনার সিস্টেমে ইনস্টল করুন
  • আপনার সিস্টেমে ডকার ইনস্টল করা হয়েছে

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

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

  • Gemini CLI : AI-চালিত কমান্ড-লাইন ইন্টারফেস যা আমরা প্রসারিত করব
  • মডেল কনটেক্সট প্রোটোকল (MCP) : ওপেন সোর্স প্রোটোকল যা জেমিনি CLI কে আমাদের কাস্টম টুলের সাথে যোগাযোগ করতে দেয়
  • Go SDK for MCP : Go লাইব্রেরিটি আমরা আমাদের MCP সার্ভার বাস্তবায়ন করতে ব্যবহার করব

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

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

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

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

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

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

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

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

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

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

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

55efc1aaa7a4d3ad.png

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

7ffe5cbb04455448.png

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

3. মিথুন CLI দিয়ে শুরু করা

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

মিথুন CLI কি?

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

ইনস্টলেশন

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

npm install -g @google/gemini-cli

আপনি চালিয়ে নিশ্চিত করতে পারেন যে CLI ইনস্টল হয়েছে:

gemini --version

কনফিগারেশন

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

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

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

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

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

gcloud auth application-default login

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

AI অ্যাসিস্ট্যান্ট উচ্চ-মানের, বাজে গো কোড তৈরি করে তা নিশ্চিত করতে, এটিকে স্পষ্ট নির্দেশিকা প্রদান করা অপরিহার্য। এটি 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.

এখন আপনার উন্নয়ন পরিবেশ সম্পূর্ণরূপে সেট আপ করা হয়েছে.

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

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

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

শেলে জেমিনি CLI কমান্ড চালান:

gemini

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

c2ea6b44cbeb6e08.png

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

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

2b2dcd367c195dbb.png

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

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

Write a hello world application in Go.

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

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

e4b33d6cd7f03cff.png

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

a6294fd0d362fcdd.png

একবার আপনি ইন্টারফেসের সাথে পরিচিত হয়ে গেলে, আপনি এই বিভাগের প্রধান কাজটি শুরু করতে পারেন, যা হল CLI কে আমাদের জন্য 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. একটি পরীক্ষার পদ্ধতি, যা কাজের জন্য গ্রহণযোগ্যতার মানদণ্ড হিসাবে কাজ করে

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

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

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

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 ক্লায়েন্ট ব্যবহার করে একটি গডক্টর 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 এখনও একটি অভিনব ধারণা এবং MCP-এর জন্য Go SDK হল একটি নতুন লাইব্রেরি, এই ধাপে জেমিনি নিজের থেকে সঠিক বাস্তবায়ন আবিষ্কার করতে অনেক সময় নিতে পারে। মডেলটিকে সঠিক সমাধান নিয়ে আসতে সাহায্য করার জন্য, আপনি এটিকে নিম্নলিখিত উল্লেখগুলি দিতে চাইতে পারেন:

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

6. Gemini CLI-এর জন্য একটি MCP সার্ভার হিসাবে godoctor কনফিগার করা

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

retrieve the documentation for the package net/http

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

retrieve the documentation for the go-sdk 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 ব্যবহার করতে GEMINI.md আপডেট করতে CLI-কে বলুন:
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. এখন আমাদের এটি কনফিগার করার জন্য Gemini CLI পুনরায় চালু করতে হবে। প্রথমত, চ্যাট সেশনটি সেভ করা যাক যাতে এটি পুনরায় চালু হলে আপনি যেখানে থামিয়েছিলেন সেখান থেকে আবার শুরু করতে পারেন।
/chat save workshop001
  1. Ctrl+D দুবার চেপে 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. এখন Gemini CLI চালু করুন এবং চ্যাট সেশন পুনরুদ্ধার করুন:
/chat resume workshop001
  1. আপনি Ctrl+T টিপে টুলটি লোড হয়েছে তা দেখতে সক্ষম হওয়া উচিত:

2d0f7c9b3550300a.png

  1. জেমিনি সিএলআই-কে "নেট/এইচটিপির জন্য ডকুমেন্টেশন পান"-এর মতো একটি প্রম্পটের মাধ্যমে আপনার টুল ব্যবহার করতে বলে ইন্টিগ্রেশন পরীক্ষা করুন।

আপনি এই মত কিছু দেখতে হবে:

5c806e3aa4b75165.png

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

6a2b8f33ebeb86d2.png

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

7. একটি 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 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 টুলে কল করার অনুরোধ করছে। যদি এটি না হয়, আপনি সর্বদা এস্কেপ কী দিয়ে প্রক্রিয়াটিকে বাধা দিতে পারেন এবং মনে করিয়ে দিতে পারেন যে এখন এটির হাতে godoc টুল রয়েছে।

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

  1. MCP সার্ভার তৈরি এবং পুনরায় লোড করতে আমাদের Gemini CLI পুনরায় চালু করতে হবে। /chat save workshop002 সাথে চ্যাট সেশনটি সেভ করুন এবং তারপর Ctrl+D দুবার চেপে CLI থেকে প্রস্থান করুন।
  2. code_review টুলটির একটি API কী প্রয়োজন যেহেতু আমরা আমাদের জন্য রিভিউ করার জন্য একটি জেমিনি মডেলকে কল করছি। আপনি Google AI Studio ব্যবহার করে একটি API কী তৈরি করতে পারেন।
  3. উপরের ধাপে জেনারেট করা API কী দিয়ে পরিবেশ পরিবর্তনশীল GEMINI_API_KEY কনফিগার করুন:
export GEMINI_API_KEY="YOUR_API_KEY"
  1. সার্ভার পুনরায় কম্পাইল করুন: নতুন টুল যোগ করার পরে, আপনাকে পরিবর্তনগুলি অন্তর্ভুক্ত করতে সার্ভার বাইনারি পুনরায় কম্পাইল করতে হবে।
go build -o ./bin/godoctor ./cmd/godoctor
  1. জেমিনি CLI আবার চালু করুন। /chat resume workshop002 সাথে চ্যাট সেশনটি পুনরুদ্ধার করুন।
  2. গুরুত্বপূর্ণ। নিশ্চিত করুন যে আপনি আপনার ব্যক্তিগত জিমেইল অ্যাকাউন্টের সাথে প্রমাণীকৃত হয়েছেন যাতে জেমিনি CLI নিজেই আপনার বিলিং অ্যাকাউন্ট ব্যবহার না করে। আপনি /auth কমান্ড ব্যবহার করে এটি করতে পারেন:

9d906ba69f571bb7.png

  1. Ctrl+T টিপে টুলটি সক্ষম হয়েছে তা নিশ্চিত করুন। আপনি এই মত কিছু দেখতে হবে:

fc5cf95c413ac8b.png

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

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

    You should see something like this:

819860af008ee643.png

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

আপনি এখন নিশ্চিত করেছেন যে code-review টুল কাজ করে। পরবর্তী বিভাগে আপনি ক্লাউডে এটি স্থাপনের কাজ করবেন।

GEMINI_API_KEY সাফ করতে:

  1. /chat save workshop003 সাথে আপনার বর্তমান সেশন সংরক্ষণ করুন এবং CLI থেকে প্রস্থান করুন
  2. নিরাপদ কোথাও API কী ব্যাকআপ করুন:
export | grep GEMINI_API_KEY > env.bkp
  1. GEMINI_API_KEY আনসেট করুন:
export GEMINI_API_KEY=
  1. CLI রিস্টার্ট করুন এবং /chat resume workshop003 দিয়ে সেশন লোড করুন
  2. কোড পর্যালোচনার উন্নতিগুলি প্রয়োগ করতে মডেলটিকে বলুন৷

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

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

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

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

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

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 ব্যবহার করে সার্ভার পরীক্ষা করা হচ্ছে

মডেলটিকে গডক্টর ক্লায়েন্টকে স্ট্রিমযোগ্য 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. একটি নতুন টার্মিনালে (যেহেতু উপরের অপারেশনটি ব্লক করছে), জেমিনি CLI শুরু করুন এবং সংযোগ পরীক্ষা করার জন্য একটি প্রম্পট দিন, যেমন, "fmt.Println-এর ডকুমেন্টেশন পেতে godoctor টুল ব্যবহার করুন।"
  2. আপনার পরীক্ষা শেষ হলে Ctrl+C দিয়ে সার্ভার বন্ধ করুন।

9. ডকারের সাথে অ্যাপ্লিকেশনটি ধারণ করা

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

লক্ষ্য: একটি পোর্টেবল, উৎপাদন-প্রস্তুত কন্টেইনার ইমেজে 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. চলমান কন্টেইনার পরীক্ষা করুন: অন্য টার্মিনালে, Gemini CLI শুরু করুন এবং ডকুমেন্টেশন আনতে বলুন।
  2. আপনার পরীক্ষা শেষ হলে Ctrl+C দিয়ে সার্ভার বন্ধ করুন।

10. ক্লাউড রানে স্থাপন করা হচ্ছে

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

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

প্রম্পট গাইডেন্স: আপনার এআই সহকারীকে আপনার কন্টেইনার মোতায়েন করার জন্য gcloud কমান্ড প্রদান করতে বলুন।

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

Now please deploy this image to Cloud Run and return me an URL I can use to call the MCP tool. Deploy it to us-central1 and use the project currently configured in the environment.

ডিপ্লোয়মেন্ট শেষ হয়ে গেলে আমরা জেমিনি CLI কনফিগার করব যাতে আপনি এইমাত্র যে টুলটি ব্যবহার করেছেন তা ব্যবহার করতে।

জেমিনীকে আপনার .gemini/settings.json ফাইলটি আপডেট করতে বলুন যাতে MCP টুল কনফিগারেশন পরিবর্তন করা যায় যাতে আপনার নিয়োজিত পরিষেবার দিকে নির্দেশ করা যায়।

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

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

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

ক্লাউড রান স্থাপনার পরীক্ষা করা হচ্ছে

আপনি এখন চূড়ান্ত, শেষ থেকে শেষ পরীক্ষার জন্য প্রস্তুত।

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

শুধু মনে রাখবেন যে কোড পর্যালোচনা টুল ব্যবহার করার জন্য পরিষেবাটির প্রয়োজন GEMINI_API_KEY । আপনি জেমিনি CLI কে সঠিক পরিবেশে এটি পুনরায় স্থাপন করতে বলতে পারেন:

update the cloud run environment to add a GEMINI_API_KEY and use the value in @env.bkp. Then update the .gemini/settings.json file with the correct service URL

CLI পুনরায় চালু করুন এবং একটি প্রম্পট দিয়ে এটি পরীক্ষা করুন:

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

জেমিনি CLI এখন আপনার নিয়োজিত ক্লাউড রান পরিষেবার সাথে সংযুক্ত হবে এবং কোড পর্যালোচনা চালাবে।

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

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.

11. অভিনন্দন!

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

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