Gemini CLI और Go की मदद से, एमसीपी सर्वर बनाने का तरीका

1. परिचय

इस कोडलैब में, Gemini CLI की क्षमताओं को बढ़ाने के लिए, मॉडल कॉन्टेक्स्ट प्रोटोकॉल (एमसीपी) सर्वर बनाने और उसे डिप्लॉय करने का तरीका बताया गया है. आपको godoctor बनाना होगा. यह Go पर आधारित एक सर्वर है. यह Go डेवलपमेंट के लिए कस्टम टूल उपलब्ध कराता है. इससे Gemini CLI, कोडिंग में मदद करने वाले सामान्य टूल से बदलकर, Go डेवलपमेंट के लिए खास तौर पर तैयार किए गए टूल में बदल जाता है.

इस कोडलैब में "प्रॉम्प्ट-ड्रिवन" अप्रोच का इस्तेमाल किया गया है. आपको एक टेक लीड के तौर पर काम करना होगा. इसके लिए, आपको अपने एआई असिस्टेंट (Gemini सीएलआई) को प्रॉम्प्ट देने होंगे. आपका मकसद यह जानना है कि प्रोजेक्ट की ज़रूरी शर्तों को असरदार प्रॉम्प्ट में कैसे बदला जाए. साथ ही, एआई को लागू करने से जुड़ी जानकारी को मैनेज करने की अनुमति देना है.

इस प्रोजेक्ट के केंद्र में मॉडल कॉन्टेक्स्ट प्रोटोकॉल (एमसीपी) है. एमसीपी एक ओपन-सोर्स प्रोटोकॉल है. यह तय करता है कि Gemini जैसे लार्ज लैंग्वेज मॉडल (एलएलएम), बाहरी टूल और सेवाओं के साथ कैसे कम्यूनिकेट करते हैं. यह एक पुल की तरह काम करता है. इससे एआई को असल दुनिया की जानकारी ऐक्सेस करने और अपनी बिल्ट-इन जानकारी के अलावा अन्य कार्रवाइयां करने की अनुमति मिलती है. एमसीपी सर्वर बनाकर, एक कस्टम प्लगिन बनाया जाता है. Gemini CLI इस प्लगिन को खोजकर इसका इस्तेमाल कर सकता है. इससे Gemini CLI को नई स्किल सीखने में मदद मिलती है.

आपको क्या सीखने को मिलेगा

  • Gemini CLI को इंस्टॉल और कॉन्फ़िगर करने का तरीका
  • सॉफ़्टवेयर डेवलपमेंट में एआई असिस्टेंट को गाइड करने के लिए, असरदार प्रॉम्प्ट कैसे लिखें
  • एआई असिस्टेंट को कॉन्टेक्स्ट और दिशा-निर्देश देने का तरीका
  • Gemini CLI की क्षमताओं को बढ़ाने के लिए, MCP सर्वर बनाने और उसे कॉन्फ़िगर करने का तरीका
  • Go ऐप्लिकेशन को कंटेनर में बदलने और उसे Google Cloud Run पर डिप्लॉय करने का तरीका

आपको किन चीज़ों की ज़रूरत होगी

इस वर्कशॉप को पूरी तरह से Google Cloud Shell में चलाया जा सकता है. इसमें सभी ज़रूरी डिपेंडेंसी (gcloud CLI, Go, Docker, Gemini CLI) पहले से इंस्टॉल होती हैं.

इसके अलावा, अगर आपको अपने कंप्यूटर पर काम करना है, तो आपको इनकी ज़रूरत होगी:

  • Node.js 20 या उसके बाद के वर्शन
  • बिलिंग की सुविधा वाला Google Cloud प्रोजेक्ट
  • Google Cloud SDK (gcloud सीएलआई) इंस्टॉल और शुरू किया गया हो
  • आपके सिस्टम पर Go 1.24 या इसके बाद का वर्शन इंस्टॉल होना चाहिए
  • आपके सिस्टम पर Docker इंस्टॉल होना चाहिए

मुख्य टेक्नोलॉजी

