
mcp-remote OS कमांड इंजेक्शन के लिए उजागर
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'