आपने एक MCP (Model Context Protocol) सर्वर सेट किया, लेकिन /mcp खोलने पर वह कुछ इस तरह की स्थिति में अटका दिखता है — परिचित लगता है?

/mcp

  filesystem      ✓ connected      (12 tools)
  github          ✗ failed
  notion          △ needs authentication
  my-server       ⏸ pending approval

MCP की मदद से Claude Code बाहरी टूल और डेटा का उपयोग करता है। कनेक्शन विफल होने पर लॉग में MCP error -32000: Connection closed जैसी एक पंक्ति भी दिख सकती है। कारण स्टेटस, कनेक्शन का तरीका और त्रुटि का विवरण, इन तीनों को साथ देखने पर सीमित होता है। यह लेख लोकल स्टार्टअप, रिमोट संचार और प्रमाणीकरण, फिर कॉन्फ़िगरेशन और स्वीकृति के क्रम में जाँच समझाता है।

मुख्य बातें: (1) /mcp और claude mcp get <name> से स्टेटस और विवरण पढ़ें। (2) failed लोकल और रिमोट, दोनों सर्वर पर आ सकता है। stdio में कमांड और एनवायरनमेंट वेरिएबल देखें; HTTP में URL, नेटवर्क, सर्वर का जवाब और प्रमाणीकरण देखें। (3) कारण स्पष्ट न हो तो claude --debug=mcp से कनेक्शन लॉग लें। बदलाव केवल वास्तविक त्रुटि से जुड़ी सेटिंग में करें और दोबारा कनेक्ट करके परिणाम देखें।

CLAUDE CODE · MCP STATUS

स्टेटस और विवरण से कारण खोजें

— failed का कारण कनेक्शन के तरीके और त्रुटि के विवरण से सीमित करें

$ /mcp
✓ filesystem connected · 12 tools
✗ github failed → Issue: पढ़ें
△ notion needs auth → प्रमाणीकरण पूरा करें
⏸ my-server pending approval → इसे अनुमोदित करें

✗ failed = कनेक्शन विफल, △ needs auth = प्रमाणीकरण ज़रूरी, ⏸ pending approval = स्वीकृति की प्रतीक्षा।
failed का कारण कनेक्शन के तरीके और Issue: के विवरण से सीमित करें।

1. यह एरर आपको क्या बता रहा है

कनेक्शन बंद होने पर लॉग में यह पंक्ति आती है।

MCP error -32000: Connection closed

MCP error -32000: Connection closed बताता है कि MCP कनेक्शन बंद हो गया। MCP का TypeScript SDK -32000 को ConnectionClosed से जोड़ता है और कनेक्शन बंद होने पर यही संदेश देता है (आधार: SDK में कनेक्शन बंद होने की प्रक्रिया)। यह पंक्ति केवल “बंद हो गया” का नतीजा बताती है; बंद होने का कारण उससे पहले के लॉग में होता है। वहीं से पहचानें कि सर्वर का प्रोसेस इनिशियलाइज़ेशन से पहले समाप्त हुआ या कनेक्शन के बाद संचार टूटा।

कॉन्फ़िगरेशन सही होने पर भी कनेक्शन टूट सकता है। Issue #20713 में एक उपयोगकर्ता ने macOS पर Claude Code 2.1.19 में इनिशियलाइज़ेशन के दौरान कनेक्शन बंद होने की रिपोर्ट दी है। “रेस कंडीशन” वाला कारण रिपोर्ट करने वाले का अनुमान है, और यह Issue अप्रैल 2026 में not planned के रूप में बंद कर दिया गया। खुद रिपोर्ट करते समय OS, संस्करण, कनेक्शन का तरीका और गोपनीय जानकारी हटाए हुए लॉग दें।

MCP सर्वर में आम तौर पर दो कनेक्शन तरीके मिलते हैं। (1) stdio (लोकल) — Claude Code आपके कंप्यूटर पर सर्वर की कमांड को सबप्रोसेस के रूप में चलाता है और मानक इनपुट/आउटपुट से संचार करता है। (2) HTTP (रिमोट) — क्लाउड सर्वर से URL के ज़रिए जुड़ता है (पुराना SSE अप्रचलित है)। “कनेक्ट नहीं हो रहा” का अर्थ इस तरीके पर काफी निर्भर करता है।