हम जिन टेक्नोलॉजी का इस्तेमाल करेंगे उनके बारे में ज़्यादा जानकारी यहां दी गई है:

  • Gemini CLI: एआई की मदद से काम करने वाला कमांड-लाइन इंटरफ़ेस, जिसे हम बेहतर बनाने वाले हैं
  • मॉडल कॉन्टेक्स्ट प्रोटोकॉल (एमसीपी): यह ओपन-सोर्स प्रोटोकॉल है. इसकी मदद से Gemini CLI, हमारे कस्टम टूल के साथ कम्यूनिकेट कर सकता है
  • MCP के लिए Go SDK: यह Go लाइब्रेरी है. इसका इस्तेमाल हम अपने MCP सर्वर को लागू करने के लिए करेंगे

कोडलैब को बेहतर बनाने के लिए सलाह

एआई असिस्टेंट की मदद से काम करना, सॉफ़्टवेयर डेवलप करने का नया तरीका है. यहां कुछ सुझाव दिए गए हैं, ताकि आपको आसानी से और सही तरीके से पुष्टि कराने में मदद मिल सके:

  1. ESC बटन दबाने से न डरें. कभी-कभी एआई ऐसी कार्रवाइयां या कोड सुझाएगा जिनसे आप सहमत नहीं होंगे. सुझाए गए जवाब को रद्द करने के लिए, ESC कुंजी का इस्तेमाल करें. इसके बाद, सही जवाब पाने के लिए नया प्रॉम्प्ट दें. आप पायलट हैं.
  2. टूल का इस्तेमाल करने के लिए बढ़ावा दें. अगर एआई को जवाब देने में मुश्किल हो रही है या वह मनगढ़ंत जानकारी दे रहा है, तो उसे उपलब्ध टूल इस्तेमाल करने के लिए कहें. "क्या इसकी पुष्टि करने के लिए, Google Search का इस्तेमाल किया जा सकता है?" या "बदलाव करने से पहले, मौजूदा कोड को समझने के लिए read_file टूल का इस्तेमाल करें" जैसे प्रॉम्प्ट बहुत असरदार हो सकते हैं.
  3. मैन्युअल तरीके से किए गए बदलावों को खारिज करना. एआई से सभी काम करवाने की कोशिश करें. यह वह मुख्य स्किल है जिसकी प्रैक्टिस की जा रही है. हालांकि, अगर आपको मैन्युअल तरीके से बदलाव करना ही है, तो बाद में एआई को इसके बारे में बताएं. "मैंने README.md फ़ाइल को मैन्युअल तरीके से अपडेट कर दिया है. कृपया इसे फिर से पढ़ें, ताकि आपको इसके बारे में पूरी जानकारी मिल सके" से यह पक्का किया जा सकेगा कि एआई आपके प्रोजेक्ट के साथ सिंक रहे.
  4. क्या आपने इसे बंद करके फिर से चालू करने की कोशिश की है? अगर एआई आपकी कमांड के बावजूद, किसी दिए गए पाथ को फ़ॉलो करने की कोशिश कर रहा है, तो ऐसा कॉन्टेक्स्ट के खराब होने की वजह से हो सकता है. इसे कभी-कभी "कॉन्टेक्स्ट रॉट" भी कहा जाता है. ऐसे में, Gemini CLI की "/compress" कमांड का इस्तेमाल करके, कॉन्टेक्स्ट नॉइज़ को कम किया जा सकता है. अगर समस्या ज़्यादा गंभीर है, तो "/clear" कमांड का इस्तेमाल करके, पूरे सेशन के इतिहास को मिटाया जा सकता है.

2. एनवायरमेंट सेटअप करना

अपने हिसाब से एनवायरमेंट सेट अप करना

  1. Google Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास पहले से कोई Gmail या Google Workspace खाता नहीं है, तो आपको एक खाता बनाना होगा.

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

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

Cloud Shell शुरू करें

Google Cloud को अपने लैपटॉप से रिमोटली ऐक्सेस किया जा सकता है. हालांकि, इस कोडलैब में Google Cloud Shell का इस्तेमाल किया जाएगा. यह क्लाउड में चलने वाला कमांड लाइन एनवायरमेंट है.

Google Cloud Console में, सबसे ऊपर दाएं कोने में मौजूद टूलबार पर, Cloud Shell आइकॉन पर क्लिक करें:

Cloud Shell चालू करें

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

