course
इस ट्यूटोरियल में, मैं आपको दिखाऊंगा कि Claude Code को एक Claude कनेक्टर (Model Context Protocol पर आधारित) के जरिए GitHub से कैसे जोड़ा जाए और इसका उपयोग करके किसी ओपन-सोर्स रिपोजिटरी की एंड-टू-एंड ट्रायाज कैसे की जाए।
यह वर्कफ्लो कुछ भी क्लोन नहीं करता, किसी वेक्टर स्टोर की जरूरत नहीं है, और टार्गेट रिपो में एक भी रो को नहीं छूता। इसके बजाय, Claude Code कनेक्टर के जरिए इश्यू पढ़ता है और आपके लोकल फाइलसिस्टम पर आर्टिफैक्ट्स लिखता है, जिन्हें आप पोस्ट करने से पहले रिव्यू करते हैं।
इस ट्यूटोरियल के अंत तक, आपके पास होगा:
- रीड-ओनली टोकन के साथ एक काम करता हुआ Claude Code और GitHub MCP सेटअप,
- कुछ रीउस करने योग्य प्रॉम्प्ट, जिन्हें आप किसी भी पब्लिक रिपो पर चला सकते हैं,
- एक संपूर्ण ट्रायाज आर्टिफैक्ट
langchain-ai/langchainके लिए, जिससे आप तुलना कर सकें।
Claude Code GitHub कनेक्टर (MCP) क्या है?
Claude Code Anthropic का टर्मिनल-आधारित कोडिंग एजेंट है।
आउट-ऑफ-द-बॉक्स, इसमें पहले से आपका फाइलसिस्टम, शेल, और git शामिल है। Claude Code कनेक्टर्स इसे बाहरी संदर्भ तक विस्तार देते हैं—जैसे GitHub इश्यू, Linear टिकट, Slack संदेश, Postgres क्वेरीज़ आदि—जिन तक केवल टर्मिनल नहीं पहुंच सकता।
कनेक्टर प्रोटोकॉल को MCP (Model Context Protocol) कहा जाता है, जो LLM एजेंट्स को टूल्स और डेटा एक्सपोज़ करने का एक ओपन स्टैंडर्ड है।
Anthropic रेडी-टू-यूज़ कनेक्टर्स की एक डायरेक्टरी मेंटेन करता है, और आप अपने खुद के भी लिख सकते हैं या थर्ड-पार्टी MCP सर्वरों से जुड़ सकते हैं।
इस ट्यूटोरियल के लिए, हम आधिकारिक GitHub MCP सर्वर का उपयोग करेंगे, जो Docker के जरिए लोकली चलता है। सेटअप के पीछे कुछ मुख्य विचार:
- किसी भी क्लाउड मिडलमैन के बिना एक लोकल Docker कंटेनर के रूप में चलता है, इसलिए क्रेडेंशियल्स आपकी मशीन पर रहते हैं।
- स्टैंडर्ड GitHub Personal Access Token (PAT) से ऑथेंटिकेट होता है, इसलिए किसी OAuth ऐप रजिस्ट्रेशन की जरूरत नहीं है।
- यह स्कोप्ड परमिशन सपोर्ट करता है, जैसे अनस्कोप्ड PAT, जो पब्लिक रिपो पर रीड-ओनली एक्सेस देता है, इसलिए GitHub API स्तर पर राइट्स असंभव हैं।
- यह
claude mcp addकमांड के जरिए Claude Code को एक्सपोज़ होता है, फिर टूल्स हर सत्र में उपलब्ध रहते हैं।
ओपन-सोर्स ट्रायाज रीड-हैवी, जजमेंट-हैवी होती है, और गलत होने की कीमत कम होती है।
50 इश्यू पढ़ना और उन्हें क्लस्टर करना इंसान के लिए थकाऊ है, लेकिन ऐसे मॉडल के लिए उपयुक्त है जो सब कुछ एक साथ संदर्भ में रख सकता है।
साथ ही, हम आउटपुट पहले लोकल फाइलों में लिखते हैं; गलत क्लस्टर या अनाड़ी ड्राफ्ट की कोई कीमत नहीं है, और आप रिव्यू में पकड़ सकते हैं।
Claude Code GitHub कनेक्टर ट्यूटोरियल: langchain-ai/langchain के लिए ट्रायाज बनाएं
इस सेक्शन में, हम Claude Code में GitHub कनेक्टर सेट करेंगे और langchain-ai/langchain पर चार ट्रायाज प्रॉम्प्ट चलाएंगे। यह एक बड़ा ML रिपो है, जिसका इश्यू ट्रैकर वास्तव में अस्त-व्यस्त है। ऊंचे स्तर पर, हम यह बनाएंगे:
- Docker में चल रहे आधिकारिक MCP सर्वर के जरिए Claude Code को GitHub से कनेक्ट करें,
- जीरो-स्कोप PAT का उपयोग करें ताकि कनेक्टर निर्माण से ही रीड-ओनली रहे,
- ऐसे ट्रायाज प्रॉम्प्ट चलाएं जो परिणाम लोकल फाइलों में सेव करें,
- आउटपुट रिव्यू करें, जिनमें कुछ केस ऐसे भी होंगे जहां Claude ने इश्यू को डुप्लिकेट के रूप में क्लस्टर करने से मना किया।
चलिए, इसे चरण-दर-चरण बनाते हैं।
चरण 1: Claude Code और Docker के लिए पूर्वापेक्षाएँ इंस्टॉल करें
कनेक्टर सेट करने से पहले, आपको तीन चीज़ों की जरूरत होगी:
- Claude Code: आप इसे Anthropic के आधिकारिक इंस्टॉल गाइड से इंस्टॉल कर सकते हैं,
- Docker Desktop: आधिकारिक GitHub MCP सर्वर कंटेनर में चलता है, इसलिए Docker इंस्टॉल और रनिंग होना चाहिए,
- एक GitHub खाता: अगले चरण में PAT जनरेट करने के लिए जरूरी।
जब सभी पूर्वापेक्षाएँ पूरी हो जाएं, तो सत्यापित करें कि Docker चल रहा है:
docker info | head -5
यदि Docker इंस्टॉल नहीं है या डेमन अप नहीं है, तो आपको "Cannot connect to the Docker daemon" त्रुटि दिखाई देगी। macOS पर, Docker Desktop इस तरह लॉन्च करें:
open -a Docker
Docker Desktop को पूरी तरह तैयार होने में 15-60 सेकंड लगते हैं, और इस दौरान docker info त्रुटि देता रहेगा। मैन्युअल जांच के बजाय, एक छोटा वेट वन-लाइनर उपयोग करें जो डेमन अप होने तक पोल करता रहे:
जब तक
docker info >/dev/null 2>&1; do sleep 2; echo "waiting..."; done && echo "Docker ready"
जैसे ही यह Docker ready प्रिंट करे, आप आगे बढ़ सकते हैं।
चरण 2: एक रीड-ओनली GitHub टोकन बनाएं
Docker सेटअप हो जाने के बाद, github.com/settings/tokens पर जाएं और एक नया क्लासिक टोकन जनरेट करें।
नोट: हर स्कोप को अनचेक छोड़ दें। एक अनस्कोप्ड टोकन GitHub API के जरिए पब्लिक रिपोज़िटरी पढ़ सकता है, जो हमारे एजेंट को चाहिए। बिना किसी स्कोप के, टोकन GitHub पर कुछ भी लिख, बदल या डिलीट नहीं कर सकता—चाहे हम Claude से कुछ भी कहें। यह GitHub की ओर से लागू की गई हार्ड गारंटी है, एजेंट के व्यवहार पर हमारा किया वादा नहीं।
टोकन जनरेट होने के तुरंत बाद उसे कॉपी कर सुरक्षित रखें, फिर अपने शेल में इसे एक्सपोर्ट करें:
export GITHUB_PERSONAL_ACCESS_TOKEN="ghp_your_token_here"
यदि आप पहले से ही Claude Code सत्र के अंदर हैं, तो आप ! प्रीफ़िक्स का उपयोग करके एक्सपोर्ट कमांड सीधे अपने शेल में चलाने के लिए प्रेरित हो सकते हैं (उदा., ! export GITHUB_PERSONAL_ACCESS_TOKEN="...").
हालांकि, क्योंकि ! एक अस्थायी सबशेल बनाता है, कमांड खत्म होते ही वैरिएबल गायब हो जाएगा, और Claude उसे नहीं देख पाएगा।
टोकन को सुरक्षित रूप से सेट करने के लिए, बिना उसे मॉडल प्रॉम्प्ट में पेस्ट किए, आपके पास दो विकल्प हैं:
/exitटाइप करें, Claude से बाहर निकलें, अपने सामान्य टर्मिनल में एक्सपोर्ट कमांड चलाएं, और claude को दोबारा शुरू करें।- या, अपने वर्किंग डायरेक्टरी में एक लोकल
.envफाइल में टोकन सेव करें, जिसे Claude Code स्टार्टअप पर अपने-आप पढ़ लेता है।
दोनों पूर्वापेक्षाएँ बिना टोकन को इको किए इस तरह वेरिफाई करें:
docker info | head -3
echo "Token set: ${GITHUB_PERSONAL_ACCESS_TOKEN:+yes}"
दूसरा कमांड Token set: yes प्रिंट करेगा यदि वैरिएबल मौजूद है, और Token set: (कोलन के बाद कुछ नहीं) यदि यह खाली है।
यह सीधे टोकन को इको करने से ज्यादा सुरक्षित है क्योंकि इसके plaintext में शेल हिस्ट्री में जाने की कोई संभावना नहीं रहती।
चरण 3: GitHub कनेक्टर को Claude Code में रजिस्टर करें
आधिकारिक GitHub MCP सर्वर एक Docker इमेज के रूप में आता है।
हम इसे claude mcp add का उपयोग करके Claude Code में रजिस्टर करते हैं:
claude mcp add github \
-e GITHUB_PERSONAL_ACCESS_TOKEN=$GITHUB_PERSONAL_ACCESS_TOKEN \
-- docker run -i --rm \
-e GITHUB_PERSONAL_ACCESS_TOKEN \
ghcr.io/github/github-mcp-server
यहाँ दो -e फ्लैग टाइपो नहीं हैं::
- पहला
-e(--) से पहले, उस MCP प्रक्रिया के लिए एनवायरनमेंट वैरिएबल सेट करता है जिसे Claude Code लॉन्च करता है, - दूसरा
-e(docker runआर्ग्यूमेंट्स के अंदर) Docker को बताता है कि वह वैरिएबल कंटेनर में फॉरवर्ड करे।
यदि आप इनमें से कोई एक छोड़ देते हैं और कंटेनर खाली टोकन के साथ शुरू होता है, तो यह GitHub API के खिलाफ ऑथेंटिकेट करने में विफल रहेगा।
जांचने के लिए कि कनेक्टर सफलतापूर्वक रजिस्टर हुआ या नहीं:
claude mcp list
आपको यह दिखना चाहिए:
github — docker run -i --rm -e GITHUB_PERSONAL_ACCESS_TOKEN ghcr.io/github/github-mcp-server — Connected
यदि आप Failed to connect देखें, तो सबसे आम दो कारण हैं: Docker न चलना, या GITHUB_PERSONAL_ACCESS_TOKEN उस शेल में एक्सपोर्ट न होना जिसमें आपने claude mcp add चलाया।
चरण 4: कनेक्शन का सैनेटि-चेक
अब हमारा GitHub टोकन सेट है। अगला, एक वर्किंग डायरेक्टरी बनाते हैं और Claude Code CLI खोलते हैं:
mkdir demo && cd demo
claude
claude कमांड वर्तमान डायरेक्टरी में एक इंटरैक्टिव सत्र लॉन्च करता है।
ट्रायाज के दौरान Claude जो भी फाइलें लिखेगा, वे यहीं आएंगी।
फिर एक सरल रीड-ओनली प्रश्न पूछें ताकि कन्फर्म हो कि कनेक्टर उपयोग में है:
Using the GitHub MCP connector, fetch the 5 most recently updated open issues in langchain-ai/langchain. Just list titles and numbers.
पहली बार जब Claude Code कोई GitHub टूल उपयोग करेगा, तो यह अप्रूवल मांगेगा।
list_issues, get_issue, search_issues जैसे रीड-ओनली टूल्स को अप्रूव करें।
यदि Claude MCP टूल्स का उपयोग करने के बजाय पब्लिक GitHub API पर curl पर वापस चला जाता है, तो कनेक्टर लोड नहीं है। तब सत्र से बाहर निकलें और उसे दोबारा शुरू करें।
सफल रन इस तरह कुछ रिटर्न करेगा:

जैसे ही आप MCP के जरिए वास्तविक इश्यू नंबर लौटते देखें, हम असली ट्रायाज चलाने के लिए तैयार हैं।
चरण 5: एक बैकलॉग सारांश जनरेट करें
यह वॉर्म-अप कार्य पूरी तरह रीड-ओनली है। अब, कुछ और करने से पहले हम इश्यू ट्रैकर में क्या है, उसका नक्शा चाहते हैं।
Prompt:
Using the GitHub MCP connector, pull the 50 most recently updated open issues from langchain-ai/langchain.
Read their titles, bodies, and labels. Group them by likely area — bugs, feature requests, documentation, questions, and "needs more info."
For each group, give me a count and 3-5 representative issue numbers with a one-line reason. Save as backlog-summary.md in the current directory.

Claude Code कनेक्टर के जरिए इश्यू फ़ेच करता है, उन्हें पढ़ता है, और उन्हें क्षेत्र के अनुसार ग्रुप कर प्रतिनिधि इश्यू नंबरों के साथ एक मार्कडाउन फाइल लिखता है। यह फाइल अकेले में ही उपयोगी है—एक मेंटेनर इसे 60 सेकंड में स्किम कर सकता है और समझ सकता है कि आने वाला सप्ताह कैसा रहने वाला है।
चरण 6: डुप्लिकेट उम्मीदवारों को फ़्लैग करें
डुप्लिकेट डिटेक्शन वह जगह है जहां एक एजेंट अपनी उपयोगिता साबित करता है।
50 इश्यू को शुरू से अंत तक पढ़ना और उन्हें मूल समस्या के आधार पर क्लस्टर करना इंसान के लिए थकाऊ है, लेकिन मॉडल सभी को संदर्भ में रख सकता है और ऐसे ओवरलैप पकड़ सकता है जो कीवर्ड सर्च से छूट जाते।
Prompt:
From the same 50 issues you already pulled, identify clusters of likely duplicates: issues describing the same underlying problem, even if titles differ. For each cluster, output issue numbers, a one-sentence shared-problem description, and confidence (high/medium/low). Save as duplicate-candidates.md.
मेरे रन में Claude ने वास्तव में यह आउटपुट दिया:

इस आउटपुट का सबसे दिलचस्प भाग क्लस्टर 2 से 4 हैं।
एक भोला कीवर्ड-आधारित डुप्लिकेट डिटेक्टर इन चारों क्लस्टर को डुप्लिकेट समझकर बंद कर देता।
Claude ने स्पष्ट रूप से उन्हें डुप्लिकेट कहने से मना किया।
इसने उन्हें एक ही सबसिस्टम वाले कंपोनेंट क्लस्टर के रूप में फ़्लैग किया, अलग-अलग रूट कॉज़ बताए, और यह भी बताया कि किन्हें वास्तव में बंद करना है (सिर्फ क्लस्टर 1) और किन्हें संयुक्त रूप से ट्रायाज करना है पर खुले रखना है।
यही वह व्यवहार है जो आप किसी सावधान मानव ट्रायजर से चाहेंगे, और यही कारण है कि लोकल-फाइल-फिर-रिव्यू पैटर्न अतिरिक्त कदम के लायक है।
यदि हमने इसे सीधे GitHub API में वायर कर दिया होता और Claude द्वारा फ़्लैग की गई हर चीज़ को ऑटो-क्लोज़ कर दिया होता, तो हम तीन असली बग बंद कर देते।
चरण 7: रिव्यू करें, फिर क्या पोस्ट करना है तय करें
यही लोकल-फाइल्स पैटर्न का पूरा उद्देश्य है।
GitHub पर कुछ जाने से पहले, Claude द्वारा सेव की गई हर .md फाइल देखें और जांचें कि ग्रुपिंग आपकी समझ से मेल खाती है या नहीं।
क्या हाई-कॉन्फिडेंस क्लस्टर वास्तव में डुप्लिकेट लगते हैं? 2-3 ड्राफ्ट प्रतिक्रियाएं पढ़ें, और देखें कि क्या वे आपकी तरह लगती हैं।
यदि आप वास्तव में कमेंट पोस्ट करना या लेबल लगाना चाहते हैं, तो आपके पास दो विकल्प हैं:
- मैन्युअल: आप ड्राफ्ट्स को खुद GitHub में पेस्ट कर सकते हैं। किसी और के रिपो पर वन-शॉट ट्रायाज सत्र के लिए यह ठीक है और अक्सर सही कदम होता है।
- अपने स्वामित्व वाले रिपो पर राइट्स अधिकृत करें: रिपो स्कोप के साथ एक अलग PAT जनरेट करें, इसे एक अलग कनेक्टर एंट्री (जैसे, github-write) के रूप में जोड़ें, और प्रॉम्प्ट्स को फिर से चलाएं, Claude से लेबल लगाने और कमेंट पोस्ट करने को कहें। पहली बार किसी राइट टूल का उपयोग होने पर Claude Code अप्रूवल मांगेगा।
राइट पाथ के लिए मुख्य सेफ्टी मूव रीड और राइट टोकन को अलग रखना है।
निष्कर्ष
इस ट्यूटोरियल में, मैंने दिखाया कि MCP के जरिए Claude Code को GitHub से कैसे जोड़ा जाए और इसका उपयोग करके एक वास्तविक ओपन-सोर्स रिपोजिटरी की एंड-टू-एंड ट्रायाज कैसे की जाए।
कस्टम GitHub बॉट बनाने या वेबहुक्स वायर करने के बजाय, वर्कफ़्लो आधिकारिक GitHub MCP सर्वर के जरिए इश्यू पढ़ता है, चार ट्रायाज आर्टिफैक्ट लोकल फाइलों के रूप में लिखता है, और पोस्ट करने से पहले आपको सब कुछ रिव्यू करने देता है।
बड़ी सीख यह है कि कनेक्टर्स Claude Code को एक कोडिंग एजेंट से ऐसे टूल में बदल देते हैं जो आपके टूल्स को पढ़ सकता है और आपके लिए रिव्यू योग्य काम तैयार कर सकता है।
सही डिफ़ॉल्ट यह है कि जब तक आप उसे देख न लें, काम को लोकल ही रखें; और एक बार पैटर्न पर भरोसा हो जाए, तब चुनिंदा रूप से एजेंट को वहीं कार्रवाई करने दें जहां गलती की कीमत कम है।
यहां से, आप प्रोजेक्ट को कई तरीकों से आगे बढ़ा सकते हैं:
- अपने स्वामित्व वाले रिपो पर राइट-केपेबल कनेक्टर्स जोड़ें ताकि रिव्यू के बाद लेबल और कमेंट अपने-आप लागू हो जाएं,
- Linear या Slack कनेक्टर्स जोड़कर ट्रायाज निर्णयों को अपनी टीम के वर्कफ़्लो से सिंक करें,
- प्रॉम्प्ट्स को शेड्यूल्ड CI जॉब में बदलें जो साप्ताहिक ट्रायाज PR बनाती हो,
- या ऊपर दिए गए प्रॉम्प्ट्स को किसी भी रिपो URL पर काम करने वाले रीउस करने योग्य Claude Code स्लैश कमांड में सामान्यीकृत करें।
FAQs
क्या GitHub MCP सर्वर का उपयोग करने के लिए मुझे GitHub Copilot सब्सक्रिप्शन चाहिए?
नहीं। GitHub एक रिमोट HTTP एन्डपॉइंट (api.githubcopilot.com/mcp) प्रदान करता है, जिसे आप स्टैंडर्ड Personal Access Token से ऑथेंटिकेट कर सकते हैं, लेकिन (जैसा कि हम इस ट्यूटोरियल में करते हैं) सेल्फ-होस्टेड Docker इमेज चलाने से कनेक्शन आपकी मशीन तक लोकल रहता है। किसी भी तरीके के लिए Copilot सब्सक्रिप्शन की जरूरत नहीं है, लेकिन Docker अप्रोच यह सुनिश्चित करती है कि आपका टोकन आपके लोकल वातावरण से बाहर न जाए।
सभी PAT स्कोप्स अनचेक क्यों छोड़ें?
एक अनस्कोप्ड क्लासिक PAT GitHub API के जरिए पब्लिक रिपोज़िटरी पढ़ सकता है, लेकिन कहीं भी कुछ भी लिख, बदल, या डिलीट नहीं कर सकता। इससे पूरा ट्यूटोरियल निर्माण से ही रीड-ओनली हो जाता है; भले ही Claude कमेंट पोस्ट करने की कोशिश करे, GitHub 403 के साथ रिक्वेस्ट को खारिज कर देगा। जिन रिपोज़ का स्वामित्व आपका नहीं है, उनकी ट्रायाज के लिए यह सबसे सुरक्षित सेटअप है।
अगर कनेक्टर "Failed to connect" दिखाए तो क्या करें?
दो सामान्य कारण: Docker नहीं चल रहा है (docker info को सर्वर जानकारी लौटानी चाहिए, त्रुटि नहीं), या GITHUB_PERSONAL_ACCESS_TOKEN उस शेल में एक्सपोर्ट नहीं है जहां आपने claude mcp add चलाया। जो भी लागू हो, उसे ठीक करें, कनेक्टर हटाकर फिर जोड़ें, फिर अपना Claude Code सत्र रीस्टार्ट करें।
क्या इस ट्यूटोरियल के दौरान Claude Code GitHub पर कुछ पोस्ट करता है?
नहीं। सभी प्रॉम्प्ट रीड-ओनली हैं, सभी आउटपुट लोकल फाइलों में लिखे जाते हैं, और अनस्कोप्ड PAT GitHub पर लिख ही नहीं सकता। आप नियंत्रित करते हैं कि कुछ भी कभी पोस्ट हो या नहीं।
क्या मैं इसे शेड्यूल पर चला सकता/सकती हूँ?
हाँ। प्रॉम्प्ट्स को ऐसे शेल स्क्रिप्ट में रैप करें जो Claude Code को नॉन-इंटरैक्टिव रूप से इनवोक करे (claude CLI के --print और -p फ्लैग्स देखें आधिकारिक दस्तावेज़), फिर इसे cron या GitHub Actions के जरिए चलाएं। आर्टिफैक्ट्स को किसी ब्रांच में कमिट करें और रिव्यू के लिए PR खोलें।
क्या मैं इसे Claude वेब ऐप के '+' कनेक्टर मेनू से सेट कर सकता/सकती हूँ?
नहीं, वह फ्लो Claude.ai / डेस्कटॉप / मोबाइल चैट के लिए है। Claude Code CLI का उपयोग करता है। लेकिन एक बार वायर होने पर, दोनों सरफेस एक ही अंडरलाइंग MCP सर्वरों का उपयोग कर सकते हैं।