लोकल (stdio) में आम विफलताएँ हैं: कमांड न मिलना, ज़रूरी वेरिएबल गायब होना, सर्वर का तुरंत बंद हो जाना, या stdout में लॉग मिल जाना। रिमोट (HTTP) में गलत URL, नेटवर्क, 5xx जवाब, टाइमआउट और प्रमाणीकरण कारण बनते हैं। कॉन्फ़िगरेशन फ़ाइल की जगह, सिंटैक्स और दायरे की गलतियाँ दोनों तरीकों में होती हैं।

पहले स्टेटस और त्रुटि का विवरण दर्ज करें और देखें कि कनेक्शन stdio है या HTTP। कई सेटिंग एक साथ बदलने से पता नहीं चलता कि किस बदलाव ने मदद की। अगली तालिका से शुरुआत करके संबंधित कारणों को एक-एक करके जाँचें।

2. पहले /mcp से स्टेटस पढ़ें

सेशन में /mcp चलाएँ (या शेल से claude mcp list / claude mcp get <name>) ताकि हर सर्वर की स्थिति दिखे। मुख्य स्टेटस और उनके अर्थ:

स्टेटसअर्थपहले कहाँ देखें
✓ connectedकनेक्शन सफल। साथ में टूल की संख्या दिखती हैटूल अपेक्षित हों, लेकिन संख्या 0 हो तो उपलब्ध सुविधाएँ, अनुमतियाँ और लॉग देखें
✗ failedलोकल या रिमोट सर्वर से कनेक्शन विफलIssue: का विवरण और कनेक्शन का तरीका। HTTP में संचार, सर्वर का जवाब और तय प्रमाणीकरण हेडर भी देखें
△ needs authenticationसाइन-इन या अतिरिक्त अनुमति चाहिएOAuth के लिए /mcp से प्रमाणीकरण करें। headersHelper में क्रेडेंशियल का स्रोत, और Anthropic के दिए कनेक्टर के लिए claude.ai की कनेक्टर सेटिंग्स देखें
⏸ pending approvalप्रोजेक्ट की .mcp.json का सर्वर स्वीकृति की प्रतीक्षा में। claude mcp list / get में ⏸ Pending approval दिखता हैclaude को इंटरैक्टिव मोड में शुरू करके स्वीकार करें। गलती से अस्वीकार किया हो तो claude mcp reset-project-choices
✗ rejectedकिसी भी सेटिंग फ़ाइल के disabledMcpjsonServers में शामिल .mcp.json सर्वर। केवल claude mcp get <name> में ✘ Rejected (see disabledMcpjsonServers in settings) दिखता है (/mcp या claude mcp list में नहीं)स्वीकृति डायलॉग में अस्वीकार करने पर यह प्रविष्टि .claude/settings.local.json में लिखी जाती है। चुनाव वापस लेना हो तो reset-project-choices; किसी दूसरी सेटिंग फ़ाइल में हो तो वहाँ से प्रविष्टि हटाएँ

failed लोकल स्टार्टअप विफलता और रिमोट संचार विफलता, दोनों में आता है। अंतर पहचानने का सुराग विवरण में है: claude mcp list में ✘ Failed to connect वाली पंक्ति के अंत में, और claude mcp get <name> तथा /mcp की विवरण स्क्रीन में Issue: वाली पंक्ति में, HTTP स्टेटस या त्रुटि कोड और सर्वर का लौटाया त्रुटि संदेश दिखता है। कनेक्शन बनाते समय तय Authorization हेडर 401/403 से अस्वीकार हो, तब भी failed आता है।

रिमोट सर्वर सेशन के बीच में कट जाए, तो Claude Code अपने-आप दोबारा कनेक्ट करने की कोशिश करता है और इस दौरान /mcp में pending दिखता है (इसका अर्थ स्वीकृति की प्रतीक्षा से अलग है)। पाँचों कोशिशें विफल होकर स्टेटस failed हो जाए, तो MCP server "<name>" disconnected · open /mcp to reconnect सूचना आती है (दोबारा प्रमाणीकरण चाहिए हो तो needs authentication दिखता है)। stdio सर्वर अपने-आप दोबारा कनेक्ट नहीं होते, इसलिए उन्हें /mcp से हाथ से जोड़ें। साथ ही /mcp उन सर्वरों पर निशान लगाता है जो टूल क्षमता घोषित करते हैं लेकिन एक भी टूल नहीं देते। केवल resources या prompts देने वाले सर्वर में शून्य टूल होना सामान्य है। विस्तार के लिए आधिकारिक स्टेटस विवरण देखें।