Google 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 फ़ाइल को बाद में कॉन्फ़िगर किया जाएगा.

  1. प्रोजेक्ट डायरेक्ट्री बनाएं और उसे शुरू करें:
mkdir godoctor
cd godoctor
go mod init godoctor
  1. Google Cloud ऐप्लिकेशन के डिफ़ॉल्ट क्रेडेंशियल की मदद से पुष्टि करें:

हमें उस खाते में लॉग इन करना होगा जिसके पास उस GCP प्रोजेक्ट का ऐक्सेस है जिसका इस्तेमाल आपको इस कोडलैब के लिए करना है:

gcloud auth application-default login

4. डेवलपमेंट से जुड़े दिशा-निर्देश

यह पक्का करने के लिए कि एआई असिस्टेंट, मुहावरेदार Go कोड जनरेट करे, उसे साफ़ तौर पर दिशा-निर्देश देना ज़रूरी है. यह GEMINI.md फ़ाइल में किया जाता है.

लक्ष्य: GEMINI.md फ़ाइल बनाना. यह फ़ाइल, इस प्रोजेक्ट के दौरान एआई असिस्टेंट के लिए नियमों के सेट के तौर पर काम करेगी.

टास्क: अपनी 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. शुरुआती बिल्ड: godoc सर्वर

आपका पहला लक्ष्य, godoctor सर्वर का शुरुआती वर्शन बनाना है. यह वर्शन, प्रोडक्शन के लिए तैयार किया गया एक ऐसा ऐप्लिकेशन होना चाहिए जिसमें कम से कम सुविधाएं हों. इसमें godoc नाम का एक टूल होना चाहिए, जिसकी मदद से Go के दस्तावेज़ देखे जा सकते हैं.

लक्ष्य: प्रोडक्शन के लिए तैयार MCP सर्वर बनाना. यह सर्वर, go doc कमांड को ऐक्सेस करने की सुविधा देता है. इससे एलएलएम, Go के दस्तावेज़ों से क्वेरी कर सकता है.

शेल पर Gemini CLI कमांड चलाएं:

gemini

पहली बार सीएलआई चलाने पर, आपसे पुष्टि करने का मोड और थीम चुनने के लिए कहा जाएगा. पुष्टि करने के मोड के लिए, "Google से लॉगिन करें" चुनें, ताकि निजी Google खाते से लॉगिन किया जा सके. इससे आपको Gemini CLI के मुफ़्त टियर का फ़ायदा मिल सकेगा. आपको पुष्टि करने का तरीका चुनने का विकल्प दिखेगा. यह विकल्प कुछ ऐसा दिखेगा:

7db0f94960fadac4.png

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

इसके बाद, आपको कोई थीम चुनने के लिए कहा जाएगा:

6289bdfb3b519fa7.png

/auth की तरह, /theme कमांड का इस्तेमाल करके बाद में भी थीम बदली जा सकती है.

पुष्टि करने का तरीका और अपनी पसंदीदा थीम चुनने के बाद, आपको कमांड प्रॉम्प्ट पर ले जाया जाएगा. यहां अपने निर्देश टाइप किए जा सकते हैं. उदाहरण के लिए:

Write a hello world application in Go.

टास्क पूरे करने के लिए, CLI अपने तर्क (Gemini Flash या Gemini Pro जैसे Gemini मॉडल के ज़रिए) और टूल का इस्तेमाल करता है. जब इसे फ़ाइल सिस्टम या बाहरी सेवाओं, जैसे कि एपीआई, डेटाबेस वगैरह के साथ इंटरैक्ट करना होता है, तब यह टूल का इस्तेमाल करता है. बॉक्स से बाहर निकलने वाले टूल या "इंटरनल टूल" के उदाहरण read_file, write_file, web_fetch, और google_search हैं. हम जो एमसीपी सर्वर बना रहे हैं वह सीएलआई के लिए भी उपलब्ध होगा.

पहली बार किसी टूल को चलाने पर, यह आपसे अनुमति मांगेगा. आपके पास इसे एक बार की अनुमति देने, बाकी सेशन के लिए अनुमति देने या इसके अनुरोध को अस्वीकार करने का विकल्प होता है. अगर फ़ाइल में बदलाव करने का विकल्प उपलब्ध है, तो आपको बाहरी एडिटर का इस्तेमाल करके फ़ाइल में बदलाव करने का विकल्प भी दिखेगा. ऐसा तब होता है, जब आपको कुछ बदलाव करने हों. उदाहरण के लिए, 'नमस्ते दुनिया' प्रोग्राम बनाने के लिए, ऊपर दिए गए प्रॉम्प्ट का आउटपुट यह है:

