1. परिचय
इस कोडलैब में, Gemini सीएलआई की क्षमताओं को बढ़ाने के लिए, मॉडल कॉन्टेक्स्ट प्रोटोकॉल (एमसीपी) सर्वर बनाने और उसे डिप्लॉय करने का तरीका बताया गया है. आपको godoctor बनाना होगा. यह Go पर आधारित एक सर्वर है. यह Go डेवलपमेंट के लिए कस्टम टूल उपलब्ध कराता है. इससे Gemini सीएलआई, कोडिंग में मदद करने वाले सामान्य असिस्टेंट से बदलकर, Go डेवलपमेंट के लिए एक विशेषज्ञ बन जाता है.
इस कोडलैब में, "प्रॉम्प्ट के ज़रिए काम करने" का तरीका इस्तेमाल किया गया है. आपको टेक लीड के तौर पर काम करना होगा. साथ ही, अपने एआई असिस्टेंट (Gemini सीएलआई) को प्रॉम्प्ट देने होंगे. आपका लक्ष्य यह जानना है कि प्रोजेक्ट की ज़रूरी शर्तों को असरदार प्रॉम्प्ट में कैसे बदला जाए. साथ ही, एआई को लागू करने से जुड़ी जानकारी को मैनेज करने की अनुमति देना है.
इस प्रोजेक्ट के केंद्र में मॉडल कॉन्टेक्स्ट प्रोटोकॉल (एमसीपी) है. एमसीपी एक ओपन-सोर्स प्रोटोकॉल है. यह स्टैंडर्ड तय करता है कि Gemini जैसे लार्ज लैंग्वेज मॉडल (एलएलएम), बाहरी टूल और सेवाओं के साथ कैसे कम्यूनिकेट करते हैं. यह एक पुल की तरह काम करता है. इससे एआई को असल दुनिया की जानकारी ऐक्सेस करने और अपनी बिल्ट-इन जानकारी से आगे बढ़कर कार्रवाइयां करने की अनुमति मिलती है. एमसीपी सर्वर बनाकर, एक कस्टम प्लगिन बनाया जाता है. इसे Gemini CLI खोज सकता है और इसका इस्तेमाल कर सकता है. इससे Gemini CLI को नई स्किल सीखने में मदद मिलती है.
आपको क्या सीखने को मिलेगा
- Gemini CLI को इंस्टॉल और कॉन्फ़िगर करने का तरीका
- सॉफ़्टवेयर डेवलपमेंट में एआई असिस्टेंट को गाइड करने के लिए, असरदार प्रॉम्प्ट कैसे लिखें
- एआई असिस्टेंट को कॉन्टेक्स्ट और दिशा-निर्देश देने का तरीका
- Gemini सीएलआई की क्षमताओं को बढ़ाने के लिए, एमसीपी सर्वर बनाने और उसे कॉन्फ़िगर करने का तरीका
- Go ऐप्लिकेशन को कंटेनर में बदलने और उसे Google Cloud Run पर डिप्लॉय करने का तरीका
आपको किन चीज़ों की ज़रूरत होगी
इस वर्कशॉप को पूरी तरह से Google Cloud Shell में किया जा सकता है. इसमें सभी ज़रूरी डिपेंडेंसी (gcloud CLI, Go, Docker, Gemini CLI) पहले से इंस्टॉल होती हैं.
इसके अलावा, अगर आपको अपनी मशीन पर काम करना है, तो आपको इन चीज़ों की ज़रूरत होगी:
- Node.js 20 या उसके बाद के वर्शन
- Google Cloud SDK (gcloud सीएलआई) इंस्टॉल और शुरू किया गया हो
- आपके सिस्टम पर Go 1.24 या इसके बाद का वर्शन इंस्टॉल होना चाहिए
- आपके सिस्टम पर Docker इंस्टॉल होना चाहिए
मुख्य टेक्नोलॉजी
हम जिन टेक्नोलॉजी का इस्तेमाल करेंगे उनके बारे में ज़्यादा जानकारी यहां दी गई है:
- Gemini CLI: एआई की मदद से काम करने वाला कमांड-लाइन इंटरफ़ेस, जिसे हम बेहतर बनाने वाले हैं
- मॉडल कॉन्टेक्स्ट प्रोटोकॉल (एमसीपी): यह ओपन-सोर्स प्रोटोकॉल है. इसकी मदद से, Gemini CLI हमारे कस्टम टूल के साथ कम्यूनिकेट कर सकता है
- MCP के लिए Go SDK: यह Go लाइब्रेरी है. इसका इस्तेमाल हम अपने एमसीपी सर्वर को लागू करने के लिए करेंगे
कोडलैब (कोड बनाना सीखना) को बेहतर बनाने के लिए सुझाव
एआई असिस्टेंट की मदद से काम करना, सॉफ़्टवेयर डेवलप करने का नया तरीका है. यहां कुछ सुझाव दिए गए हैं, ताकि आपको आसानी से और सही तरीके से पुष्टि कराने में मदद मिल सके:
- ESC बटन दबाने से न डरें. कभी-कभी एआई, ऐसी कार्रवाइयां या कोड सुझाएगा जो आपको सही नहीं लगते. सुझाए गए काम को रद्द करने के लिए, ESC कुंजी का इस्तेमाल करें. साथ ही, उसे सही दिशा में ले जाने के लिए नया प्रॉम्प्ट दें. आप पायलट हैं.
- टूल इस्तेमाल करने के लिए बढ़ावा दें. अगर एआई को जवाब देने में मुश्किल हो रही है या वह मनगढ़ंत जानकारी दे रहा है, तो उसे उपलब्ध टूल इस्तेमाल करने के लिए कहें. "क्या इसकी पुष्टि करने के लिए, Google Search का इस्तेमाल किया जा सकता है?" या "बदलाव करने से पहले, मौजूदा कोड को समझने के लिए read_file टूल का इस्तेमाल करो" जैसे प्रॉम्प्ट बहुत असरदार हो सकते हैं.
- मैन्युअल तरीके से किए गए बदलावों को खारिज करना. एआई से सभी काम करवाने की कोशिश करें. यह वह मुख्य स्किल है जिसकी प्रैक्टिस की जा रही है. हालांकि, अगर आपको मैन्युअल तरीके से बदलाव करना ही है, तो बाद में एआई को इसके बारे में बताएं. "मैंने README.md फ़ाइल को मैन्युअल तरीके से अपडेट कर दिया है. कृपया इसे फिर से पढ़ें, ताकि आपको इसके बारे में पूरी जानकारी मिल सके" से यह पक्का किया जा सकेगा कि एआई आपके प्रोजेक्ट के साथ सिंक रहे.
- क्या आपने इसे बंद करके फिर से चालू करने की कोशिश की है? अगर एआई आपकी कमांड के बावजूद, किसी दिए गए पाथ को फ़ॉलो करने की कोशिश कर रहा है, तो ऐसा कॉन्टेक्स्ट के खराब होने की वजह से हो सकता है. इसे कभी-कभी "कॉन्टेक्स्ट रॉट" भी कहा जाता है. इस मामले में, कॉन्टेक्स्ट नॉइज़ को कम करने के लिए, Gemini CLI कमांड "/compress" का इस्तेमाल किया जा सकता है. इसके अलावा, गंभीर मामलों में, पूरे सेशन के इतिहास को मिटाने के लिए "/clear" कमांड का इस्तेमाल किया जा सकता है.
2. एनवायरमेंट सेटअप करना
अगर आपको यह
कोडलैब को अपनी मशीन पर चलाएं या अगर आपको इस कोडलैब को पूरी तरह से क्लाउड में चलाना है, तो Cloud Shell शुरू करें.
अपने हिसाब से एनवायरमेंट सेट अप करना
- Google Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास पहले से कोई Gmail या Google Workspace खाता नहीं है, तो आपको एक खाता बनाना होगा.



