
mcp-remote exposed to OS command injection
mcp-remoteएक MCP क्लाइंट जो केवल स्थानीय (stdio) सर्वरों को सपोर्ट करता है, उसे प्रमाणीकरण समर्थन के साथ एक रिमोट MCP सर्वर से कनेक्ट करें:
नोट: यह एक कार्यशील प्रूफ-ऑफ-कॉन्सेप्ट है लेकिन इसे प्रायोगिक माना जाना चाहिए।
अब तक, अधिकांश MCP सर्वर स्थानीय रूप से स्थापित होते हैं, stdio ट्रांसपोर्ट का उपयोग करके। इसके कुछ लाभ हैं: क्लाइंट और सर्वर दोनों एक-दूसरे पर भरोसा कर सकते हैं क्योंकि उपयोगकर्ता ने दोनों को चलाने की अनुमति दी है। API कुंजियों जैसे रहस्यों को पर्यावरण चर का उपयोग करके जोड़ा जा सकता है और वे आपकी मशीन कभी नहीं छोड़ते। और npx और uvx पर निर्माण करने से उपयोगकर्ताओं को स्पष्ट स्थापना चरणों से भी बचा जा सका है।
लेकिन इसका एक कारण है कि अधिकांश सॉफ्टवेयर जो वेब पर ले जाया जा सकता था, वह वेब पर ही चला गया: जब आप एक ही डिप्लॉय से अपने सभी उपयोगकर्ताओं को अपडेट पुश कर सकते हैं तो बग ढूंढना और ठीक करना तथा नई सुविधाओं पर पुनरावृत्ति करना बहुत आसान होता है।
नवीनतम MCP प्राधिकरण विनिर्देश के साथ, अब हमारे पास अपने MCP सर्वरों को दुनिया के साथ साझा करने का एक सुरक्षित तरीका है बिना उपयोगकर्ताओं के लैपटॉप पर कोड चलाए। या कम से कम, यदि सभी लोकप्रिय MCP क्लाइंट अभी तक इसका समर्थन करते तो आप कर सकते। अधिकांश केवल stdio हैं, और जो HTTP+SSE का समर्थन करते हैं वे अभी तक आवश्यक OAuth प्रवाह का समर्थन नहीं करते।
यहीं पर mcp-remote आता है। जैसे ही आपका चुना हुआ MCP क्लाइंट रिमोट, अधिकृत सर्वरों का समर्थन करता है, आप इसे हटा सकते हैं। उस समय तक, इस वन-लाइनर को डालें और अपने इच्छित MCP क्लाइंट के लिए तैयार हो जाएं!
सभी सबसे लोकप्रिय MCP क्लाइंट (क्लॉड डेस्कटॉप, कर्सर और विंडसर्फ) निम्नलिखित कॉन्फ़िग प्रारूप का उपयोग करते हैं:
{
"mcpServers": {
"remote-example": {
"command": "npx",
"args": [
"mcp-remote",
"https://remote.mcp.server/sse"
]
}
}
}
प्रमाणीकरण को बायपास करने या अपने रिमोट सर्वर पर सभी अनुरोधों पर कस्टम हेडर भेजने के लिए, --header CLI तर्क पास करें:
{
"mcpServers": {
"remote-example": {
"command": "npx",
"args": [
"mcp-remote",
"https://remote.mcp.server/sse",
"--header",
"Authorization: Bearer ${AUTH_TOKEN}"
],
"env": {
"AUTH_TOKEN": "..."
}
},
}
}
नोट: कर्सर और क्लॉड डेस्कटॉप (विंडोज) में एक बग है जहाँ args के अंदर स्पेस npx को आह्वान करते समय एस्केप नहीं होते, जिससे ये मान खराब हो जाते हैं। आप इसका उपयोग करके काम कर सकते हैं:
{
// शेष कॉन्फ़िग...
"args": [
"mcp-remote",
"https://remote.mcp.server/sse",
"--header",
"Authorization:${AUTH_HEADER}" // ध्यान दें ':' के चारों ओर कोई स्पेस नहीं
],
"env": {
"AUTH_HEADER": "Bearer <auth-token>" // env वेरिएबल में स्पेस ठीक हैं
}
},
npx त्रुटियाँ उत्पन्न कर रहा है, तो mcp-remote पैकेज की स्थापना को स्वीकार करने के लिए पहले तर्क के रूप में -y जोड़ने पर विचार करें। "command": "npx",
"args": [
"-y",
"mcp-remote",
"https://remote.mcp.server/sse"
]
npx को हमेशा mcp-remote के अद्यतन संस्करण की जाँच करने के लिए बाध्य करने के लिए, @latest झंडा जोड़ें: "args": [
"mcp-remote@latest",
"https://remote.mcp.server/sse"
]
mcp-remote OAuth रीडायरेक्ट सुनता है (डिफ़ॉल्ट 3334) उसे बदलने के लिए, सर्वर URL के बाद एक अतिरिक्त तर्क जोड़ें। ध्यान दें कि आप जो भी पोर्ट निर्दिष्ट करते हैं, यदि वह अनुपलब्ध है तो एक खुला पोर्ट यादृच्छिक रूप से चुना जाएगा। "args": [
"mcp-remote",
"https://remote.mcp.server/sse",
"9696"
]
mcp-remote OAuth कॉलबैक URL के रूप में पंजीकृत करता है (डिफ़ॉल्ट localhost) उसे बदलने के लिए, --host झंडा जोड़ें। "args": [
"mcp-remote",
"https://remote.mcp.server/sse",
"--host",
"127.0.0.1"
]
--allow-http झंडा जोड़ें। नोट: इसका उपयोग केवल सुरक्षित निजी नेटवर्क में किया जाना चाहिए जहाँ ट्रैफ़िक को इंटरसेप्ट नहीं किया जा सकता। "args": [
"mcp-remote",
"http://internal-service.vpc/sse",
"--allow-http"
]
--debug झंडा जोड़ें। यह टाइमस्टैम्प और प्रमाणीकरण प्रक्रिया, कनेक्शन और टोकन रिफ्रेशिंग के बारे में विस्तृत जानकारी के साथ ~/.mcp-auth/{server_hash}_debug.log में वर्बोज़ लॉग लिखेगा। "args": [
"mcp-remote",
"https://remote.mcp.server/sse",
"--debug"
]
--enable-proxy झंडा जोड़ें। सक्षम होने पर, mcp-remote सामान्य पर्यावरण चर (उदाहरण के लिए HTTP_PROXY, HTTPS_PROXY, और NO_PROXY) से प्रॉक्सी सेटिंग्स का उपयोग करेगा। "args": [
"mcp-remote",
"https://remote.mcp.server/sse",
"--enable-proxy"
],
"env": {
"HTTPS_PROXY": "http://127.0.0.1:3128",
"NO_PROXY": "localhost,127.0.0.1"
}
--ignore-tool झंडा जोड़ें। यह tools/list प्रतिक्रियाओं और tools/call अनुरोधों को ब्लॉक करने वाले निर्दिष्ट पैटर्न से मेल खाने वाले टूल को फ़िल्टर करेगा। * के साथ वाइल्डकार्ड पैटर्न का समर्थन करता है। "args": [
"mcp-remote",
"https://remote.mcp.server/sse",
"--ignore-tool",
"delete*",
"--ignore-tool",
"remove*"
]
आप विभिन्न पैटर्न को अनदेखा करने के लिए कई --ignore-tool झंडे निर्दिष्ट कर सकते हैं। उदाहरण:
delete* - "delete" से शुरू होने वाले सभी टूल को अनदेखा करता है (जैसे, deleteTask, deleteUser)*account - "account" पर समाप्त होने वाले सभी टूल को अनदेखा करता है (जैसे, getAccount, updateAccount)exactTool - केवल "exactTool" नामक टूल को अनदेखा करता है30 सेकंड), सेकंड में मान के साथ --auth-timeout झंडा जोड़ें। यह उपयोगी है यदि सर्वर साइड पर प्रमाणीकरण प्रक्रिया में लंबा समय लगता है। "args": [
"mcp-remote",
"https://remote.mcp.server/sse",
"--auth-timeout",
"60"
]
MCP Remote MCP सर्वर से कनेक्ट होने पर विभिन्न ट्रांसपोर्ट रणनीतियों का समर्थन करता है। यह आपको नियंत्रित करने की अनुमति देता है कि यह Server-Sent Events (SSE) या HTTP ट्रांसपोर्ट का उपयोग करता है, और किस क्रम में उन्हें आज़माता है।
ट्रांसपोर्ट रणनीति --transport झंडे के साथ निर्दिष्ट करें:
npx mcp-remote https://example.remote/server --transport sse-only
उपलब्ध रणनीतियाँ:
http-first (डिफ़ॉल्ट): पहले HTTP ट्रांसपोर्ट आज़माता है, यदि HTTP 404 त्रुटि के साथ विफल होता है तो SSE पर वापस आता हैsse-first: पहले SSE ट्रांसपोर्ट आज़माता है, यदि SSE 405 त्रुटि के साथ विफल होता है तो HTTP पर वापस आता हैhttp-only: केवल HTTP ट्रांसपोर्ट का उपयोग करता है, यदि सर्वर इसका समर्थन नहीं करता है तो विफल होता हैsse-only: केवल SSE ट्रांसपोर्ट का उपयोग करता है, यदि सर्वर इसका समर्थन नहीं करता है तो विफल होता हैMCP Remote mcp-remote डिफ़ॉल्ट का उपयोग करने के बजाय स्थिर OAuth क्लाइंट मेटाडेटा प्रदान करने का समर्थन करता है। यह उपयोगी है जब उन OAuth सर्वरों से कनेक्ट किया जा रहा है जो विशिष्ट क्लाइंट/सॉफ्टवेयर आईडी या स्कोप की अपेक्षा करते हैं।
क्लाइंट मेटाडेटा को JSON स्ट्रिंग या @ उपसर्गित फ़ाइलपथ के रूप में --static-oauth-client-metadata झंडे के साथ प्रदान करें:
npx mcp-remote https://example.remote/server --static-oauth-client-metadata '{ "scope": "space separated scopes" }'
# node readfile का उपयोग करता है, इसलिए यदि आप सुनिश्चित नहीं हैं कि cwd क्या है तो आप शायद निरपेक्ष पथ का उपयोग करना चाहेंगे
npx mcp-remote https://example.remote/server --static-oauth-client-metadata '@/Users/username/Library/Application Support/Claude/oauth_client_metadata.json'
विनिर्देश के अनुसार, सर्वरों को OAuth डायनामिक क्लाइंट रजिस्ट्रेशन का समर्थन करने के लिए प्रोत्साहित किया जाता है लेकिन यह आवश्यक नहीं है।
इन सर्वरों के लिए, MCP Remote इसके बजाय स्थिर OAuth क्लाइंट जानकारी प्रदान करने का समर्थन करता है। यह उपयोगी है जब उन OAuth सर्वरों से कनेक्ट किया जा रहा है जिन्हें पूर्व-पंजीकृत क्लाइंट की आवश्यकता होती है।
क्लाइंट मेटाडेटा को JSON स्ट्रिंग या @ उपसर्गित फ़ाइलपथ के रूप में --static-oauth-client-info झंडे के साथ प्रदान करें:
export MCP_REMOTE_CLIENT_ID=xxx
export MCP_REMOTE_CLIENT_SECRET=yyy
npx mcp-remote https://example.remote/server --static-oauth-client-info "{ \"client_id\": \"$MCP_REMOTE_CLIENT_ID\", \"client_secret\": \"$MCP_REMOTE_CLIENT_SECRET\" }"
# node readfile का उपयोग करता है, इसलिए यदि आप सुनिश्चित नहीं हैं कि cwd क्या है तो आप शायद निरपेक्ष पथ का उपयोग करना चाहेंगे
npx mcp-remote https://example.remote/server --static-oauth-client-info '@/Users/username/Library/Application Support/Claude/oauth_client_info.json'
क्लॉड डेस्कटॉप में MCP सर्वर जोड़ने के लिए आपको निम्नलिखित स्थान पर स्थित कॉन्फ़िगरेशन फ़ाइल को संपादित करना होगा:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.jsonयदि यह अभी तक मौजूद नहीं है, तो आपको इसे सेटिंग्स > डेवेलपर के अंतर्गत सक्षम करने की आवश्यकता हो सकती है।
कॉन्फ़िगरेशन फ़ाइल में परिवर्तन लेने के लिए क्लॉड डेस्कटॉप को पुनरारंभ करें। पुनरारंभ करने पर, आपको इनपुट बॉक्स के निचले दाएं कोने में एक हथौड़ा आइकन देखना चाहिए।
आधिकारिक दस्तावेज़। कॉन्फ़िगरेशन फ़ाइल ~/.cursor/mcp.json पर स्थित है।
संस्करण 0.48.0 के अनुसार, कर्सर सीधे बिना प्रमाणीकरण वाले SSE सर्वरों का समर्थन करता है। यदि आपका MCP सर्वर आधिकारिक MCP OAuth प्राधिकरण प्रोटोकॉल का उपयोग कर रहा है, तो भी आपको एक "command" सर्वर जोड़ना होगा और mcp-remote को कॉल करना होगा।
आधिकारिक दस्तावेज़। कॉन्फ़िगरेशन फ़ाइल ~/.codeium/windsurf/mcp_config.json पर स्थित है।
रिमोट MCP सर्वर बनाने और तैनात करने के निर्देशों के लिए, जिसमें एक वैध OAuth क्लाइंट के रूप में कार्य करना शामिल है, निम्नलिखित संसाधन देखें:
विशेष रूप से, देखें:
agents फ्रेमवर्क का उपयोग करके McpAgent को परिभाषित करने के लिए।इन सर्वरों के परीक्षण के बारे में अधिक जानकारी के लिए, यह भी देखें:
क्या आप किसी और संसाधन के बारे में जानते हैं जिसे आप साझा करना चाहेंगे? कृपया उन्हें इस Readme में जोड़ें और PR भेजें!
~/.mcp-auth निर्देशिका साफ़ करेंmcp-remote सभी क्रेडेंशियल जानकारी ~/.mcp-auth (या जहाँ भी आपका MCP_REMOTE_CONFIG_DIR इंगित करता है) के अंदर संग्रहीत करता है। यदि आपको लगातार समस्याएँ हो रही हैं, तो चलाने का प्रयास करें:
rm -rf ~/.mcp-auth
फिर अपने MCP क्लाइंट को पुनरारंभ करें।
सुनिश्चित करें कि आपके पास स्थापित Node का संस्करण 18 या उच्चतर है। क्लॉड डेस्कटॉप आपके सिस्टम के Node संस्करण का उपयोग करेगा, भले ही आपके पास कहीं और कोई नया संस्करण स्थापित हो।
claude_desktop_config.json को संशोधित करते समय क्लॉड को पूरी तरह से पुनरारंभ करना सहायक हो सकता है।
यदि आप VPN के पीछे हैं तो आपको समस्याएँ आ सकती हैं, आप NODE_EXTRA_CA_CERTS पर्यावरण चर को CA प्रमाणपत्र फ़ाइल की ओर इंगित करने का प्रयास कर सकते हैं। यदि claude_desktop_config.json का उपयोग कर रहे हैं, तो यह इस प्रकार दिख सकता है:
{
"mcpServers": {
"remote-example": {
"command": "npx",
"args": [
"mcp-remote",
"https://remote.mcp.server/sse"
],
"env": {
"NODE_EXTRA_CA_CERTS": "{आपका CA प्रमाणपत्र फ़ाइल पथ}.pem"
}
}
}
}
tail -n 20 -F ~/Library/Logs/Claude/mcp*.logtail -n 20 -f "C:\Users\आपकाउपयोगकर्तानाम\AppData\Local\Claude\Logs\mcp.log"Get-Content "C:\Users\आपकाउपयोगकर्तानाम\AppData\Local\Claude\Logs\mcp.log" -Wait -Tail 20जटिल समस्याओं के निवारण के लिए, विशेष रूप से टोकन रिफ्रेशिंग या प्रमाणीकरण समस्याओं के साथ, --debug झंडे का उपयोग करें:
"args": [
"mcp-remote",
"https://remote.mcp.server/sse",
"--debug"
]
यह ~/.mcp-auth/{server_hash}_debug.log में टाइमस्टैम्प और कनेक्शन और प्रमाणीकरण प्रक्रिया के प्रत्येक चरण के बारे में पूरी जानकारी के साथ विस्तृत लॉग बनाता है। जब आप टोकन रिफ्रेशिंग, लैपटॉप स्लीप/रेज़्यूम मुद्दों या प्रमाणीकरण समस्याओं का सामना करते हैं, तो सहायता प्राप्त करते समय ये लॉग प्रदान करें।
यदि आपको /callback URL द्वारा लौटाई गई निम्नलिखित त्रुटि का सामना करना पड़ता है:
प्रमाणीकरण त्रुटि
टोकन विनिमय विफल: HTTP 400
आप किसी भी स्थानीय रूप से संग्रहीत स्थिति और टोकन को साफ़ करने के लिए rm -rf ~/.mcp-auth चला सकते हैं।
कमांड लाइन पर (MCP सर्वर से नहीं) निम्नलिखित चलाएँ:
npx -p mcp-remote@latest mcp-remote-client https://remote.mcp.server/sse
यह पूरे प्राधिकरण प्रवाह से गुज़रेगा और रिमोट URL पर टूल और संसाधनों को सूचीबद्ध करने का प्रयास करेगा। यह देखने के लिए rm -rf ~/.mcp-auth चलाने के बाद इसे आज़माएँ कि क्या पुराने क्रेडेंशियल आपकी समस्या हैं, अन्यथा उम्मीद है कि इन लॉग में समस्या आपके MCP क्लाइंट की तुलना में अधिक स्पष्ट होगी।