2cfd761183e4b770.png

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

26c3f3f7b8bceb3f.png

इंटरफ़ेस के बारे में जानने के बाद, इस सेक्शन का मुख्य काम शुरू किया जा सकता है. यह काम, CLI से हमारे लिए MCP सर्वर लिखने के लिए कहना है.

Hello World एमसीपी सर्वर बनाना

मॉडल को ज़्यादा भरोसेमंद तरीके से काम करने के लिए, मुश्किल टास्क को छोटे-छोटे चरणों में बांटना सबसे अच्छा तरीका है. मॉडल, मुश्किल टास्क को अपने-आप पूरा कर सकता है. हालांकि, सही सेटअप के बिना, उसे सही तरीके से लागू करने में काफ़ी समय लगेगा.

हमारा मकसद है कि यह मॉडल, एक जैसा जवाब दे. इसलिए, हम इसे सबसे पहले "Hello World" MCP सर्वर बनाने का निर्देश देंगे. इसके बाद, हम इसे वह फ़ंक्शन लागू करने का निर्देश देंगे जो हमें चाहिए (Go के दस्तावेज़ पढ़ना).

यहां प्रॉम्प्ट का एक उदाहरण दिया गया है:

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. समस्या की जानकारी, जिसमें यह भी शामिल है कि हमें क्या बनाना है और क्या-क्या शर्तें पूरी करनी हैं. उदाहरण के लिए, किसी भी एसडीके के बजाय आधिकारिक एसडीके का इस्तेमाल करना
  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.

इस प्रॉम्प्ट का इस्तेमाल करें या अपनी पसंद का कोई प्रॉम्प्ट बनाएं.

मददगार कमांड-लाइन इंटरफ़ेस

जब आपको लगता है कि आपने अच्छी तरह से लागू कर लिया है, तब मॉडल को एमसीपी क्लाइंट का इस्तेमाल करके, godoctor सीएलआई बनाने का निर्देश दिया जा सकता है. इससे, सुविधाओं को टेस्ट करने की प्रोसेस को आसान बनाने में मदद मिलेगी. ऐसा इसलिए, क्योंकि 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 को कॉन्फ़िगर करना होगा, ताकि कोडिंग के अगले टास्क में इसके फ़ायदों का इस्तेमाल किया जा सके.

काम के संसाधन

एमसीपी अब भी एक नई अवधारणा है. साथ ही, एमसीपी के लिए Go SDK टूल एक नई लाइब्रेरी है. इसलिए, इस चरण में Gemini को सही तरीके से लागू करने का तरीका ढूंढने में ज़्यादा समय लग सकता है. मॉडल को सही जवाब देने में मदद करने के लिए, यहां दिए गए रेफ़रंस इस्तेमाल किए जा सकते हैं:

  1. मॉडल को यह प्रॉम्प्ट दिया जा सकता है, ताकि वह एसडीके एपीआई को ज़्यादा आसानी से ढूंढ सके: "go-sdk लाइब्रेरी के लिए एपीआई ढूंढने के लिए, go doc shell कमांड का इस्तेमाल करें"
  2. अगर मॉडल, read_file टूल की मदद से एसडीके के सोर्स कोड की जांच करने की कोशिश करता है, तो वह ऐसा नहीं कर पाएगा. इसकी वजह यह है कि Gemini CLI, अपने मौजूदा स्कोप से बाहर की फ़ाइलों को नहीं पढ़ सकता. run_shell_command टूल के ज़रिए, इसे cat और ls कमांड इस्तेमाल करने का निर्देश दिया जा सकता है.
  3. अगर मॉडल को ऐप्लिकेशन को डीबग करने में समस्या आ रही है, तो उसे ज़्यादा वर्बोस लॉगिंग जोड़ने और गड़बड़ी के मैसेज में कॉन्टेक्स्ट के बारे में ज़्यादा जानकारी देने के लिए कहें.
  4. अगर इनमें से कोई भी तरीका काम नहीं करता है, तो इसे रेफ़रंस के तौर पर लागू करें: https://github.com/danicat/godoctor

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 CLI डेवलपमेंट के अगले चरण के दौरान इसका इस्तेमाल कर सके.

  1. सीएलआई से GEMINI.md को अपडेट करने के लिए कहें, ताकि दस्तावेज़ पढ़ने के लिए godoc को पसंदीदा तरीके के तौर पर इस्तेमाल किया जा सके:
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 को दो बार दबाएं या /quit कमांड टाइप करें.
  2. सर्वर बाइनरी को कंपाइल करें: एक bin डायरेक्ट्री बनाएं और उसमें godoctor सर्वर को कंपाइल करें.