3. कनेक्शन फेल होने के मुख्य कारण और उपाय

कनेक्शन विफलता और कॉन्फ़िगरेशन के अंतर की जाँच के बिंदु ये हैं। अपने कनेक्शन के तरीके पर लागू बिंदुओं से क्रम से देखें।

ROOT CAUSES

कनेक्शन के तरीके के अनुसार जाँच-बिंदु

1) पाथ / PATH
रिलेटिव पाथ लॉन्च डायरेक्टरी के सापेक्ष रिज़ॉल्व होते हैं और खिसक जाते हैं। लोकल स्क्रिप्ट के लिए एब्सोल्यूट पाथ इस्तेमाल करें। एक्ज़ीक्यूटेबल न मिलने पर spawn ... ENOENT आता है।
2) env vars पास नहीं हुए
stdio सर्वर के विशेष वेरिएबल उसी सर्वर के env में दें। settings.json का env भी सत्र और चाइल्ड प्रोसेस पर लागू होता है, इसलिए उसके मान भी असर डालते हैं।
3) स्टार्टअप टाइमआउट
लॉग में स्टार्टअप टाइमआउट दिखे तो MCP_TIMEOUT (मिलीसेकंड) समायोजित करें। Bash में: MCP_TIMEOUT=10000 claude। PowerShell में $env:MCP_TIMEOUT='10000' सेट करके claude शुरू करें।
4) कॉन्फ़िग स्थान / JSON
प्रोजेक्ट की .mcp.json प्रोजेक्ट रूट में रखें (.claude/ के अंदर या settings.json में नहीं)। डिफ़ॉल्ट मान के बिना अपरिभाषित ${VAR} पर चेतावनी आती है और वह जस का तस टेक्स्ट रहता है।
5) stdout को दूषित करना
stdio सर्वर का stdout में लॉग लिखना प्रोटोकॉल को बिगाड़ता है। लॉग stderr में भेजें।
6) रिमोट ऑथ
OAuth साइन-इन चाहिए तो /mcp से प्रमाणीकरण करें। ध्यान दें कि तय प्रमाणीकरण हेडर अस्वीकार होने पर failed दिखता है।

लोकल सर्वर में कमांड, एनवायरनमेंट वेरिएबल और लॉग,
रिमोट में URL, संचार, सर्वर का जवाब और प्रमाणीकरण को वास्तविक त्रुटि के अनुसार अलग-अलग जाँचें।

प्रोजेक्ट की .mcp.json साझा कर सकते हैं, लेकिन गोपनीय मान सीधे कमिट न करें। उदाहरण के लिए ${API_KEY} का संदर्भ दें और हर परिवेश में आवश्यक मान सेट करें। Claude Code के अपने क्रेडेंशियल सहित कुछ संरक्षित वेरिएबल नाम रिमोट URL और हेडर में खाली स्ट्रिंग बन जाते हैं (आधिकारिक विस्तार नियम)। इंटरैक्टिव सत्र प्रोजेक्ट सर्वर के लिए स्वीकृति माँगते हैं, लेकिन claude -p और SDK उस प्रॉम्प्ट के बिना उन्हें लोड करते हैं। फिर भी जिन सर्वरों को लोड नहीं करवाना है, उन्हें disabledMcpjsonServers में डालें (प्रोजेक्ट स्कोप का आधिकारिक दस्तावेज़)। संबंधित: MCP की मूल बातें, A2A।

4. Windows पर npx का स्टार्टअप जाँचें

Windows में spawn npx ENOENT आए तो पहले where.exe npx से एक्ज़ीक्यूटेबल और PATH देखें। फिर आज़माएँ कि Node/npm काम कर रहा है और दिया गया पैकेज अकेले शुरू होता है या नहीं। Node के आधिकारिक दस्तावेज़ के अनुसार, Windows की .cmd फ़ाइल अकेले नहीं चलती; उसे शेल या cmd.exe के ज़रिए चलाना होता है।

यदि लॉन्च का तरीका कारण है: cmd.exe /c आज़माएँ

यदि समस्या .cmd फ़ाइल चलाने के तरीके में है, तो यह रूप आज़मा सकते हैं। पैकेज का नाम सर्वर के आधिकारिक निर्देशों वाले नाम से बदलें:

{
  "command": "cmd.exe",
  "args": ["/c", "npx", "-y", "@scope/your-mcp-server"]
}