- प्रोजेक्ट का नाम, इस प्रोजेक्ट में हिस्सा लेने वाले लोगों के लिए डिसप्ले नेम होता है. यह एक वर्ण स्ट्रिंग है, जिसका इस्तेमाल Google API नहीं करते. इसे कभी भी अपडेट किया जा सकता है.
- प्रोजेक्ट आईडी, सभी Google Cloud प्रोजेक्ट के लिए यूनीक होता है. साथ ही, इसे बदला नहीं जा सकता. Cloud Console, यूनीक स्ट्रिंग अपने-आप जनरेट करता है. आम तौर पर, आपको इससे कोई फ़र्क़ नहीं पड़ता कि यह क्या है. ज़्यादातर कोडलैब में, आपको अपने प्रोजेक्ट आईडी (आम तौर पर
PROJECT_IDके तौर पर पहचाना जाता है) का रेफ़रंस देना होगा. अगर आपको जनरेट किया गया आईडी पसंद नहीं है, तो कोई दूसरा रैंडम आईडी जनरेट किया जा सकता है. इसके अलावा, आपके पास अपना नाम आज़माने का विकल्प भी है. इससे आपको पता चलेगा कि वह नाम उपलब्ध है या नहीं. इस चरण के बाद, इसे बदला नहीं जा सकता. यह प्रोजेक्ट की अवधि तक बना रहता है. - आपकी जानकारी के लिए बता दें कि एक तीसरी वैल्यू भी होती है, जिसे प्रोजेक्ट नंबर कहते हैं. इसका इस्तेमाल कुछ एपीआई करते हैं. इन तीनों वैल्यू के बारे में ज़्यादा जानने के लिए, दस्तावेज़ देखें.
- इसके बाद, आपको Cloud Console में बिलिंग चालू करनी होगी, ताकि Cloud संसाधनों/एपीआई का इस्तेमाल किया जा सके. इस कोडलैब को पूरा करने में ज़्यादा समय नहीं लगेगा. इस ट्यूटोरियल के बाद बिलिंग से बचने के लिए, संसाधनों को बंद किया जा सकता है. इसके लिए, बनाए गए संसाधनों को मिटाएं या प्रोजेक्ट को मिटाएं. Google Cloud के नए उपयोगकर्ता, मुफ़्त में आज़माने के लिए 300 डॉलर के प्रोग्राम में शामिल हो सकते हैं.
Cloud Shell शुरू करें
Google Cloud को अपने लैपटॉप से रिमोटली ऐक्सेस किया जा सकता है. हालांकि, इस कोडलैब में Google Cloud Shell का इस्तेमाल किया जाएगा. यह क्लाउड में चलने वाला कमांड लाइन एनवायरमेंट है.
Google Cloud Console में, सबसे ऊपर दाएं कोने में मौजूद टूलबार पर, Cloud Shell आइकॉन पर क्लिक करें:

इसे चालू करने और एनवायरमेंट से कनेक्ट करने में सिर्फ़ कुछ सेकंड लगेंगे. यह प्रोसेस पूरी होने के बाद, आपको कुछ ऐसा दिखेगा:

इस वर्चुअल मशीन में, डेवलपमेंट के लिए ज़रूरी सभी टूल पहले से मौजूद हैं. यह 5 जीबी की होम डायरेक्ट्री उपलब्ध कराता है. साथ ही, यह Google Cloud पर काम करता है. इससे नेटवर्क की परफ़ॉर्मेंस और पुष्टि करने की प्रोसेस बेहतर होती है. इस कोडलैब में मौजूद सभी टास्क, ब्राउज़र में किए जा सकते हैं. आपको कुछ भी इंस्टॉल करने की ज़रूरत नहीं है.
3. Gemini सीएलआई का इस्तेमाल शुरू करना
इस सेक्शन में, आपको Gemini CLI के बारे में जानकारी मिलेगी. इसमें इसे इंस्टॉल करने और अपने एनवायरमेंट के लिए कॉन्फ़िगर करने का तरीका भी शामिल है.
Gemini CLI क्या है?
Gemini CLI, एआई की मदद से काम करने वाला कमांड-लाइन इंटरफ़ेस है. यह डेवलपमेंट से जुड़े कई टास्क में आपकी मदद कर सकता है. यह आपके प्रोजेक्ट के कॉन्टेक्स्ट को समझ सकता है, सवालों के जवाब दे सकता है, कोड जनरेट कर सकता है, और अपनी क्षमताओं को बढ़ाने के लिए बाहरी टूल का इस्तेमाल कर सकता है.
इंस्टॉल करना
npm का इस्तेमाल करके, Gemini CLI को ग्लोबल लेवल पर इंस्टॉल करें.
npm install -g @google/gemini-cli
यह पुष्टि की जा सकती है कि CLI इंस्टॉल हो गया है. इसके लिए, यह कमांड चलाएं:
gemini --version
कॉन्फ़िगरेशन
Gemini CLI के काम करने के तरीके को कॉन्फ़िगरेशन फ़ाइलों और एनवायरमेंट वैरिएबल से कंट्रोल किया जाता है. दो मुख्य फ़ाइलें हैं:
GEMINI.md: इस फ़ाइल में, एआई के लिए दिशा-निर्देश और कॉन्टेक्स्ट दिया गया है. सीएलआई इस फ़ाइल को पढ़कर, आपके प्रोजेक्ट के कोडिंग स्टैंडर्ड और कन्वेंशनल के बारे में जानकारी इकट्ठा करता है..gemini/settings.json: यह फ़ाइल, सीएलआई के कॉन्फ़िगरेशन को कंट्रोल करती है. इसमें यह भी शामिल है कि बाहरी टूल से कैसे कनेक्ट किया जाए. हम इस फ़ाइल का इस्तेमाल बाद में, सीएलआई को कॉन्फ़िगर करने के लिए करेंगे. इससे, इस लैब में बनाए जा रहे एमसीपी सर्वर का इस्तेमाल किया जा सकेगा.
हम सबसे पहले एनवायरमेंट सेट अप करेंगे. इसके बाद, GEMINI.md फ़ाइल बनाएंगे. settings.json फ़ाइल को बाद में कॉन्फ़िगर किया जाएगा.
- प्रोजेक्ट डायरेक्ट्री बनाएं और उसे शुरू करें:
mkdir godoctor && cd godoctor go mod init godoctor
- Google Cloud ऐप्लिकेशन के डिफ़ॉल्ट क्रेडेंशियल की मदद से पुष्टि करें:
हमें उस खाते में लॉग इन करना होगा जिसके पास उस GCP प्रोजेक्ट का ऐक्सेस हो जिसका इस्तेमाल आपको इस कोडलैब के लिए करना है:
- पक्का करें कि आपने Google Cloud SDK इंस्टॉल और शुरू किया हो.
- ऐप्लिकेशन के डिफ़ॉल्ट क्रेडेंशियल सेट अप करने के लिए, यह कमांड चलाएं:
gcloud auth application-default login
4. कॉन्टेक्स्ट फ़ाइल (GEMINI.md)
कॉन्टेक्स्ट फ़ाइलों का इस्तेमाल, Gemini मॉडल को निर्देश देने के लिए किया जाता है. इन फ़ाइलों का डिफ़ॉल्ट नाम GEMINI.md होता है. इन फ़ाइलों का इस्तेमाल करके, प्रोजेक्ट के हिसाब से निर्देश दिए जा सकते हैं. साथ ही, किसी पर्सोना को तय किया जा सकता है या कोडिंग स्टाइल गाइड दी जा सकती हैं. इससे एआई के जवाब ज़्यादा सटीक होंगे और आपकी ज़रूरतों के हिसाब से मिलेंगे.
हम GEMINI.md फ़ाइल लिखेंगे. इसमें Go डेवलपर के लिए, कुछ सामान्य सबसे सही तरीके शामिल होंगे. इससे यह पक्का किया जा सकेगा कि एआई असिस्टेंट, अच्छी क्वालिटी वाला और मुहावरेदार Go कोड जनरेट करे.
लक्ष्य: GEMINI.md फ़ाइल बनाना. यह फ़ाइल, इस प्रोजेक्ट के दौरान एआई असिस्टेंट के लिए नियमों के सेट के तौर पर काम करेगी.
नीचे दिए गए कॉन्टेंट के साथ GEMINI.md फ़ाइल बनाने के लिए, अपना IDE खोलें. अगर Cloud Shell का इस्तेमाल किया जा रहा है, तो नीचे दिए गए निर्देश का इस्तेमाल करके एडिटर खोला जा सकता है:
cloudshell edit .
टास्क: अपनी 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*.
## 6. Project structure
- cmd/ contains source code for target binaries (e.g. server, client)
- internal/ contains source code for packages not meant to be exported (e.g. internal/tools/hello)
- bin/ contains the compiled binaries
- At the root place README.md, go.mod and go.sum
अब आपका डेवलपमेंट एनवायरमेंट पूरी तरह से सेट अप हो गया है.
5. शुरुआती बिल्ड: दस्तावेज़ सर्वर
आपका पहला लक्ष्य, godoctor सर्वर का शुरुआती वर्शन बनाना है. यह वर्शन एक सामान्य ऐप्लिकेशन होना चाहिए. इसमें read_docs नाम का एक टूल होना चाहिए, जो Go के दस्तावेज़ों को खोजने की सुविधा देता हो.
लक्ष्य: प्रोडक्शन के लिए तैयार एमसीपी सर्वर बनाना. यह सर्वर, go doc कमांड को ऐक्सेस करने की सुविधा देता है. इससे एलएलएम, Go के दस्तावेज़ों से क्वेरी कर सकता है.
शेल पर Gemini CLI कमांड चलाएं:
gemini
पहली बार सीएलआई चलाने पर, आपसे पुष्टि करने का मोड और थीम चुनने के लिए कहा जाएगा.
अगर आपको यह कोडलैब Cloud Shell में चलाना है, तो Cloud Shell के उपयोगकर्ता क्रेडेंशियल का इस्तेमाल करें विकल्प चुनें. अगर ऐसा नहीं है, तो Google से लॉगिन करें का इस्तेमाल करके, निजी Google खाते से लॉगिन करें. इससे आपको Gemini CLI के मुफ़्त में उपलब्ध कई फ़ायदे मिल सकते हैं. पुष्टि करने के लिए विकल्प चुनने वाली स्क्रीन कुछ ऐसी दिखेगी:

अगर आपको अपना चुना गया विकल्प बदलना है, तो /auth टाइप करें और Enter दबाकर इस मेन्यू को फिर से खोलें.
इसके बाद, आपको कोई थीम चुनने के लिए कहा जाएगा:

/auth की तरह, /theme कमांड का इस्तेमाल करके बाद में भी थीम बदली जा सकती है.
पुष्टि करने का तरीका और अपनी पसंदीदा थीम चुनने के बाद, आपको कमांड प्रॉम्प्ट पर ले जाया जाएगा. यहां अपने निर्देश टाइप किए जा सकते हैं. उदाहरण के लिए:
Write a hello world application in Go
CLI, टास्क पूरा करने के लिए, Gemini Flash या Gemini Pro जैसे Gemini मॉडल के ज़रिए अपनी तर्क क्षमता और टूल का इस्तेमाल करता है. जब भी इसे फ़ाइल सिस्टम या बाहरी सेवाओं, जैसे कि एपीआई, डेटाबेस वगैरह के साथ इंटरैक्ट करना होता है, तब यह टूल का इस्तेमाल करता है. बॉक्स से बाहर निकलने वाले टूल या "इंटरनल टूल" के उदाहरण read_file, write_file, web_fetch, और google_search हैं. हम जो एमसीपी सर्वर बना रहे हैं वह सीएलआई के लिए भी उपलब्ध होगा.
पहली बार किसी टूल को चलाने पर, यह आपसे अनुमति मांगेगा. आपके पास इसे एक बार की अनुमति देने (एक बार अनुमति दें) या पूरे सेशन के लिए अनुमति देने (हमेशा अनुमति दें) का विकल्प होता है. इसके अलावा, अनुरोध को अस्वीकार भी किया जा सकता है. अगर फ़ाइल में बदलाव करने का विकल्प उपलब्ध है, तो आपको बाहरी एडिटर का इस्तेमाल करके फ़ाइल में बदलाव करने का विकल्प भी दिखेगा. ऐसा तब होता है, जब आपको कुछ बदलाव करने हों. उदाहरण के लिए, 'नमस्ते दुनिया' प्रोग्राम बनाने के लिए, ऊपर दिए गए प्रॉम्प्ट का आउटपुट यह है:

प्रॉम्प्ट के अलावा, स्लैश कमांड का भी इस्तेमाल किया जा सकता है. "/" टाइप करने पर, सीएलआई अपने-आप ऑटोकंप्लीट के विकल्प दिखाएगा. पूरा निर्देश टाइप करना जारी रखें या विकल्पों में से कोई एक चुनें. ऊपर बताई गई /auth और /theme कमांड, ऐसी ही कुछ कमांड हैं.