mkdir -p bin
go build -o ./bin/godoctor ./cmd/godoctor # adjust paths as needed
  1. लोकल टूल के लिए Gemini CLI को कॉन्फ़िगर करें: अपने प्रोजेक्ट के रूट में .gemini/settings.json फ़ाइल बनाएं. इसके बाद, mcpServers सेक्शन जोड़ें, ताकि Gemini CLI को यह पता चल सके कि आपके कंपाइल किए गए सर्वर को कैसे चलाया जाए.
mkdir -p .gemini
touch .gemini/settings.json
  1. अब vim या nano जैसे कमांड लाइन एडिटर का इस्तेमाल करके, नई फ़ाइल में यह कॉन्टेंट जोड़ें:
{
  "mcpServers": {
    "godoctor": {
      "command": "./bin/godoctor"
    }
  }
}
  1. अब Gemini CLI लॉन्च करें और चैट सेशन को वापस लाएँ:
/chat resume workshop001
  1. /mcp कमांड टाइप करने पर, आपको यह दिखना चाहिए कि टूल लोड हो गया है. /mcp desc का इस्तेमाल करके, टूल की पूरी जानकारी भी दिखाई जा सकती है:

84e399367085940f.png

  1. Gemini CLI से "net/http के लिए दस्तावेज़ पाओ" जैसे प्रॉम्प्ट का इस्तेमाल करके, अपने टूल को इस्तेमाल करने के लिए कहें. इससे इंटिग्रेशन की जाँच की जा सकेगी

आपको कुछ ऐसा दिखेगा:

ce0d27e7cc66df17.png

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

eca5bcc6dc20df05.png

बधाई हो, आपने एमसीपी टूल बना लिया है! हालांकि, यह आखिरी जवाब नहीं है. हम इसे और भी बेहतर बना सकते हैं.

7. एआई की मदद से कोड की समीक्षा करने वाले टूल को जोड़ना

आइए, एआई की मदद से काम करने वाली एक और बेहतर सुविधा जोड़ते हैं: कोड की समीक्षा करने वाला टूल, जो Gemini 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

काम की सलाह

मॉडल के काम करना शुरू करने के बाद, आपको godoc टूल को कॉल करने का अनुरोध अपने-आप दिख सकता है. ऐसा godoc पैकेज के दस्तावेज़ ब्राउज़ करने के लिए होता है.genai अगर ऐसा नहीं होता है, तो एस्केप कुंजी दबाकर प्रोसेस को कभी भी रोका जा सकता है. साथ ही, इसे यह याद दिलाया जा सकता है कि अब इसके पास godoc टूल उपलब्ध है.

Code Reviewer की जांच करना

  1. /chat save workshop002 का इस्तेमाल करके चैट सेशन सेव करें. इसके बाद, CLI से बाहर निकलने के लिए Ctrl+D को दो बार दबाएं.
  2. code_review टूल को Vertex AI का ऐक्सेस चाहिए. इसलिए, हमें सबसे पहले एपीआई चालू करना होगा:
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. Gemini CLI को फिर से लॉन्च करें. /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 से बाहर निकलें.

8. अपने सर्वर को क्लाउड के लिए तैयार करना

हमने अब तक जो एमसीपी सर्वर बनाया है वह सिर्फ़ लोकल मशीन में काम करता है. अगर आपको अपने इस्तेमाल के लिए टूल बनाने हैं, तो यह ठीक है. हालांकि, अक्सर एंटरप्राइज़ एनवायरमेंट में हमें सैकड़ों या यहां तक कि हज़ारों डेवलपर के लिए, टूल डिप्लॉय करने होते हैं.

