डिडिट एमसीपी सर्वर को स्वयं-होस्ट कैसे करें (HI)
डॉकर या नोड के साथ ओपन-सोर्स डिडिट एमसीपी सर्वर को डिप्लॉय करें, OAuth या हेडलेस stdio कॉन्फ़िगर करें, और अपने लोड बैलेंसर के पीछे एक स्टेटलेस सेवा चलाएँ।.

मुख्य बातें
- डिडिट मॉडल कॉन्टेक्स्ट प्रोटोकॉल (MCP) सर्वर MIT लाइसेंस के तहत ओपन सोर्स है। आप इसे सार्वजनिक GitHub रिपॉजिटरी से बना सकते हैं और इसे डॉकर, नोड.जेएस, या हेडलेस stdio ट्रांसपोर्ट के साथ चला सकते हैं।
- स्वयं-होस्टिंग से MCP प्रक्रिया कहाँ चलती है, इसमें बदलाव होता है, न कि यह डिडिट तक कैसे पहुँचती है। प्रत्येक मोड एक बियरर एक्सेस टोकन के साथ एक डिडिट उपयोगकर्ता के रूप में प्रमाणित होता है। MCP टूल के लिए कोई एप्लिकेशन API-की मोड नहीं है।
- पूर्ण स्व-होस्टेड कैटलॉग में 121 टूल शामिल हैं। होस्ट किया गया ओपन ऑथराइजेशन (OAuth) एंडपॉइंट जानबूझकर 115 को उजागर करता है। वर्तमान स्रोत में उदाहरणों में
didit_context_get,didit_session_create, औरdidit_transaction_screen_walletशामिल हैं। - HTTP एंट्रीपॉइंट स्टेटलेस है और POST अनुरोधों के माध्यम से MCP ट्रैफ़िक स्वीकार करता है। प्रत्येक अनुरोध के लिए एक नया सर्वर और ट्रांसपोर्ट बनाया जाता है, इसलिए लोड बैलेंसर को सत्र संबद्धता की आवश्यकता नहीं होती है।
- कंटेनर और लोड-बैलेंसर जांच के लिए
/healthzका उपयोग करें। सेवा को उजागर करने से पहले सार्वजनिक संसाधन URI, प्रमाणीकरण मूल, टोकन सत्यापन मोड और रहस्यों को स्पष्ट रूप से कॉन्फ़िगर करें।
होस्ट किया गया एंडपॉइंट सुविधाजनक है, लेकिन यह हर टीम के लिए सही परिचालन विकल्प नहीं है। एक उद्यम को एकीकरण को अपनी नेटवर्क सीमा के भीतर रखने, रनटाइम छवि को नियंत्रित करने, निजी एग्रेस लेयर के माध्यम से ट्रैफ़िक रूट करने, या अपनी स्वयं की अवलोकन क्षमता और परिवर्तन-प्रबंधन नीतियों को लागू करने की आवश्यकता हो सकती है। डिडिट एमसीपी रिपॉजिटरी एक अलग उत्पाद सतह बनाए बिना उस डिप्लॉयमेंट मॉडल का समर्थन करती है।
यह मार्गदर्शिका केवल सर्वर के संचालन पर केंद्रित है। कैटलॉग और टूल व्यवहार के लिए, डिडिट एमसीपी टूल संदर्भ का उपयोग करें। प्रबंधित एंडपॉइंट के विरुद्ध क्लाइंट सेटअप के लिए, क्लाउड इंस्टॉलेशन गाइड का उपयोग करें। पूर्ण तकनीकी संदर्भ एमसीपी अवलोकन और प्रमाणीकरण दस्तावेज़ में हैं।
HTTP या stdio एंट्रीपॉइंट चुनें
रिपॉजिटरी दो एंट्रीपॉइंट के साथ एक साझा टूल कैटलॉग बनाता है। dist/http.js स्टेटलेस स्ट्रीमेबल HTTP पर एक एक्सप्रेस रिसोर्स सर्वर चलाता है। यह कई एमसीपी क्लाइंट, कंटेनर या उपयोगकर्ताओं द्वारा पहुँचने वाली साझा सेवा के लिए सही विकल्प है। dist/index.js stdio पर चलता है और एक क्लाइंट द्वारा लॉन्च की गई हेडलेस लोकल प्रक्रिया के लिए अभिप्रेत है।
दोनों एंट्रीपॉइंट समान डिस्पैच लॉजिक को कॉल करते हैं, और संस्करण 5 केवल एमसीपी टूल को उजागर करता है—एमसीपी संसाधनों या प्रॉम्प्ट को नहीं। दोनों डाउनस्ट्रीम अनुरोधों को डिडिट उपयोगकर्ता के रूप में प्रमाणित करते हैं। अंतर यह है कि वह उपयोगकर्ता क्रेडेंशियल प्रक्रिया तक कैसे पहुँचता है: HTTP एंट्रीपॉइंट कॉलर के OAuth बियरर टोकन को प्राप्त और मान्य करता है; stdio एंट्रीपॉइंट DIDIT_ACCESS_TOKEN से एक उपयोगकर्ता बियरर टोकन पढ़ता है।
स्वयं-होस्टेड का मतलब क्रेडेंशियल-मुक्त नहीं है: एमसीपी अभी भी एक डिडिट उपयोगकर्ता के रूप में कार्य करता है, और डिडिट उस उपयोगकर्ता की संगठन भूमिका और अनुमतियों को प्रत्येक टूल कॉल पर लागू करता है।
डॉकर के साथ बिल्ड और रन करें
रिपॉजिटरी में नोड 20 पर आधारित एक मल्टी-स्टेज डॉकरफाइल शामिल है। बिल्ड स्टेज डेवलपमेंट डिपेंडेंसी स्थापित करता है, टाइपस्क्रिप्ट संकलित करता है, और डेवलपमेंट पैकेज को प्रून करता है। प्रोडक्शन स्टेज नॉन-रूट node उपयोगकर्ता के रूप में चलता है और इसमें एक कंटेनर स्वास्थ्य जांच शामिल है।
git clone https://github.com/didit-protocol/mcp.git
cd mcp
cp .env.example .env
docker build -t didit-mcp .
docker run -p 3000:3000 --env-file .env didit-mcp
कंटेनर शुरू करने से पहले, होस्ट किए गए डिफ़ॉल्ट को बदलें जो आपकी डिप्लॉयमेंट की पहचान करते हैं। न्यूनतम रूप से, MCP_RESOURCE_URI को सार्वजनिक मूल पर सेट करें जिसके माध्यम से क्लाइंट इस संसाधन सर्वर तक पहुंचते हैं, फिर टोकन इंट्रॉस्पेक्शन के लिए आवश्यक OAuth क्लाइंट क्रेडेंशियल प्रदान करें। अपने कंटेनर प्लेटफॉर्म के सीक्रेट मैनेजर में रहस्य रखें, न कि पॉपुलेटेड .env फ़ाइल को कमिट करें।
MCP_PORT=3000
MCP_RESOURCE_URI=https://mcp.example.com
MCP_AUTHORIZATION_SERVER_ORIGIN=https://business.didit.me
MCP_TOKEN_VERIFY_MODE=introspection
MCP_OAUTH_CLIENT_ID=replace-with-client-id
MCP_OAUTH_CLIENT_SECRET=replace-with-client-secret
MCP_SCOPES_SUPPORTED="didit:management didit:verification"
अपने इनग्रेस या लोड बैलेंसर पर ट्रांसपोर्ट लेयर सिक्योरिटी (TLS) को समाप्त करें, MCP POST अनुरोधों को पोर्ट 3000 पर फॉरवर्ड करें, और Authorization हेडर को बनाए रखें। बाहरी रूप से दिखाई देने वाला MCP_RESOURCE_URI क्लाइंट को विज्ञापित संसाधन पहचान से मेल खाना चाहिए; किसी अन्य सार्वजनिक मूल के लिए प्रबंधित डिडिट URI को जगह पर न छोड़ें।
Node.js के साथ सीधे बिल्ड और रन करें
यदि आपका प्लेटफॉर्म पहले से ही एक नोड रनटाइम प्रबंधित करता है, तो कंटेनर के बिना उसी HTTP एंट्रीपॉइंट का उपयोग करें। पैकेज निजी है और npm के माध्यम से वितरित नहीं किया जाता है, इसलिए प्रकाशित पैकेज को निष्पादित करने का प्रयास करने के बजाय रिपॉजिटरी को क्लोन करें।
git clone https://github.com/didit-protocol/mcp.git
cd mcp
npm install
npm run build
node dist/http.js
प्रक्रिया कंटेनर के समान पर्यावरण चर पढ़ती है। इसे अपने प्रोसेस सुपरवाइजर के तहत चलाएं, डिप्लॉयमेंट वातावरण के माध्यम से रहस्य इंजेक्ट करें, और केवल आवश्यक एंडपॉइंट को रूट करें। एमसीपी अनुरोध POST /mcp पर जाते हैं। सेवा जानबूझकर उस रूट पर GET और DELETE को अस्वीकार करती है क्योंकि यह एमसीपी सत्रों या सर्वर-आरंभित स्ट्रीम को बनाए नहीं रखती है।
Node.js रिपॉजिटरी की .env फ़ाइल को स्वचालित रूप से लोड नहीं करता है। शेल में मानों को निर्यात करें, उन्हें सेवा प्रबंधक के माध्यम से इंजेक्ट करें, या dist/http.js शुरू करने से पहले अपने प्लेटफॉर्म के पर्यावरण-फ़ाइल समर्थन का उपयोग करें। यह भी ध्यान दें कि npm start stdio एंट्रीपॉइंट लॉन्च करता है; HTTP के लिए node dist/http.js या npm run start:http का उपयोग करें।
stdio पर हेडलेस चलाएं
एक स्थानीय एजेंट, बिल्ड रनर, या आइसोलेटेड सिंगल-क्लाइंट प्रक्रिया के लिए, stdio एंट्रीपॉइंट का उपयोग करें। वातावरण के माध्यम से एक उपयोगकर्ता एक्सेस टोकन प्रदान करें और एमसीपी क्लाइंट को प्रोसेस लाइफसाइकिल का मालिक बनने दें।
DIDIT_ACCESS_TOKEN=<user-access-token> node dist/index.js
यह टोकन एक उपयोगकर्ता बियरर क्रेडेंशियल है, न कि एक एप्लिकेशन क्रेडेंशियल। इसे एक रहस्य के रूप में संग्रहीत करें, इसे शेल इतिहास और लॉग से बाहर रखें, और अपनी एक्सेस नीति के अनुसार इसे घुमाएं। यदि एक डिप्लॉयमेंट हमेशा एक संगठन या एप्लिकेशन में संचालित होता है, तो MCP_DEFAULT_ORG और MCP_DEFAULT_APP उस डिफ़ॉल्ट स्कोप की आपूर्ति कर सकते हैं। अन्यथा, टूल स्पष्ट तर्कों या प्रमाणित अनुरोध संदर्भ से स्कोप को हल कर सकते हैं।
stdio में अभी भी कोई एप्लिकेशन API-की मोड नहीं है। स्व-होस्टेड HTTP और स्व-होस्टेड stdio दोनों उपयोगकर्ता-स्कोप वाले डिडिट कंसोल एंडपॉइंट को कॉल करते हैं, इसलिए एक एप्लिकेशन कुंजी उपयोगकर्ता बियरर टोकन का विकल्प नहीं बन सकती है।
पूर्ण पर्यावरण सतह को कॉन्फ़िगर करें
वर्तमान src/config.ts निम्नलिखित चर का समर्थन करता है। अधिकांश डिप्लॉयमेंट को उत्पादन डिडिट एपीआई और प्रमाणीकरण डिफ़ॉल्ट को बनाए रखना चाहिए और केवल संसाधन पहचान, सत्यापन कॉन्फ़िगरेशन, और उनकी टोपोलॉजी के लिए आवश्यक रहस्यों को ओवरराइड करना चाहिए।
साझा और stdio चर
DIDIT_ACCESS_TOKEN: हेडलेस stdio मोड के लिए उपयोगकर्ता बियरर टोकन; कोई डिफ़ॉल्ट नहीं।DIDIT_API_BASE_URL: सत्यापन एपीआई बेस; डिफ़ॉल्टhttps://verification.didit.me/v3पर होता है।DIDIT_AUTH_BASE_URL: प्रमाणीकरण एपीआई बेस; डिफ़ॉल्टhttps://apx.didit.me/auth/v2पर होता है।MCP_DEFAULT_ORGऔरMCP_DEFAULT_APP: सिंगल-टेनेंट डिप्लॉयमेंट के लिए वैकल्पिक संगठन और एप्लिकेशन डिफ़ॉल्ट।
HTTP संसाधन-सर्वर चर
MCP_PORT: लिसन पोर्ट; डिफ़ॉल्ट3000पर होता है।MCP_RESOURCE_URI: सार्वजनिक संसाधन-सर्वर URI; डिफ़ॉल्टhttps://mcp.didit.meपर होता है।MCP_AUTHORIZATION_SERVER_ORIGIN: प्रमाणीकरण-सर्वर मूल; डिफ़ॉल्टhttps://business.didit.meपर होता है।MCP_TOKEN_VERIFY_MODE: डिफ़ॉल्ट रूप सेintrospection, याjwksजब प्रमाणीकरण सेवा स्थानीय हस्ताक्षर सत्यापन के लिए उपयुक्त JSON वेब टोकन (JWTs) जारी करती है।MCP_OAUTH_CLIENT_IDऔरMCP_OAUTH_CLIENT_SECRET: कोई डिफ़ॉल्ट नहीं; RFC 7662 इंट्रॉस्पेक्शन के लिए HTTP बेसिक क्रेडेंशियल के रूप में उपयोग किया जाता है।MCP_OAUTH_INTROSPECT_URL: डिफ़ॉल्टhttps://apx.didit.me/auth/v2/introspect/पर होता है।MCP_SCOPES_SUPPORTED: स्पेस-सेपरेटेड डिस्कवरी स्कोप; डिफ़ॉल्टdidit:management didit:verificationपर होता है।
प्रमाणीकरण मेटाडेटा ओवरराइड
DIDIT_AUTH_ISSUER: डिफ़ॉल्टMCP_AUTHORIZATION_SERVER_ORIGINपर होता है।DIDIT_OIDC_DISCOVERY_URL: ओपनआईडी कनेक्ट (OIDC) डिस्कवरी दस्तावेज़; डिफ़ॉल्ट प्रमाणीकरण मूल प्लस/.well-known/oauth-authorization-serverपर होता है।DIDIT_JWKS_URL: JSON वेब की सेट (JWKS) एंडपॉइंट; डिफ़ॉल्टhttps://apx.didit.me/auth/config/jwks/पर होता है।DIDIT_OIDC_AUTHORIZE_URL: डिफ़ॉल्ट प्रमाणीकरण मूल प्लस/authorizeपर होता है।DIDIT_OIDC_TOKEN_URL: डिफ़ॉल्ट प्रमाणीकरण मूल प्लस/api/auth/oauth-tokenपर होता है।DIDIT_OIDC_REGISTRATION_URL: डिफ़ॉल्ट प्रमाणीकरण मूल प्लस/api/auth/oauth-registerपर होता है।
अपारदर्शी एक्सेस टोकन के लिए introspection का उपयोग करें। सर्वर उन्हें MCP_OAUTH_CLIENT_ID और MCP_OAUTH_CLIENT_SECRET का उपयोग करके कॉन्फ़िगर किए गए इंट्रॉस्पेक्शन एंडपॉइंट पर भेजता है। jwks का उपयोग तभी करें जब आपकी प्रमाणीकरण सेवा इस क्लाइंट के लिए हस्ताक्षरित JWT एक्सेस टोकन जारी करने के लिए कॉन्फ़िगर की गई हो; सर्वर तब DIDIT_JWKS_URL के विरुद्ध हस्ताक्षरों को मान्य करता है। सत्यापन मोड बदलने से एक अलग पहचान मॉडल नहीं बनता है: मान्य प्रिंसिपल एक डिडिट उपयोगकर्ता बना रहता है।
एमसीपी क्लाइंट अपने प्रमाणीकरण प्रवाह के दौरान डिडिट बिजनेस कंसोल के साथ डायनेमिक क्लाइंट रजिस्ट्रेशन (DCR) का उपयोग कर सकते हैं। वह क्लाइंट रजिस्ट्रेशन रिसोर्स सर्वर के MCP_OAUTH_CLIENT_ID और MCP_OAUTH_CLIENT_SECRET से अलग है, जो इंट्रॉस्पेक्शन अनुरोधों को प्रमाणित करता है। उन सर्वर-साइड क्रेडेंशियल को उपयुक्त डिडिट डिप्लॉयमेंट चैनल के माध्यम से प्रदान करें, न कि यह मानते हुए कि एक क्लाइंट रजिस्ट्रेशन उन्हें बदल सकता है।
स्वास्थ्य जांच और स्टेटलेस स्केलिंग
HTTP प्रक्रिया GET /healthz को उजागर करती है और JSON लौटाती है जिसमें status, service, और version शामिल होते हैं। डॉकर इमेज पहले से ही 15-सेकंड की स्टार्टअप अवधि के बाद हर 30 सेकंड में इसकी जांच करती है। आप Kubernetes रेडीनेस, एक एप्लिकेशन लोड बैलेंसर लक्ष्य समूह, या एक बाहरी अपटाइम प्रोब के लिए उसी एंडपॉइंट का उपयोग कर सकते हैं।
curl -fsS http://localhost:3000/healthz
एमसीपी रूट डिज़ाइन द्वारा स्टेटलेस है। प्रत्येक प्रमाणित POST के लिए, प्रक्रिया सत्र पीढ़ी अक्षम के साथ एक नया सर्वर और स्ट्रीमेबल HTTP ट्रांसपोर्ट बनाती है, कॉलर के मान्य क्रेडेंशियल को प्रति-अनुरोध संदर्भ के माध्यम से फॉरवर्ड करती है, डिस्पैच पूरा करती है, और ट्रांसपोर्ट को बंद कर देती है। कोई इन-मेमोरी सत्र नहीं है जिसे बाद के अनुरोध को उसी रेप्लिका पर खोजना होगा।
यहां, स्टेटलेस एमसीपी ट्रांसपोर्ट और अनुरोध लाइफसाइकिल का वर्णन करता है। सत्यापन सत्र, वर्कफ़्लो, मामले, और अन्य व्यावसायिक रिकॉर्ड अभी भी डिडिट की अपस्ट्रीम सेवाओं में बने रहते हैं।
परिणामस्वरूप, क्षैतिज रेप्लिका को स्टिकी सत्रों की आवश्यकता नहीं होती है। कोई भी स्वस्थ इंस्टेंस अगले POST को संभाल सकता है, और रोलिंग डिप्लॉयमेंट को सामान्य इन-फ़्लाइट अनुरोध हैंडलिंग से परे सत्र ड्रेनिंग की आवश्यकता नहीं होती है। क्षमता योजना को अनुरोध समवर्ती, डाउनस्ट्रीम डिडिट एपीआई विलंबता, और आपकी सामान्य टाइमआउट और रिट्री नीति पर ध्यान केंद्रित करना चाहिए।
सेवा को उजागर करने से पहले मान्य करें
- पुष्टि करें कि
/healthzलोड बैलेंसर के समान नेटवर्क पथ से सफल होता है। - पुष्टि करें कि अप्रमाणित एमसीपी अनुरोध टूल आउटपुट के बजाय प्रमाणीकरण चुनौती प्राप्त करते हैं।
- कोड एक्सचेंज (PKCE) के लिए प्रूफ की के साथ एक OAuth 2.1 प्रवाह पूरा करें, फिर यह सत्यापित करने के लिए
didit_context_getको कॉल करें कि अपेक्षित संगठन और एप्लिकेशन दिखाई दे रहे हैं। - डिस्कवरी एंडपॉइंट या टोकन सत्यापन बदलने से पहले उन्नत एमसीपी दस्तावेज़ की समीक्षा करें।
- समर्थित प्रबंधित सतह और वर्तमान लिंक के लिए डिडिट एमसीपी डेवलपर पेज का उपयोग करें।
यदि स्वयं-होस्टिंग अब एक आवश्यकता नहीं है, तो प्रबंधित एंडपॉइंट ऊपर वर्णित रनटाइम और OAuth संसाधन-सर्वर संचालन को हटा देता है। क्लाउड उपयोगकर्ता इसे डिडिट कनेक्टर डीप लिंक के साथ जोड़ सकते हैं। चाहे आप प्रक्रिया चलाएं या डिडिट चलाए, मूल नियम समान है: एमसीपी संचालन एक डिडिट उपयोगकर्ता के रूप में प्रमाणित होते हैं, कभी भी एप्लिकेशन एपीआई कुंजी के रूप में नहीं।
संबंधित लेख
- यूरोप का डीपफेक नियम अब लागू है, और यह धोखाधड़ी पर नहीं, बल्कि उपकरण पर केंद्रित है
- जुए में पहचान जाँच के दोनों ओर AI की भूमिका
- स्टेबलकॉइन पहचान नियम: जारी करने और भुनाने तक सीमित, आगे क्या होता है उस पर नहीं
- मिस्र ने KYC ताज़ा करने की लागत को ग्राहक पर डालने के बजाय खुद वहन किया
- ब्राजील में एसएमई के लिए अत्याधुनिक पहचान सत्यापन तक पहुंच बढ़ाने हेतु यूनिको ने डिडिट के साथ भागीदारी की
- डिडिट बनाम ऑनफिडो: कवरेज, मूल्य निर्धारण, स्वचालन और प्रवासन