इंटरफ़ेस के बारे में जानने के बाद, इस सेक्शन का मुख्य टास्क शुरू किया जा सकता है. यह टास्क, CLI से हमारे लिए MCP सर्वर लिखने के लिए कहना है.
Hello World एमसीपी सर्वर बनाना
मॉडल को ज़्यादा भरोसेमंद तरीके से काम करने के लिए, मुश्किल टास्क को छोटे-छोटे चरणों में बांटना सबसे अच्छा तरीका है. मॉडल, मुश्किल टास्क को अपने-आप पूरा कर सकता है. हालांकि, सही सेटअप के बिना, उसे सही तरीके से लागू करने में काफ़ी समय लगेगा.
हमारा मकसद है कि यह मॉडल, एक जैसा जवाब दे. इसलिए, हम इसे सबसे पहले "Hello World" MCP सर्वर बनाने का निर्देश देंगे. इसके बाद, हम इसे वह फ़ंक्शन लागू करने का निर्देश देंगे जो हमें चाहिए (Go के दस्तावेज़ पढ़ना).
यहां प्रॉम्प्ट का एक उदाहरण दिया गया है:
Create a Model Context Protocol (MCP) server that exposes a "hello_world" tool. This tool, when called, should return the message "Hello, MCP world!" For the MCP implementation, you should use the official Go SDK for MCP (github.com/modelcontextprotocol/go-sdk/mcp) and use the stdio transport. TODO: - Download the dependency: `go get github.com/modelcontextprotocol/go-sdk/mcp` - Inspect the documentation of the SDK: `go doc github.com/modelcontextprotocol/go-sdk/mcp` - Build a `server` command that supports stdio transport only - Build a `client` command that connects to the server over command transport to test the server Acceptance Criteria: - `./bin/client --list-tools` returns the list of server tools including "hello_world" - `./bin/client --call-tool` "hello_world" returns the output "Hello, MCP world!"
ध्यान दें कि ऊपर दिए गए प्रॉम्प्ट में तीन मुख्य सेगमेंट शामिल हैं:
- समस्या की जानकारी, जिसमें यह शामिल है कि हमें क्या बनाना है और क्या-क्या शर्तें पूरी करनी हैं. उदाहरण के लिए, किसी भी एसडीके के बजाय आधिकारिक एसडीके का इस्तेमाल करना, एचटीटीपी के बजाय stdio ट्रांसपोर्ट का इस्तेमाल करना
- टास्क पूरे करने के लिए ज़रूरी जानकारी (TODO)
- टास्क के लिए ऐक्सेप्टेंस क्राइटेरिया, जो टेस्ट प्रोसीज़र के तौर पर काम करता है, ताकि एजेंट को पता चल सके कि टास्क कब पूरा हुआ
इन तीनों कॉम्पोनेंट के होने से, मॉडल को मनचाहे नतीजे पाने में ज़्यादा मदद मिलेगी.
read_docs टूल लागू करना
जब आपके पास काम करने वाला कोई तरीका हो, तब हम "read_docs" टूल को लागू करने के लिए आगे बढ़ सकते हैं:
Add a new tool to our MCP server called "read_docs" that invokes the "go doc" shell command. The tool will take a mandatory "package" argument and an optional "symbol" argument. TODO: - create a package `./internal/tools/docs` - register the tool with the MCP server - update the client to support the "read_docs" tool by providing arguments to the tool call Acceptance Criteria: - `./bin/client --tools-list` show both hello_world and read_docs - `./bin/client --tool-call read_docs fmt` returns the documentation for the `fmt` package - `./bin/client --tool-call read_docs fmt.Println` returns the documentation for the `fmt.Println` function - `./bin/client --tool-call read_docs github.com/modelcontextprotocol/go-sdk/mcp` returns documentation for the `mcp` package
ध्यान दें: इस प्रॉम्प्ट के साथ बेझिझक एक्सपेरिमेंट करें या अपना प्रॉम्प्ट बनाएं.
काम की सलाह
एमसीपी अब भी एक नई अवधारणा है. साथ ही, एमसीपी के लिए Go SDK टूल एक नई लाइब्रेरी है. इसलिए, इस चरण में Gemini को सही तरीके से लागू करने का तरीका ढूंढने में ज़्यादा समय लग सकता है. मॉडल को सही समाधान देने में मदद करने के लिए, यहां दिए गए तरीके आज़माएं:
- अगर मॉडल ने किसी भी चरण में दस्तावेज़ नहीं पढ़ा है, तो ESC दबाएं और उसे ऐसा करने के लिए कहें. अगर आपको go के बारे में जानकारी नहीं है, तो "go doc" के साथ पैकेज का नाम "go doc github.com/modelcontextprotocol/go-sdk/mcp" चलाने पर, सही दस्तावेज़ मिलेगा.
- टॉप लेवल मॉड्यूल " github.com/modelcontextprotocol/go-sdk" में कोई दस्तावेज़ नहीं है, क्योंकि इसमें कोई Go कोड नहीं है. इसलिए, आपको मॉडल को पूरा पाथ देखने के लिए कहना होगा
- इसके उलट, अगर मॉडल किसी ऐसे पैकेज के बारे में जानकारी देता है जो मौजूद नहीं है, तो "go doc github.com/modelcontextprotocol/go-sdk/mcp/server" को सिर्फ़ टॉप लेवल पैकेज की ओर ले जाएं.
6. Gemini CLI के लिए, godoctor को एमसीपी सर्वर के तौर पर कॉन्फ़िगर करना
एआई असिस्टेंट के क्लाइंट और सर्वर, दोनों के लिए कोड जनरेट करने के बाद, उसे कुछ मैन्युअल टेस्ट चलाने के लिए कहा जा सकता है. उदाहरण के लिए:
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.
अब हम सर्वर को कॉन्फ़िगर करने जा रहे हैं, ताकि Gemini सीएलआई डेवलपमेंट के अगले चरण में इसका इस्तेमाल कर सके.
- सीएलआई से GEMINI.md को अपडेट करने के लिए कहें, ताकि दस्तावेज़ पढ़ने के लिए
read_docsको पसंदीदा तरीके के तौर पर इस्तेमाल किया जा सके:
update the GEMINI.md file to include instructions to always use the read_docs tool to retrieve documentation about Go packages or symbols. This should be done whenever seeing an import for the first time in a session or after a new dependency is installed to the project (e.g. via `go get`)
- अब हमें एमसीपी सर्वर को कॉन्फ़िगर करने के लिए, Gemini CLI को रीस्टार्ट करना होगा. सबसे पहले, हम चैट सेशन को सेव कर लेते हैं, ताकि जब यह फिर से शुरू हो, तो आप वहीं से बातचीत जारी रख सकें जहां आपने छोड़ी थी.
/chat save godoctor-workshop
- सीएलआई से बाहर निकलने के लिए, Ctrl+D को दो बार दबाएं या
/quitकमांड टाइप करें. - पिछले चरणों में, एजेंट को आपके लिए सर्वर बाइनरी को कंपाइल करना चाहिए था. हालांकि, हम सर्वर को फिर से कंपाइल कर रहे हैं, ताकि जब हम इसके सोर्स कोड में बदलाव करें, तो इस पर कोई असर न पड़े:
mkdir -p bin && go build -o ./bin/godoctor ./cmd/server
- लोकल टूल के लिए Gemini CLI को कॉन्फ़िगर करें: अपने प्रोजेक्ट के रूट में
.gemini/settings.jsonफ़ाइल बनाएं. इसके बाद,mcpServersसेक्शन जोड़ें, ताकि Gemini CLI को यह पता चल सके कि आपके कंपाइल किए गए सर्वर को कैसे चलाया जाए.
mkdir -p .gemini && touch .gemini/settings.json
- अब नई फ़ाइल में यह कॉन्टेंट जोड़ें. इसके लिए, cloudshell editor या अपने पसंदीदा IDE का इस्तेमाल करें.
{
"mcpServers": {
"godoctor": {
"command": "./bin/godoctor"
}
}
}
geminiकमांड की मदद से Gemini CLI लॉन्च करना/mcpकमांड टाइप करने पर, आपको यह दिखना चाहिए कि टूल लोड हो गया है./mcp descका इस्तेमाल करके, टूल की पूरी जानकारी भी दिखाई जा सकती है:

- इंटीग्रेशन की जांच करने के लिए, Gemini CLI से अपने टूल का इस्तेमाल करने के लिए कहें. इसके लिए, "मुझे net/http पैकेज का दस्तावेज़ दिखाओ" जैसा प्रॉम्प्ट इस्तेमाल करें
आपको कुछ ऐसा दिखेगा:

अगर टूल सही तरीके से काम कर रहा है, तो आपको टूल कॉल के ज़रिए वापस लाया गया दस्तावेज़ दिखेगा:

बधाई हो, आपने एमसीपी टूल बना लिया है! हालांकि, यह आखिरी विकल्प नहीं है. हम इस सर्वर को और भी ज़्यादा उपयोगी बना सकते हैं.
7. एआई की मदद से कोड की समीक्षा करने वाले टूल को जोड़ना
आइए, एआई की मदद से काम करने वाली एक और बेहतर सुविधा जोड़ते हैं: कोड की समीक्षा करने वाला टूल, जो Gemini API का इस्तेमाल करता है.
अब /chat resume godoctor-workshop. कमांड का इस्तेमाल करके, पिछले चैट सेशन को वापस लाया जा सकता है. इससे सेशन का कॉन्टेक्स्ट उस पॉइंट तक लोड हो जाएगा जहां हमने read_docs को डेवलप करना खत्म किया था. इसलिए, मॉडल के पास नया टूल बनाने के लिए ज़रूरी जानकारी होगी.
इस टूल को Vertex AI का ऐक्सेस चाहिए होगा. इसलिए, हमें पहले एपीआई चालू करना होगा. Gemini CLI से बाहर निकले बिना शेल कमांड चलाने के लिए, खाली प्रॉम्प्ट में विस्मयादिबोधक चिह्न (!) टाइप करें. इससे Gemini CLI, शेल मोड में बदल जाएगा.
Vertex AI API चालू करने के लिए, शेल मोड में यह कमांड चलाएं:
gcloud services enable aiplatform.googleapis.com
कमांड पूरी होने के बाद, एस्केप बटन (Esc) दबाकर वापस प्रॉम्प्ट मोड पर स्विच किया जा सकता है.
लक्ष्य: मौजूदा प्रोजेक्ट में code_review नाम का एक नया टूल जोड़ना है. यह टूल, Go कोड का विश्लेषण करने और सुझाव देने के लिए Gemini API का इस्तेमाल करेगा.
प्रॉम्प्ट का उदाहरण:
Add a new tool to my project called code_review. This tool should use the Gemini API on Vertex AI (with model id gemini-2.5-pro) to analyze Go code and provide a list of improvements 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". The tool output should be text in Markdown format. TODO: - add the genai SDK dependency with `go get import google.golang.org/genai` - create the tool code in ./internal/tools/code/review.go - create a code review prompt to be used by the tool - use go-genai with Vertex AI authentication to call gemini-2.5-pro - register the tool with the server - add a flag to the server to set the Google Cloud Project ID: --project - add a flag to the server to set the Google Cloud Location: --location - add support to the review tool in the client CLI NOT TO DO: - DO NOT use the package github.com/google/generative-ai-go/genai as it is DEPRECATED - DO NOT use the package cloud.google.com/go/vertexai/genai as it has been superseded by google.golang.org/genai Acceptance Criteria: - `./bin/client --tools-list` show all tools including `code_review` - `./bin/client --tool-call code_review internal/tools/code/review.go` returns the code review for the "review.go" file
काम की सलाह
- मॉडल के काम करना शुरू करने के बाद, आपको
read_docsपैकेज के दस्तावेज़ ब्राउज़ करने के लिए,read_docsटूल को कॉल करने का अनुरोध अपने-आप दिख सकता है.genaiअगर ऐसा नहीं होता है, तो एस्केप कुंजी दबाकर प्रोसेस को कभी भी रोका जा सकता है. साथ ही, इसे यह याद दिलाया जा सकता है कि अब इसके पासread_docsटूल उपलब्ध है. - अगर आपको लगता है कि यह गलत GenAI SDK का इस्तेमाल कर रहा है, तो इसे सही SDK का इस्तेमाल करने के लिए कहें. भले ही, प्रॉम्प्ट में "अनुमति नहीं है" वाली सूची साफ़ तौर पर दी गई हो.
Code Reviewer की जांच करना
/chat save godoctor-workshopका इस्तेमाल करके चैट सेशन सेव करें. इसके बाद, Ctrl+D को दो बार दबाकर CLI से बाहर निकलें.- टूल की नई परिभाषा के साथ सर्वर को फिर से कंपाइल करें:.
go build -o ./bin/godoctor ./cmd/server
- अपने आईडीई का इस्तेमाल करके,
.gemini/settings.jsonफ़ाइल को अपडेट करें, ताकि Vertex AI के लिए एनवायरमेंट कॉन्फ़िगरेशन शामिल किया जा सके:
{
"mcpServers": {
"godoctor": {
"command": "./bin/godoctor",
"env": {
"GOOGLE_CLOUD_USE_VERTEXAI": "true",
"GOOGLE_CLOUD_PROJECT": "<your-project-id>",
"GOOGLE_CLOUD_LOCATION": "<your-preferred-region>"
}
}
}
}
- Gemini CLI को फिर से लॉन्च करें.
/chat resume godoctor-workshopके साथ चैट सेशन को वापस लाना - पुष्टि करें कि टूल चालू है. इसके लिए,
/mcpकमांड टाइप करें. आपको कुछ ऐसा दिखेगा:

- अब टूल की किसी सोर्स फ़ाइल की समीक्षा करके,
code_reviewटूल की जांच करते हैं:
Use the code_review tool to review cmd/server/main.go
You should see something like this:

कोड की समीक्षा करने वाले टूल के काम करने पर, अब मॉडल को कुछ सुधार लागू करने का सुझाव दिया जा सकता है. इससे, "खुद को बेहतर बनाने" की पूरी प्रोसेस पूरी हो जाती है!
अब आपने पुष्टि कर दी है कि code-review टूल काम करता है. अगले सेक्शन में, आपको इसे क्लाउड पर डिप्लॉय करने का तरीका बताया जाएगा. /chat save godoctor-workshop की मदद से, मौजूदा सेशन सेव करें और CLI से बाहर निकलें.
8. अपने सर्वर को क्लाउड के लिए तैयार करना
हमने अब तक जो एमसीपी सर्वर बनाया है वह सिर्फ़ लोकल मशीन में काम करता है. अगर आपको अपने इस्तेमाल के लिए टूल बनाने हैं, तो यह ठीक है. हालांकि, अक्सर एंटरप्राइज़ एनवायरमेंट में हमें सैकड़ों या यहां तक कि हज़ारों डेवलपर के लिए, टूल डिप्लॉय करने होते हैं.
अपने एमसीपी सर्वर को स्केल करने के लिए, हमें इसे ऐसे सर्वर से बदलना होगा जो सिर्फ़ स्टैंडर्ड I/O से कम्यूनिकेट करता है. हमें इसे ऐसे सर्वर में बदलना होगा जो एचटीटीपी से कम्यूनिकेट कर सकता है. साथ ही, हमें इसे ऐसी जगह पर डिप्लॉय करना होगा जहां अलग-अलग डेवलपर इसे ऐक्सेस कर सकें. इसके लिए, हम एमसीपी स्पेसिफ़िकेशन में तय किए गए ट्रांसपोर्ट मोड का इस्तेमाल करेंगे. इसे स्ट्रीम किए जा सकने वाले एचटीटीपी के तौर पर तय किया गया है. साथ ही, हम Cloud Run को डिप्लॉयमेंट टारगेट के तौर पर इस्तेमाल करेंगे.
लक्ष्य: godoctor सर्वर को फिर से तैयार करना, ताकि वह स्ट्रीम किए जा सकने वाले एचटीटीपी ट्रांसपोर्ट का इस्तेमाल कर सके.
प्रॉम्प्ट का उदाहरण:
The godoctor server is currently using the stdio transport. I want to prepare it to be deployed to Cloud Run, so we need to add support to use the Streamable HTTP transport. TODO: - Update server to enable Streamable HTTP via the -http flag. - An optional -listen flag can be specified to set the port to listen - If no -http flag is specified, the server defaults to stdio transport and -listen is ignored - Update client to use Streamable HTTP via the -addr flag - If no flag is specified, the client defaults to command transport - Create a shell script test_server.sh to support testing NOT TO DO: - DO NOT use the HTTP+SSE protocol as it has been deprecated by the MCP specification Acceptance Criteria - Create a shell script that: - Runs the server in the background; - Runs the client connecting over HTTP and call list tools - Kills the background process - The shell script should run without failures
काम की सलाह
- ऐसा हो सकता है कि मॉडल, एचटीटीपी+एसएसई का इस्तेमाल करने की कोशिश करे. हालांकि, अब इसका इस्तेमाल नहीं किया जा सकता. अगर आपको लगता है कि यह इस पाथ से गुज़र रहा है, तो इसे वापस स्ट्रीम किए जा सकने वाले एचटीटीपी पर ले जाएं.
- Gemini CLI के मौजूदा वर्शन (0.26.0) में, बैकग्राउंड में प्रोसेस चलाने की सुविधा नहीं है. इसलिए, हम Gemini से स्क्रिप्ट का इस्तेमाल करके, टेस्ट प्रोसेस को अपने-आप पूरा करने के लिए कह रहे हैं. ऐसा इसलिए, क्योंकि
run_shell_commandसे लॉन्च की गई कोई भी प्रोसेस, टूल कॉल के वापस आने के बाद बंद हो जाती है. इस सुविधा को जल्द ही जोड़ा जाएगा. इससे टेस्टिंग की प्रोसेस आसान हो जाएगी.
ज़रूरी नहीं: एचटीटीपी का इस्तेमाल करके, एमसीपी सर्वर की जांच करना
अगर आपको एचटीटीपी के ज़रिए सर्वर का इस्तेमाल करने के लिए, Gemini CLI को कॉन्फ़िगर करना है, तो:
- अपने सेशन को सेव करें और सीएलआई से बाहर निकलें
- अपनी
.gemini/settings.jsonफ़ाइल में बदलाव करें और कॉन्फ़िगरेशन को बदलकर, उसे लोकल सर्वर पर पॉइंट करें.
"mcpServers": {
"godoctor": {
"httpUrl": "http://localhost:8080"
}
}
- दूसरे टर्मिनल में, एचटीटीपी की सुविधा वाले सर्वर को स्थानीय तौर पर चलाएं:
go build -o ./bin/godoctor ./cmd/server && ./bin/godoctor -listen=:8080
- Gemini CLI को रीस्टार्ट करें और कनेक्शन की जांच करने के लिए, इसे कोई प्रॉम्प्ट दें. उदाहरण के लिए, "fmt.Println के लिए दस्तावेज़ पाने के लिए, godoctor टूल का इस्तेमाल करो."
- जांच पूरी होने के बाद, Ctrl+C दबाकर सर्वर को बंद करें.
9. Docker की मदद से ऐप्लिकेशन को कंटेनर में बदलना
अब हमारा सर्वर सही ट्रांसपोर्ट प्रोटोकॉल का इस्तेमाल कर रहा है. इसलिए, हम इसे डिप्लॉय करने के लिए कंटेनर में रख सकते हैं.
लक्ष्य: godoctor सर्वर को पोर्टेबल और प्रोडक्शन के लिए तैयार कंटेनर इमेज में पैकेज करने के लिए, Dockerfile बनाएं.
प्रॉम्प्ट का उदाहरण:
Please create a multi-stage Dockerfile that compiles the Go binary and copies it into a minimal golang image like golang:1.25.6-alpine. The image should support the following environment variables:
- GOOGLE_CLOUD_USE_VERTEXAI
- GOOGLE_CLOUD_PROJECT
- GOOGLE_CLOUD_LOCATION
Acceptance Criteria:
- The image builds successfully
- Create a script test_docker.sh to launch the docker image in background and test the connectivity with the client:
- Call list_tools on the client pointing to the server running on Docker
- Call read_docs for fmt.Println
- Stop the server
- The script should run without failures
ज़रूरी नहीं: Docker इमेज की मैन्युअल तरीके से जांच करना
Dockerfile बनाने के बाद, इमेज बनाएं और उसे चलाकर देखें. इससे यह पक्का किया जा सकेगा कि वह सही तरीके से काम कर रही है या नहीं.
- कंटेनर बनाएं:
docker build -t godoctor:latest .
- कंटेनर को स्थानीय तौर पर चलाएं:
docker run -p 8080:8080 -e PORT=8080 godoctor:latest
- चल रहे कंटेनर की जांच करें: किसी दूसरे टर्मिनल में, Gemini CLI शुरू करें और उससे दस्तावेज़ फ़ेच करने के लिए कहें.
- जांच पूरी होने के बाद, Ctrl+C दबाकर सर्वर को बंद करें.
10. Cloud Run पर डिप्लॉय करना
अब हमें अपने कंटेनर को क्लाउड पर डिप्लॉय करना है.
लक्ष्य: कंटेनर में मौजूद godoctor सर्वर को Google Cloud Run पर डिप्लॉय करना.
प्रॉम्प्ट का उदाहरण:
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 following environment variables: - GOOGLE_CLOUD_USE_VERTEXAI: true, - GOOGLE_CLOUD_PROJECT: <your-project-id> - GOOGLE_CLOUD_LOCATION: <your-preferred-region> TODO: - Run `docker build -t gcr.io/daniela-genai-sandbox/godoctor .` - Run `gcloud run deploy godoctor --image` with the image created above Acceptance Criteria: - Call list-tools with the client pointing to the CloudRun endpoint
डिप्लॉयमेंट पूरा होने के बाद, हम Gemini CLI को कॉन्फ़िगर करेंगे, ताकि वह अभी डिप्लॉय किए गए टूल का इस्तेमाल कर सके.
एमसीपी टूल के कॉन्फ़िगरेशन को बदलकर, डिप्लॉय की गई सेवा पर ले जाने के लिए, अपनी .gemini/settings.json फ़ाइल अपडेट करें. इसके अलावा, Gemini CLI से भी ऐसा करने के लिए कहा जा सकता है:
now update the .gemini/settings.json file to use this URL for the godoctor server
आखिरी mcpServers सेक्शन ऐसा दिखना चाहिए. प्लेसहोल्डर को अपने Cloud Run ऐप्लिकेशन के यूआरएल से बदलना न भूलें:
"mcpServers": {
"godoctor": {
"httpUrl": "https://<your-cloud-run-id>.us-central1.run.app"
}
}
Cloud Run डिप्लॉयमेंट की जांच करना
अब आप शुरू से आखिर तक पूरी जांच करने के लिए तैयार हैं.
Gemini CLI को आखिरी बार फिर से शुरू करें. अगर आपको अपने कॉन्टेक्स्ट को सेव रखना है, तो /chat save और /chat resume का इस्तेमाल करें. अब सीएलआई, रिमोट एमसीपी सर्वर को कॉल कर पाएगा. किसी भी पैकेज के लिए दस्तावेज़ के बारे में पूछकर देखें.
कोड की समीक्षा करने वाले टूल को भी आज़माया जा सकता है:
Use the godoctor tool to review the cmd/godoctor/main.go file
क्लीन अप करना
जांच पूरी होने के बाद, एनवायरमेंट को साफ़ करना न भूलें. Gemini को प्रोजेक्ट मिटाने या सिर्फ़ CloudRun डिप्लॉयमेंट हटाने के लिए कहा जा सकता है. प्रॉम्प्ट का उदाहरण:
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. बधाई हो!
आपने एआई असिस्टेंट को, एआई की मदद से काम करने वाले एक बेहतर टूल को बनाने, कंटेनर में रखने, और डिप्लॉय करने के लिए निर्देश दिए हैं. इससे भी ज़्यादा ज़रूरी बात यह है कि आपने मॉडर्न सॉफ़्टवेयर डेवलपमेंट की एक ज़रूरी स्किल की प्रैक्टिस की है: ज़रूरतों को असरदार प्रॉम्प्ट में बदलना. आपने कस्टम एमसीपी टूल की मदद से, Gemini सीएलआई को बेहतर बनाया है. इससे यह Go डेवलपमेंट के लिए, ज़्यादा बेहतर और खास असिस्टेंट बन गया है.