WSL में चलाना हो, तो Linux की ओर Node, पैकेज और एनवायरनमेंट वेरिएबल तैयार करें।

5. डायग्नोस्टिक वर्कफ़्लो

जब कारण स्पष्ट न हो, ऊपर से नीचे क्रम से चलें। तरकीब यह है कि Claude Code पर शक करने से पहले पुष्टि करें कि सर्वर अकेले चलता है।

DIAGNOSE

ऊपर से नीचे अलग-अलग करें

1
/mcp और claude mcp list / get से स्टेटस देखें और Issue: तथा कनेक्शन का तरीका भी पढ़ें।
2
claude --debug=mcp से MCP इनिशियलाइज़ेशन और कनेक्शन लॉग लें। stdio सर्वर में stderr का आउटपुट भी पढ़ें।
3
stdio में कॉन्फ़िगरेशन वाली कमांड और वेरिएबल के साथ सर्वर अलग से चलाकर देखें। HTTP में URL, नेटवर्क पथ और जवाब का कोड जाँचें।
4
सर्वर को अकेले MCP Inspector (npx @modelcontextprotocol/inspector) से सत्यापित करें — टूल सूची लेकर और टूल चलाकर आज़माएँ।
5
बदलाव के बाद दोबारा कनेक्ट करें और आवश्यक ऑपरेशन चलाएँ। विफलता बनी रहे तो संस्करण, कनेक्शन का तरीका और गोपनीय जानकारी हटाए हुए लॉग के साथ रिपोर्ट करें।

सर्वर का अलग से शुरू होना, MCP कनेक्शन और आवश्यक ऑपरेशन के सफल होने से अलग है।
स्टार्टअप के बाद भी प्रोटोकॉल संगतता, अनुमतियाँ, टूल सूची और क्लाइंट की गड़बड़ी समस्या बन सकती हैं।

ध्यान दें: Claude Code डिफ़ॉल्ट रूप से टूल खोज के ज़रिए परिभाषाएँ ज़रूरत पर लोड करता है, इसलिए सर्वर बढ़ाने पर भी कॉन्टेक्स्ट पर असर कम रहता है। लेकिन alwaysLoad वाले सर्वर या टूल खोज बंद वाले कॉन्फ़िगरेशन में परिभाषाएँ शुरुआत से लोड होती हैं, इसलिए इस्तेमाल न होने वाले सर्वर /mcp disable <name> से बंद रखना सुरक्षित है। कॉन्टेक्स्ट भरने से Prompt is too long हो सकता है।

6. रोकथाम चेकलिस्ट

MCP कनेक्शन में न अटकने के लिए संचालन की आदतें।

(1) stdio एक्ज़ीक्यूटेबल और स्क्रिप्ट वास्तविक पाथ से लिखें। (2) stdio वेरिएबल और HTTP प्रमाणीकरण हेडर अलग रखें; साझा फ़ाइल में गोपनीय मान न लिखें। (3) Windows पर where.exe npx और Node/npm जाँचें; लॉन्च के तरीके में समस्या हो तभी cmd.exe /c आज़माएँ। (4) .mcp.json प्रोजेक्ट रूट में रखें और JSON सिंटैक्स, वेरिएबल तथा स्वीकृति जाँचें। (5) stdio लॉग stdout के बजाय stderr में भेजें। (6) एक-एक बदलाव करें, दोबारा कनेक्ट करें और आवश्यक ऑपरेशन से परिणाम पक्का करें।

सारांश

Claude Code की MCP कनेक्शन त्रुटियों की जाँच में स्टेटस, कनेक्शन का तरीका और त्रुटि का विवरण साथ देखें। failed सिर्फ लोकल स्टार्टअप विफलता नहीं है: HTTP संचार विफलता और तय प्रमाणीकरण हेडर का अस्वीकार होना भी कारण हो सकते हैं। needs authentication प्रमाणीकरण जाँचने और pending approval प्रोजेक्ट सर्वर की स्वीकृति दोबारा देखने का संकेत है।

क्रम यह रखें: स्टेटस और Issue: पढ़ें → कनेक्शन के तरीके के अनुसार लॉग पढ़ें → अलग से संचालन या संचार जाँचें → दोबारा कनेक्ट करके ऑपरेशन आज़माएँ। डिबग श्रेणी चुनने के लिए claude --debug=mcp दें। लॉग बचाने के लिए --debug-file ./claude-mcp-debug.log जोड़ें। साझा करने से पहले गोपनीय जानकारी हटाएँ। संबंधित: MCP क्या है, MCP सर्वर से कमाई, Claude Code त्रुटियों का संग्रह।

