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

/mcp

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

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

मुख्य बातें: (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 → /mcp OAuth
my-server pending → इसे अनुमोदित करें

✗ failed = कनेक्शन विफल, △ needs auth = प्रमाणीकरण जाँचें, ⏸ pending = स्वीकृति की प्रतीक्षा।
अकेले failed से कारण तय नहीं होता। कनेक्शन का तरीका और त्रुटि का विवरण पढ़ें।

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

उदाहरण के लिए, लॉग में यह त्रुटि आ सकती है। सिर्फ इस संदेश से सर्वर का स्टार्टअप विफल मान न लें; उससे पहले के लॉग भी देखें

MCP error -32000: Connection closed

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

मिलते-जुलते त्रुटि संदेशों का कारण एक जैसा न मानें। संदेश क्लाइंट, संस्करण और सर्वर के अनुसार बदलते हैं। किसी दूसरे टूल की सलाह अपनाते समय देखें कि वह आपके कनेक्शन के तरीके और लॉग पर लागू होती है या नहीं।

कॉन्फ़िगरेशन के बाहर की गड़बड़ी भी संभव है। उदाहरण के लिए, Issue #20713 में एक उपयोगकर्ता ने macOS पर Claude Code 2.1.19 में इनिशियलाइज़ेशन के दौरान कनेक्शन टूटने की रिपोर्ट दी है। उपयोगकर्ता के अनुमान को Anthropic द्वारा पुष्ट कारण या अभी सभी परिवेशों पर लागू बग न मानें। रिपोर्ट करते समय 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साइन-इन या अतिरिक्त अनुमति चाहिए। कॉन्फ़िगर किया गया प्रमाणीकरण तरीका भी देखें/mcp से प्रमाणीकरण करें (ब्राउज़र में स्वीकृति दें)
⏸ pending approvalप्रोजेक्ट की .mcp.json का सर्वर स्वीकृति की प्रतीक्षा में/mcp में स्वीकार करें। गलती से अस्वीकार किया हो तो: claude mcp reset-project-choices
✗ rejectedकॉन्फ़िगरेशन द्वारा अस्वीकार किया गया प्रोजेक्ट सर्वरdisabledMcpjsonServers और प्रबंधित नीतियाँ देखें। अपनी स्वीकृति का चुनाव रीसेट करने के लिए reset-project-choices इस्तेमाल करें

अकेले failed से लोकल स्टार्टअप और रिमोट संचार की समस्या में अंतर नहीं पता चलताclaude mcp get <name> के Issue: या /mcp के विवरण में HTTP कोड या त्रुटि का संदेश देखें। कनेक्शन बनाते समय तय Authorization हेडर 401/403 से अस्वीकार हो, तब भी failed आता है। साथ ही, केवल resources या prompts देने वाले सर्वर में शून्य टूल होना ज़रूरी नहीं कि त्रुटि हो। पहले देखें कि सर्वर से टूल मिलना अपेक्षित है या नहीं। आधिकारिक स्टेटस विवरण देखें।

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

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

ROOT CAUSES

कनेक्शन के तरीके के अनुसार जाँच

1) पाथ / PATH
रिलेटिव पाथ लॉन्च डायरेक्टरी के सापेक्ष रिज़ॉल्व होते हैं और खिसक जाते हैं। लोकल स्क्रिप्ट के लिए एब्सोल्यूट पाथ इस्तेमाल करें। एक्ज़ीक्यूटेबल न मिलने पर spawn ... ENOENT आता है।
2) env vars पास नहीं हुए
stdio सर्वर के विशेष वेरिएबल उसी सर्वर के env में दें। settings.json का env भी सत्र और चाइल्ड प्रोसेस पर लागू होता है, इसलिए उसके मान भी देखें।
3) स्टार्टअप टाइमआउट
भारी सर्वर समय रहते शुरू नहीं हो पाता। लॉन्च पर MCP_TIMEOUT (ms) बढ़ाएँ, जैसे 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 आम तौर पर उस प्रॉम्प्ट के बिना उन्हें लोड करते हैं। अस्वीकृति सेटिंग और अन्य शर्तों के लिए प्रोजेक्ट स्कोप का आधिकारिक दस्तावेज़ देखें। MCP की मूल बातें और A2A भी संबंधित हैं।

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

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

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

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

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

WSL में भी Linux की ओर Node, पैकेज और एनवायरनमेंट वेरिएबल चाहिए। WSL पर जाने से समाधान की गारंटी नहीं है। सर्वर के समर्थित परिवेश और अपना Claude Code संस्करण भी देखें।

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) से सत्यापित करें — उसकी टूल सूची देखें और UI में टूल चलाएँ।
5
बदलाव के बाद दोबारा कनेक्ट करें और आवश्यक ऑपरेशन चलाएँ। विफलता बनी रहे तो संस्करण, कनेक्शन का तरीका और गोपनीय जानकारी हटाए हुए लॉग के साथ रिपोर्ट करें।

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

ध्यान दें: बहुत अधिक MCP सर्वर जोड़ने पर टूल की परिभाषाएँ कॉन्टेक्स्ट लेती हैं, खासकर हमेशा लोड होने वाली सेटिंग में। Claude Code डिफ़ॉल्ट रूप से टूल खोज के ज़रिए परिभाषाएँ ज़रूरत पर लोड करता है, इसलिए असर कम होता है। फिर भी इस्तेमाल न होने वाले सर्वर बंद रखना उचित है। कॉन्टेक्स्ट भरने से 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 त्रुटियों का संग्रह

FAQ

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

Q. यह "needs authentication" कहता है और टूल काम नहीं करते।
A. यह एक रिमोट (HTTP) सर्वर है जो ऑथेंटिकेशन माँग रहा है (401/403)। /mcp खोलें और उस सर्वर के लिए ऑथेंटिकेशन चलाएँ; यह ब्राउज़र में OAuth अनुमोदन तक बढ़ता है। पूरा होने पर, टोकन सुरक्षित रूप से स्टोर होते हैं और स्वतः रिफ़्रेश होते हैं। ध्यान दें कि कुछ सेवाएँ (Microsoft 365, Gmail, Google Calendar) Claude Code से लोकल ऑथ का समर्थन नहीं करतीं और इन्हें इसके बजाय claude.ai पर Settings → Connectors के ज़रिए कनेक्ट करना होता है।

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

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

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

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