बिना नागरिकता वाले एमसीपी गेटवे और रजिस्ट्री प्रवेश
Type: Learn
Languages: Python
Prerequisites: Phase 13 · 15 (security), Phase 13 · 16 (authorization)
Time: ~75 minutes
सीखने के लक्ष्य
- सत्र संबद्धता के बिना एक 2026-07-28 अंत बिंदु के पीछे कई MCP सर्वर को इकट्ठा करें।
- नीति या अग्रेषण से पहले प्रति अनुरोध मेटाडेटा और रूटिंग हेडर को मान्य करें।
- स्थिर नाम स्थानों, निर्धारक क्रम, वर्णक पिन, आरबीएसी और निजी कैशिंग के साथ उपकरण विलय करें।
- रजिस्ट्री रिकॉर्ड को खोज प्रमाण के रूप में व्यवहार करें जो अभी भी प्रवेश नीति की आवश्यकता है।
- मार्ग अनुरोध-विस्तारित SSE,
subscriptions/listen, MRTR पुनः प्रयास, और कार्य विस्तार सही कॉल. - आधुनिक पथ से विरासत हाथ पकड़ने और सत्र समर्थन को अलग करें।
समस्या
एक क्लाइंट को सीधे एक सर्वर से जोड़ना सरल है। एक बड़े तैनाती के लिए कठिन सवालों के एक सुसंगत उत्तर की आवश्यकता होती हैः
- कौन से सर्वर अनुमति है?
- कौन सा प्रधान प्रत्येक उपकरण को देख सकता है और उसे बुला सकता है?
- क्या होता है जब दो बैकेंड एक ही नाम का खुलासा करते हैं?
- वर्णक परिवर्तनों की समीक्षा कैसे की जाती है?
- दरों की सीमाएं और लेखा परीक्षा कार्यक्रम कहाँ लागू होते हैं?
- क्या कोई भी मामला अगले अनुरोध को संभाल सकता है?
एक गेटवे क्लाइंट और बैक-एंड एमसीपी सर्वर के बीच स्थित है। यह एक एमसीपी एंडपॉइंट प्रस्तुत करता है, क्रॉस-कटिंग नीति लागू करता है, और अनुमोदित अनुरोधों को अग्रेषित करता है।
पुराने गेटवे डिजाइन अक्सर कई बैकेंड सत्रों में एक क्लाइंट सत्र को बहुक्रियाबद्ध और फिर से लिखा Mcp-Session-Id2026-07-28 कोर में कोई प्रोटोकॉल सत्र नहीं है।
अवधारणा
आधुनिक प्रवेश द्वार मार्ग
प्रत्येक अनुरोध के लिएः
- परिवहन प्राधिकरण से मूल के प्रमाण पत्र को प्रमाणित करें।
- वैधता
MCP-Protocol-Version,Mcp-Method,Mcp-Nameऔरparams._meta. . - मूल, संसाधन, विधि, उपकरण और तर्कों को अधिकृत करें।
- वर्णक, रजिस्ट्री, दर और डेटा नीति लागू करें।
- चयनित बैक-एंड के लिए एक नया स्व-निर्धारित अनुरोध बनाएं।
- बैक-एंड परिणाम को मान्य करें और गेटवे परिणाम लौटाएं।
- बिना किसी रहस्य के एक लेखा परीक्षा घटना को रिकॉर्ड करें।
किसी भी चरण को छिपे प्रोटोकॉल सत्र की आवश्यकता नहीं है। एप्लिकेशन स्टेट अभी भी डेटाबेस, स्पष्ट हैंडल, टास्क या अखंडता-संरक्षित MRTR स्टेट में मौजूद हो सकता है।
रनटाइम नीति मुख्य गेटवे निर्णय है
प्रवेश द्वार में कौन सा बैकेंड संस्करण प्रवेश कर सकता है, यह निर्णय लेता है। यह लाइव कॉल को अधिकृत नहीं करता है। प्रत्येक अनुरोध के लिए, गेटवे प्रमाणीकृत मूल, जारीकर्ता और संसाधन, किरायेदार, मिलान विधि और नाम, सामान्यीकृत तर्क, स्वीकार किए गए वर्णक पिन, वर्तमान बैकेंड स्वास्थ्य, क्षमता चौराहे, डेटा वर्गीकरण, दर राज्य और किसी भी कार्रवाई-बाध्य स्वीकृति से नीति को पुनः गणना करता है।
यह आदेश महत्वपूर्ण है। एक रजिस्ट्री रिकॉर्ड सक्रिय रह सकता है जब तक उपयोगकर्ता की भूमिका को रद्द कर दिया जाता है। एक वर्णक तब तक चिपके रह सकता है जब तक कि एक गंतव्य तर्क किरायेदार की सीमा पार करता है। एक बैकेंड तब तक अनुमोदित रह सकता है जब तक कि घटना नीति अलग-थलग करती है। इसलिए रिनटाइम नीति प्राथमिक अनुमति या अस्वीकार निर्णय है, रजिस्ट्री और वर्णक सबूत इनपुट के रूप में।
कनेक्शन या हटाए गए सत्र पहचानकर्ता के तहत अनुमति निर्णय को कैश न करें। यदि नीति उपलब्ध नहीं है, तो ऑपरेशन वर्ग द्वारा घोषित विफलता नीति का पालन करें। एक सुरक्षित डिफ़ॉल्ट राज्य परिवर्तन और संवेदनशील रीड के लिए बंद होने में विफलता है, जबकि स्पष्ट रूप से स्वीकृत सार्वजनिक रीड पथ केवल तभी एक अल्पकालिक अंतिम ज्ञात नीति का उपयोग कर सकते हैं जब उनके जोखिम मॉडल इसकी अनुमति देते हैं। यह रिकॉर्ड करें कि किस नीति संस्करण और विफलता पथ ने निर्णय लिया, फिर इसे वापस करने से पहले बैक-एंड परिणाम को मान्य करें।
एक POST अंत बिंदु
आधुनिक स्ट्रीम करने योग्य HTTP प्रत्येक JSON-RPC संदेश को POST के माध्यम से भेजता हैः
textPOST /mcp
Authorization: Bearer <gateway-token>
MCP-Protocol-Version: 2026-07-28
Mcp-Method: tools/call
Mcp-Name: notes.search
Accept: application/json, text/event-streamगेटवे उस पोस्ट के लिए JSON या अनुरोध-स्कोप SSE लौटा सकता है। आधुनिक अनुरोधों के लिए GET और DELETE 405 लौटा सकता है। Mcp-Session-Idऔर Last-Event-IDसत्ता, आत्मीयता या पुनरावृत्ति व्यवहार न बनाएं।
हेडर और बॉडी के मानों को सहमत होना चाहिए।-32020यह लोड संतुलन, गेटवे और दर सीमाओं को पूरे शरीर को पार्स किए बिना मार्ग प्रदान करता है जबकि अंत-से-अंत अखंडता को बनाए रखता है।
एक सटीक क्रम में मान्य करेंः JSON-RPC और मेटाडेटा प्रकार, हेडर और बॉडी समानता, फिर मिलान संस्करण के लिए समर्थन। एक असंगत HTTP 400 को -32020. यदि हेडर और बॉडी असमर्थित संस्करण पर सहमत हैं, तो HTTP 400 को के साथ लौटाएं-32022और dataठीक है{"supported":["2026-07-28"],"requested":"<actual>"}. एक अज्ञात विधि HTTP 404 को वापस करती है -32601. .
ProtocolErrorवैकल्पिक ले जाता है data, और गेटवे इसे JSON-RPC त्रुटि ऑब्जेक्ट में क्रमबद्ध करता है. एक सूचना में कोई idएक स्वीकार किए गए HTTP अधिसूचना 202 एक खाली शरीर के साथ वापस आता है।
प्रत्येक परत पर खोज को लागू करें
गेटवे कार्यान्वयन server/discoverयह भी प्रत्येक बैकेंड की खोज करता है ताकि यह प्रोटोकॉल संस्करणों, क्षमताओं और एक्सटेंशन जानता है।
उदाहरण गेटवे परिणामः
json{
"resultType": "complete",
"supportedVersions": ["2026-07-28"],
"capabilities": {
"tools": {"listChanged": true}
},
"ttlMs": 30000,
"cacheScope": "private",
"_meta": {
"io.modelcontextprotocol/serverInfo": {
"name": "enterprise-gateway",
"version": "2.0.0"
}
}
}केवल उस क्षमता के चौराहे का विज्ञापन करें जिसे गेटवे अंत-अंत तक मान सकता है। बैकएंड सुविधा को स्वचालित रूप से उजागर करने के लिए सुरक्षित नहीं है। बिना बैकएंड पथ के गेटवे सुविधा विज्ञापन के लिए उपयोगी नहीं है।
serverInfoयह स्वयं-रिपोर्ट किए गए डिस्प्ले और डायग्नोस्टिक डेटा है। इसका उपयोग रजिस्ट्री या प्रकाशक प्रमाण के रूप में न करें।
अनुरोध पर ग्राहक क्षमताएँ
प्रत्येक प्रेषित अनुरोध को एक वर्तमान आवश्यकता होती है _metaआवरणः
json{
"io.modelcontextprotocol/protocolVersion": "2026-07-28",
"io.modelcontextprotocol/clientCapabilities": {},
"io.modelcontextprotocol/clientInfo": {
"name": "enterprise-gateway",
"version": "1.0.0"
}
}बाहरी क्लाइंट क्षमताओं को बैकेंड में अंधेरी रूप से कॉपी न करें. गेटवे बैकेंड के क्लाइंट है। केवल विज्ञापन सुविधाएँ हैं जो गेटवे को सही ढंग से मध्यस्थता करेगी।
निर्धारक नामस्थान
स्थिर सार्वजनिक नामों के तहत बैकेंड टूल को मर्ज करेंः
textnotes.search
notes.create
issues.list
issues.openसार्वजनिक नाम से बैक-एंड और मूल उपकरण नाम तक मैपिंग रखें। पहले या अंतिम टकराव का कभी भी चयन न करें। एक सार्वजनिक नाम अनुमोदन और ऑडिट अनुबंध का हिस्सा है, इसलिए इसे बदलना एक प्रवास है।
tools/listजब दृश्यता मूल से भिन्न होती है, तो रिटर्न cacheScope: private. एक सीमांत ttlMsउपयोगकर्ता-विशिष्ट सूची को प्राधिकरण संदर्भों में लीक करने की अनुमति दिए बिना बैकेंड डिस्कवरी लोड को कम करता है।
प्रत्येक खुलासा उपकरण वर्णक में एक स्थिर नाम, विवरण और वस्तु जड़ शामिल है inputSchema. नामस्थान से आवश्यक वर्णक फ़ील्ड हटाए नहीं जा सकते. पूर्ण सूची परिणाम में भी शामिल है resultType, सर्वर पहचान मेटाडेटा, और कैश संकेत.
पिन स्वीकृत वर्णक
प्रवेश के समय, पूर्ण वर्णक को कैनोनिकलाइज़ करें और इसके पाचन को योग्य सार्वजनिक नाम के तहत संग्रहीत करें। सूची और कॉल समय में, लाइव वर्णक की अनुमोदित पाचन के साथ तुलना करें।
यदि यह बदल जाता हैः
- इसे हटा दें
tools/list. . - प्रत्यक्ष कॉल को अस्वीकार करें।
- एक लेखा परीक्षा कार्यक्रम जारी करें।
- पिन को अपडेट करने से पहले नीति या मानव अनुमोदन की आवश्यकता होती है।
एक गेटवे एक उपयोगी केंद्रीय प्रवर्तन बिंदु है, लेकिन यह एक पहली बार देखा वर्णक को एक सुरक्षित में नहीं बदलता है। प्रारंभिक समीक्षा आवश्यक है।
रजिस्ट्रीज निर्णय लेने के बजाय पता लगाने में मदद करते हैं
एक रजिस्ट्री server.jsonएक पैकेज-बैक रिकॉर्ड इस तरह दिख सकता हैः
json{
"$schema": "https: TOK0
"name": "com.example/notes",
"description": "Example notes MCP server.",
"version": "1.0.0",
"packages": [
{
"registryType": "npm",
"identifier": "@example/notes-mcp",
"version": "1.0.0",
"transport": {"type": "stdio"}
}
]
}प्रकाशन मेटाडेटा गेटवे के सुरक्षा निर्णय को नहीं ले जाता है। सत्यापित प्रकाशक और मूल प्रमाण को अलग-अलग प्रवेश स्थिति में रखेंः
json{
"registryName": "com.example/notes",
"registryVersion": "1.0.0",
"publisher": {"namespace": "com.example", "status": "verified"},
"provenance": {
"source": "registry.modelcontextprotocol.io",
"recordId": "com.example/notes@1.0.0"
},
"admission": {"status": "approved", "reviewedBy": "gateway-policy"}
}गेटवे जांच करता है server.jsonप्रवेश द्वार को अभी भी प्रवेश नीति की आवश्यकता है।
प्रत्येक अनुमोदित बैकएंड के लिए, रिकॉर्डः
- रजिस्टर और रिकॉर्ड पहचानकर्ता सटीक.
- सत्यापित प्रकाशक नामस्थान या डोमेन प्रमाण।
- परिवहन और अंत बिंदु की अनुमति है।
- पिन संस्करण या अनुमोदित उन्नयन नीति।
- कलाकृतियों या वर्णक पचाई।
- प्राधिकरण जारीकर्ता और संसाधन।
- समीक्षक, अनुमोदन समय, और समाप्ति।
सर्वर को स्वीकार न करें क्योंकि इसका डिस्प्ले नाम एक परिचित उत्पाद जैसा दिखता है। रजिस्ट्री उपस्थिति को परिचालन सुरक्षा समीक्षा के रूप में न देखें। निजी सर्वर को एक ही सबूत योजना के माध्यम से प्रवेश किया जा सकता है भले ही वे सार्वजनिक रजिस्ट्री में कभी दिखाई न दें।
इस पाठ में गेटवे सीम लागू किया गया हैः एक बैकएंड रूटेबल बनने से पहले स्थानीय प्रवेश के लिए प्रकाशन सबूत जोड़ें। Lesson 30: MCP Registry Supply Chain, Admission, Drift, and Rollbackनामस्थान प्रमाण, वस्तु उत्पत्ति, अपरिवर्तनीय पिन, लाइव डिस्क्रिप्टर ड्रिफ्ट, रजिस्ट्री स्थिति संगतता, एक छेड़छाड़-प्रमाणित प्रवेश पुस्तिका, और सबूत-समर्थित रोलबैक के लिए पूर्ण नियंत्रण विमान का निर्माण करता है। उपरोक्त अनुरोध-दर-लांच निर्णय से उस आपूर्ति श्रृंखला की स्थिति को अलग रखें।
प्रमाणपत्र मध्यस्थता
गेटवे अपने कॉलर्स को प्रमाणित करता है और अलग से बैकेंड को प्रमाणित करता है। बैकेंड क्रेडेंशियल कभी भी क्लाइंट को नहीं जाते हैं।
इन बाध्यताओं को स्पष्ट रखेंः
textouter principal -> gateway role and policy
backend issuer + resource -> backend registration and tokenबाहरी गेटवे टोकन को कभी भी बैकेंड में न दें। किसी अन्य जारीकर्ता या संसाधन पर बैकेंड टोकन का पुनः उपयोग कभी न करें। यदि कोई टूल किसी अंतिम उपयोगकर्ता की ओर से कार्य करता है, तो उस प्रतिनिधि को एक डिज़ाइन किए गए एक्सचेंज या दावा मॉडल के साथ बनाए रखें, बजाय एक साझा सेवा क्रेडेंशियल के साथ उपयोगकर्ता का नक्कल करने के।
सत्रों के बिना दर सीमाएं
सत्यापित मूल, जारीकर्ता, संसाधन, सार्वजनिक उपकरण, लागत वर्ग और समय विंडो द्वारा प्रमुख सीमाएं। एक सत्र आईडी अनुपस्थित है और यदि यह मौजूद भी हो तो इसे घुमाया जाना आसान होगा।
महंगे काम करने से पहले सस्ते प्रमाणन का प्रयोग करें। यह तय करें कि क्या अस्वीकृत कॉल दुरुपयोग सीमाओं, व्यापारिक कोटाओं या दोनों के साथ गिना जाता है।
निर्णय श्रृंखला का लेखा-परीक्षण
एक कॉल को पुनर्स्थापित करने के लिए पर्याप्त रिकॉर्डः
- अनुरोध और पता लगाने के पहचानकर्ता।
- प्रमाणित मूल और जारीकर्ता
- सार्वजनिक उपकरण और बैक-एंड मार्ग।
- वर्णक पिन संस्करण।
- नीतिगत निर्णय और कारण।
- विलंबता और परिणाम वर्ग।
- MRTR राउंड या कार्य पहचानकर्ता यदि लागू हो।
रडैक धारक टोकन, प्राधिकरण कोड, ताज़ा टोकन, कच्चे रहस्य, और अनावश्यक संवेदनशील तर्क।
अनुरोध के आधार पर एसएसई
एक सामान्य POST उस एक अनुरोध के दौरान काम स्ट्रीम के दौरान अनुरोध-स्कोप किए गए SSE को वापस कर सकता है। प्रतिक्रिया स्ट्रीम को बंद करने से उड़ान में आधुनिक HTTP अनुरोध रद्द हो जाता है।
एक अलग GET धारा न बनाएं और अंतिम घटना-आईडी रिप्ले का वादा न करें। ये पुराने परिवहन परिकल्पनाएं हैं।
दीर्घकालिक परिवर्तन सूचनाएं
सूची और संसाधन परिवर्तन सूचनाओं के लिए, एक वर्तमान ग्राहक भेजता है subscriptions/listenसूचना फ़िल्टर सटीक समतल क्षेत्रों का उपयोग करते हैं toolsListChanged,promptsListChanged,resourcesListChangedऔर resourceSubscriptions:
json{
"jsonrpc": "2.0",
"id": "listen-tools",
"method": "subscriptions/listen",
"params": {
"notifications": {
"toolsListChanged": true
},
"_meta": {
"io.modelcontextprotocol/protocolVersion": "2026-07-28",
"io.modelcontextprotocol/clientCapabilities": {}
}
}
}पहली घटना समर्थित उपसमूह को पहचानती है। इसका सदस्यता पहचानकर्ता स्ट्रीम खोलने वाले अनुरोध का JSON-RPC आईडी हैः
json{
"jsonrpc": "2.0",
"method": "notifications/subscriptions/acknowledged",
"params": {
"_meta": {
"io.modelcontextprotocol/subscriptionId": "listen-tools"
},
"notifications": {
"toolsListChanged": true
}
}
}तब गेटवे केवल स्वीकार किए गए परिवर्तन प्रकारों को अग्रेषित करता है। उस धारा पर प्रत्येक सूचना में वही होता है io.modelcontextprotocol/subscriptionIdमें params._meta. कोई स्वचालित रिप्ले या स्वचालित री-सुनाना नहीं है। पुनः कनेक्ट करने पर, क्लाइंट सदस्यता को फिर से खोलता है और उन सूचियों को ताज़ा करता है जिन पर वह भरोसा करता है। सर्वर द्वारा शुरू की गई एक सुरुचिपूर्ण बंद एक अंतिम पूर्ण परिणाम वापस देता है जो उसी सदस्यता आईडी के साथ टैग किया गया है।
आधुनिक मार्ग की जगह ले लेresources/subscribe,resources/unsubscribeकेवल एक संस्करण-गेटेड पुराने पथ में उन्हें रखें।
एक गेटवे के माध्यम से एमआरटीआर
जब एक बैक-एंड वापस आता है resultType: input_required, गेटवे केवल तभी उस परिणाम को प्रेषित कर सकता है जब बाहरी ग्राहक आवश्यक इनपुट अनुरोध का समर्थन करता है।requestStateबाइट बायट जब तक कि गेटवे जानबूझकर बातचीत को समाप्त नहीं करता और फिर से जारी नहीं करता।
ग्राहक एक ताजा JSON-RPC आईडी के साथ मूल सार्वजनिक उपकरण पुनः प्रयास करता है और inputResponses. गेटवे पुनः प्रयास को अनुमोदित करता है, उसी सार्वजनिक मार्ग की जांच करता है, फिर एक नया बैक-एंड अनुरोध भेजता है।
कार्य विस्तार रूटिंग
कार्य एक आधिकारिक विस्तार है जो io.modelcontextprotocol/tasksवे एक कोर सत्र प्रतिस्थापन नहीं हैं.
ग्राहक प्रति अनुरोध ग्राहक क्षमताओं के भीतर विस्तार की घोषणा करता है, और गेटवे इसे खोज में केवल तभी विज्ञापन देता है जब यह जीवन चक्र को अंत से अंत तक संरक्षित कर सकता है।tools/call, केवल बैक-एंड तय करता है कि क्या सामान्य परिणाम लौटाया जाएगा या resultType: task. एक कार्य परिणाम ले जाता है taskId,status, समय के टिकट, ttlMs, और एक वैकल्पिक pollIntervalMsपरिणाम भेजने से पहले कार्य को पहले से ही स्थायी रूप से पठनीय होना चाहिए।
गेटवे अस्पष्ट कार्य पहचानकर्ता के लिए प्रमाणीकृत मुख्य और बैक-एंड मार्ग रिकॉर्ड करता है।tasks/get,tasks/updateऔर tasks/cancelकॉल उपयोग params.taskIdजैसे Mcp-Name, जो मध्यस्थों को एक रूटिंग कुंजी देता है। tasks/getरिटर्न resultType: completeवर्तमान कार्य स्थिति के साथ और अंतिम परिणाम या प्रोटोकॉल त्रुटि को टर्मिनल स्थिति में इंगित करता है। tasks/updateकुंजीबद्ध भेजता है inputResponsesअपूर्व कार्य प्रविष्टि के लिए और एक खाली पूर्ण पुष्टि लौटाता है। tasks/cancelयह एक खाली पूर्ण मान्यता के साथ एक सहकारी इरादा है, काम बंद होने की गारंटी नहीं है।
नई योजनाओं को लागू न करेंtasks/listया tasks/resultएक कार्य जो इनपुट की आवश्यकता है पूर्ण एम्बेडेड अनुरोधों को उजागर करता है के माध्यम से tasks/get; ग्राहक उन्हें पूरा जवाब देता है tasks/updateक्लाइंट अभी भी सुझावित अंतराल पर मतदान करता है; कार्य निर्माण सर्वर-निर्देशित रहता है।
टिकाऊ कार्य पथ राज्य कार्य हैंडल द्वारा कुंजीबद्ध अनुप्रयोग डेटा है, प्रोटोकॉल सत्र नहीं।
संगतता सीमा
यदि गेटवे को पुराने क्लाइंट या बैकेंड की सेवा करनी है:
- स्पष्ट रूप से युग का पता लगाएं।
- आरंभिकरण, परिवहन सत्र, GET धाराओं, संसाधन सदस्यता और पुराने कार्य शब्दावली को एक विरासत एडाप्टर के अंदर रखें।
- कभी भी आधुनिक रूटिंग या प्राधिकरण में एक विरासत सत्र आईडी लीक.
- चुपके डाउनग्रेड की तुलना में सीमित खोज जांच और स्पष्ट वापसी नीति को प्राथमिकता दें।
इसे बनाओ
code/main.pyएक प्रक्रिया में प्रोटोकॉल गेटवे और दो बैक-एंड सर्वर लागू करता है। प्रत्येक बैक-एंड को एक नया वर्तमान प्रोटोकॉल अनुरोध प्राप्त होता है। गेटवे खोज प्रदान करता है, उपयोगकर्ता द्वारा फ़िल्टर किया गया निर्धारक tools/list, नामों के बीच मार्ग, रजिस्ट्री server.jsonअतिरिक्त बाहरी प्रवेश स्थिति, वर्णक पिन, आरबीएसी, मूल-की दर सीमा, लेखा परीक्षा निर्णय, और एक मॉडल subscriptions/listenएसएसई की पुष्टि।
मॉडल को विश्लेषण अनुरोध निकायों, रूटिंग हेडर और एक प्रमाणित धारक पहचान प्राप्त होती है। यह एक पूर्ण HTTP एडाप्टर नहीं है और विश्लेषण नहीं करता है Content-Typeया पूर्ण Acceptअनुबंध. इसे पाठ 09 के स्ट्रीम करने योग्य HTTP एडाप्टर से कनेक्ट करें, जो आवश्यक है Content-Type: application/jsonऔर एक Acceptदोनों को युक्त मूल्य application/jsonऔर text/event-stream. .
इसे चलाओः
bashcd phases/13-tools-and-protocols/17-mcp-gateways-and-registries
python3 code/main.py
python3 -m unittest discover code/tests -vडेमो बाहरी अनुरोध आईडी और ताजा बैकेंड अनुरोध आईडी प्रिंट करता है ताकि राज्यहीन आशा दिखाई दे।
इसका प्रयोग करें
वास्तविक वर्तमान प्रोटोकॉल क्लाइंट के साथ प्रक्रिया में बैक-एंड ऑब्जेक्टों को प्रतिस्थापित करें। समान सीम बनाए रखेंः
- कनेक्शन से पहले प्रवेश रिकॉर्ड।
- क्षमता के संपर्क से पहले बैकेंड खोज।
- प्राधिकरण से पहले योग्य सार्वजनिक नाम।
- सूची या कॉल से पहले वर्णक पिन।
- प्रेषण से पहले प्रति अनुरोध ताजा मेटाडेटा।
- वापसी से पहले परिणाम सत्यापन।
इसे भेजें
यह सबक जहाजों outputs/skill-gateway-bootstrap.md. यह प्रवेश, खोज, प्रवेश, नामस्थान, प्राधिकरण, कैशिंग, स्ट्रीमिंग, सदस्यता, एमआरटीआर, कार्य, अवलोकन और विरासत अलगाव को कवर करने वाले एक आधुनिक गेटवे डिजाइन का उत्पादन करता है।
व्यायाम
- बाहरी और प्रेषित अनुरोध मेटाडेटा में ट्रैक संदर्भ जोड़ें और लेखा परीक्षा घटना में सहसंबंध दर्ज करें।
- एक कार्य-सक्षम बैकएंड और मार्ग जोड़ें
tasks/getमें कार्य आईडी द्वाराMcp-Name. . - एक बैकेंड वर्णक बदलें और साबित करें कि खोज और प्रत्यक्ष कॉल दोनों अवरुद्ध हैं।
- एक प्रमुख-विशिष्ट सर्वर क्षमता जोड़ें और समझाएं कि खोज निजी कैश में क्यों बनी होनी चाहिए।
- आधुनिक में कोई भी विरासत की स्थिति जोड़ने के बिना एक विरासत एडाप्टर इंटरफ़ेस लिखें
Gatewayकक्षा.
प्रमुख शर्तें
| Term | Meaning |
|---|---|
| MCP gateway | Policy and routing server between clients and backend MCP servers |
| Admission record | Evidence and policy decision allowing one backend into the gateway |
| Qualified tool name | Stable public route such as notes.search |
| Descriptor pin | Approved digest checked during discovery and dispatch |
| Private cache scope | Cached result restricted to one authorization context |
| Request-scoped SSE | Streaming response attached to one POST request |
subscriptions/listen | Client-opened SSE stream for selected long-lived change notifications |
| Task route | Application mapping from an opaque task id to its backend |
| Legacy adapter | Explicit version-gated boundary for old handshake and session behavior |
आगे पढ़ना
- Streamable HTTP transport
- Server discovery
- Official Registry server.json requirements
- MCP Tasks extension
This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.
Browse the complete course catalog or open this lesson on GitHub.