Codex ऐप में इतिहास दिखता है लेकिन केवल संदेश भेजना विफल होता है, तो यह MCP की नहीं, बातचीत की स्थिति की समस्या है। इसे Codex में “thread not found”: समस्या की जाँच और बहाली का एक उदाहरण में समझाया गया है।

FAQ

प्र. /mcp में failed आ रहा है। कहाँ से शुरू करूँ?
उ. कनेक्शन का तरीका और Issue: देखें। stdio में कमांड, पाथ, एनवायरनमेंट वेरिएबल और stderr; HTTP में URL, नेटवर्क, सर्वर का जवाब और प्रमाणीकरण संभावित कारण हैं। कनेक्शन बनाते समय तय Authorization हेडर 401/403 से अस्वीकार हो, तब भी failed आता है और Issue: में HTTP स्टेटस दिखता है।

प्र. यह "needs authentication" कहता है और टूल काम नहीं करते।
उ. उपाय प्रमाणीकरण के तरीके के अनुसार अलग है। OAuth सर्वर के लिए /mcp से प्रमाणीकरण करें। कस्टम headersHelper में यह स्थिति तब आती है जब टूल कॉल 401/403 लौटाए और नए क्रेडेंशियल लेकर दोबारा कोशिश भी विफल हो। यदि helper Authorization हेडर देता है, तो Claude Code OAuth पर नहीं जाता; क्रेडेंशियल के स्रोत और लौटाए गए मान को ठीक करके फिर कनेक्ट करें। Microsoft 365, Gmail और Google Calendar जैसे Anthropic के दिए कनेक्टर Claude Code से लोकल OAuth का समर्थन नहीं करते। इन्हें claude mcp add या .mcp.json से जोड़कर /mcp से साइन-इन करने पर is Anthropic-hosted and doesn't support local OAuth दिखता है; वह प्रविष्टि हटाकर claude.ai की कनेक्टर सेटिंग्स में जोड़ें। आधार: कस्टम प्रमाणीकरण का आधिकारिक विवरण।

प्र. Windows पर मेरा npx सर्वर कनेक्ट नहीं हो रहा।
उ. where.exe npx और Node/npm देखें, फिर उसी पैकेज को उन्हीं आर्ग्युमेंट के साथ चलाकर देखें। यदि कारण .cmd फ़ाइल चलाने का तरीका है, तो cmd.exe /c npx ... से शुरू कर सकते हैं। WSL में चलाना हो, तो Linux की ओर Node और पैकेज तैयार करें।

प्र. connected है, लेकिन टूल 0 हैं।
उ. पहले देखें कि सर्वर टूल देने के लिए बनाया गया है या नहीं। केवल resources या prompts देने वाले सर्वर में शून्य टूल होना सामान्य है। टूल क्षमता घोषित करने के बावजूद टूल 0 हों, तो /mcp उस सर्वर पर निशान लगाता है; तब उपलब्ध सुविधाएँ, अनुमतियाँ, सर्वर सेटिंग और लॉग जाँचकर दोबारा कनेक्ट करें। stdio के डायग्नोस्टिक लॉग प्रोटोकॉल वाले stdout में न मिलाएँ; stderr में भेजें।

प्र. सर्वर कॉन्फ़िगर किया है, लेकिन उपयोग नहीं हो रहा।
उ. देखें कि प्रोजेक्ट की साझा .mcp.json प्रोजेक्ट रूट में है, फिर सिंटैक्स, दायरा और स्वीकृति की स्थिति दोबारा देखें। डिफ़ॉल्ट मान के बिना अपरिभाषित ${VAR} पर चेतावनी आती है और वह जस का तस टेक्स्ट के रूप में लोड होता है, जिससे स्टार्टअप या प्रमाणीकरण विफल होता है। HTTP कॉन्फ़िगरेशन में type भी लिखें। claude mcp get <name> यदि ✘ Rejected लौटाए, तो सर्वर किसी सेटिंग फ़ाइल के disabledMcpjsonServers में है; केवल दोबारा स्वीकृति देने के बजाय वह प्रविष्टि हटाएँ।

कॉन्फ़िगरेशन और कमांड के संदर्भ: env सेटिंग, CLI संदर्भ, MCP कनेक्शन संदर्भ।