अपने एमसीपी सर्वर को स्केल करने के लिए, हमें इसे ऐसे सर्वर में बदलना होगा जो सिर्फ़ स्टैंडर्ड I/O से कम्यूनिकेट करता है. साथ ही, हमें इसे ऐसे सर्वर में बदलना होगा जो एचटीटीपी से कम्यूनिकेट कर सकता है. इसके अलावा, हमें इसे ऐसी जगह पर डिप्लॉय करना होगा जहां अलग-अलग डेवलपर इसे ऐक्सेस कर सकें. इसके लिए, हम एमसीपी स्पेसिफ़िकेशन में तय किए गए ट्रांसपोर्ट मोड का इस्तेमाल करेंगे. इसे स्ट्रीम किए जा सकने वाले एचटीटीपी के तौर पर तय किया गया है. साथ ही, हम Cloud Run को डिप्लॉयमेंट टारगेट के तौर पर इस्तेमाल करेंगे.

लक्ष्य: 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. अगर मॉडल को स्ट्रीम किए जा सकने वाले एचटीटीपी ट्रांसपोर्ट को लागू करने में समस्या आ रही है, तो उसे यह रेफ़रंस दें: https://github.com/modelcontextprotocol/go-sdk/blob/main/design/design.md
  2. ऐसा हो सकता है कि मॉडल, एचटीटीपी+एसएसई का इस्तेमाल करने की कोशिश करे. हालांकि, अब इसका इस्तेमाल नहीं किया जा सकता. अगर आपको लगता है कि यह इस पाथ से गुज़र रहा है, तो इसे वापस स्ट्रीम किए जा सकने वाले एचटीटीपी पर ले जाएं.

एचटीटीपी का इस्तेमाल करके सर्वर की जांच करना

मॉडल से godoctor क्लाइंट को अपडेट करने के लिए कहें, ताकि वह स्ट्रीम किए जा सकने वाले एचटीटीपी का इस्तेमाल कर सके. इससे यह जांच की जा सकेगी कि यह अब भी काम कर रहा है.

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

ज़रूरी नहीं: अगर आपको Gemini CLI को एचटीटीपी के ज़रिए सर्वर का इस्तेमाल करने के लिए कॉन्फ़िगर करना है, तो:

  1. अपने सेशन को सेव करें और CLI से बाहर निकलें
  2. अपनी .gemini/settings.json फ़ाइल में बदलाव करें और कॉन्फ़िगरेशन को बदलकर, उसे लोकल सर्वर पर पॉइंट करें.
"mcpServers": {
  "godoctor": {
    "httpUrl": "http://localhost:8080"
  }
}
  1. रीफ़ैक्टर किए गए सर्वर को स्थानीय तौर पर चलाएं:
go run ./cmd/godoctor/main.go
  1. नए टर्मिनल में (क्योंकि ऊपर दी गई कार्रवाई ब्लॉक हो रही है), Gemini सीएलआई शुरू करें और कनेक्शन की जांच करने के लिए प्रॉम्प्ट दें. उदाहरण के लिए, "fmt.Println के लिए दस्तावेज़ पाने के लिए, godoctor टूल का इस्तेमाल करो."
  2. जांच पूरी होने के बाद, 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.24-alpine.

Docker इमेज की जांच करना

Dockerfile बनाने के बाद, इमेज बनाएं और उसे चलाकर देखें. इससे यह पक्का किया जा सकेगा कि वह सही तरीके से काम कर रही है या नहीं. Gemini को यह काम करने के लिए निर्देश दिए जा सकते हैं:

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. Cloud Run पर डिप्लॉय करना

अब हमें अपने कंटेनर को क्लाउड पर डिप्लॉय करना है.

लक्ष्य: कंटेनर में मौजूद godoctor सर्वर को Google Cloud Run पर डिप्लॉय करना.

प्रॉम्प्ट से जुड़ी सलाह: अपने एआई असिस्टेंट से, कंटेनर को डिप्लॉय करने के लिए 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 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 CLI को बेहतर बना लिया है. इससे यह Go डेवलपमेंट के लिए ज़्यादा बेहतर और खास असिस्टेंट बन गया है.

रेफ़रंस दस्तावेज़