Phase 13: Tools & Protocols

एमसीपी उपकरण अनुबंध और सामग्री

एक उपकरण को स्वचालित करने के लिए केवल तभी सुरक्षित है जब खोज, तर्क, परिणाम, पृष्ठीकरण और परिवहन मेटाडेटा एक अनुबंध पर सहमत हों।

Type: Build

Languages: Python

Prerequisites: Phase 13, Lessons 07, 09, and 10

Time: ~120 minutes

सीखने के लक्ष्य

  • JSON Schema 2020-12 के साथ टूल इनपुट और आउटपुट को परिभाषित करें।
  • यह मानकर कि वे JSON वस्तुएं हैं, संरचित परिणामों को मान्य करें।
  • पाठ, छवि, ऑडियो, संसाधन लिंक और एम्बेडेड संसाधनों के बीच चुनें।
  • असुरक्षित को अस्वीकार करेंx-mcp-headerमॉडल तक पहुंचने से पहले परिभाषाएं।
  • पैरामीटर-हेडर मानों को एन्कोड करें और सटीक हेडर-टू-बॉडी समानता की पुष्टि करें।
  • कर्सर मानों की व्याख्या किए बिना क्रॉस कर्सर पेजिंग।
  • बाध्य और अधिकृत completion/completeसुझाव।

समस्या

पायथन फ़ंक्शन को कॉल करना आसान है. एआई होस्ट के माध्यम से रिमोट क्षमता को कॉल करना एक अनुबंध समस्या है।

सर्वर एक वर्णक प्रकाशित करता है। क्लाइंट उस वर्णक को मॉडल संदर्भ और उपयोगकर्ता इंटरफ़ेस में बदल देता है। मॉडल तर्क बनाता है। एक गेटवे दर्पण हेडर से अनुरोध को रूट कर सकता है। सर्वर उपकरण निष्पादित करता है। फिर क्लाइंट तय करता है कि परिणाम मॉडल पर लौटने के लिए पर्याप्त सुरक्षित और मान्य है या नहीं।

एक कमजोर सीमा पूरी श्रृंखला को भ्रष्ट करती है।

आइए पांच असफलताओं पर विचार करेंः

  • वर्णक कहता है कि परिणाम एक वस्तु है, लेकिन सर्वर एक सरणी लौटाता है।
  • क्लाइंट पृष्ठ को बंद कर देता है जब nextCursorएक खाली स्ट्रिंग है।
  • एक टोकन पैरामीटर को HTTP हेडर में दर्शाया जाता है और मध्यस्थों के लिए दिखाई देता है।
  • एक यूनिकोड रूटिंग मान कच्चे हेडर के रूप में भेजा जाता है, फिर गेटवे और मूल विभिन्न बाइट्स की व्याख्या करते हैं।
  • एक समापन अंत बिंदु एक कॉल करने वाले को उत्पादन वातावरण का सुझाव देता है जो उस तक पहुंच नहीं सकता है।

इनमें से कोई भी विफलता बेहतर प्रलोभन द्वारा ठीक नहीं की जाती है। उन्हें स्पष्ट प्रोटोकॉल और अनुप्रयोग अनुबंधों की आवश्यकता होती है।

अनुबंध पाइपलाइन

प्रत्येक उपकरण कॉल को पांच गेट के रूप में व्यवहार करेंः

  1. Discover.एक निर्धारक, पृष्ठबद्ध उपकरण सूची पढ़ें।
  2. Admit.प्रत्येक वर्णक को मान्य करें और स्थानीय सुरक्षा नीति लागू करें।
  3. Invoke.तर्कों को मान्य करें और परिवहन मेटाडेटा बनाएं।
  4. Execute.हैंडल चलाएं और विफलताओं को सही ढंग से वर्गीकृत करें।
  5. Consume.मॉडल उपयोग से पहले सामग्री ब्लॉकों और संरचित आउटपुट को मान्य करें।

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

JSON योजना एक रनटाइम सीमा है

एमसीपी में 2026-07-28,inputSchemaऔर outputSchemaJSON Schema का उपयोग करें।$schemaअनुपस्थित है, डिफ़ॉल्ट बोली 2020-12 है।

इनपुट स्कीम एक स्कीमा ऑब्जेक्ट होना चाहिए। कोई तर्क नहीं होने वाला उपकरण अभी भी ठीक वही कहेगा जो वह स्वीकार करता हैः

json{
  "type": "object",
  "additionalProperties": false
}

यह अधिक सख्त है{ "type": "object" }, जो मनमानी गुणों को स्वीकार करता है।

एक आउटपुट योजना वैकल्पिक है. एक बार सर्वर एक प्रकाशित करता है, प्रत्येक पूर्ण उपकरण

परिणाम अनुरूप रिटर्न करने के लिए प्रतिबद्ध structuredContent, परिणामों सहित

के साथisError: true. त्रुटि ध्वज निष्पादन परिणाम वर्गीकृत करता है; यह नहीं

प्रकाशित आउटपुट अनुबंध से छूट दें। ग्राहकों को इसके बजाय परिणाम को मान्य करना चाहिए

वर्णक पर भरोसा करने का।

संरचित सामग्री किसी भी JSON मान है

हार्ड कोड नहीं structuredContentएक शब्दकोश के रूप में। यह हो सकता हैः

  • वस्तु;
  • एक सरणी;
  • एक स्ट्रिंग;
  • एक संख्या;
  • एक बोलियन;
  • null. .

यह उपकरण एक सरणी लौटाता हैः

json{
  "name": "tag_catalog",
  "inputSchema": {
    "type": "object",
    "additionalProperties": false
  },
  "outputSchema": {
    "type": "array",
    "items": {"type": "string"}
  }
}

इसका सफल परिणाम मान्य हैः

json{
  "resultType": "complete",
  "content": [
    {
      "type": "text",
      "text": "[\"contracts\", \"mcp\", \"stateless\"]"
    }
  ],
  "structuredContent": ["contracts", "mcp", "stateless"],
  "isError": false
}

संगतता के लिए, संरचित परिणामों में पाठ ब्लॉक में क्रमबद्ध JSON भी शामिल होना चाहिए। पाठ सत्यापन स्रोत नहीं है। structuredContentहै।

एक छोटे से सत्यापनकर्ता अभी भी सीमा सिखाता है

पाठ में एक जानबूझकर JSON Schema उपसमूह का उपयोग किया जाता है क्योंकि यह पायथन मानक पुस्तकालय के अंदर रहता है। यह नमूना उपकरणों द्वारा उपयोग किए जाने वाले तंत्र की जांच करता हैः

  • वस्तु, सरणी, स्ट्रिंग, पूर्णांक, संख्या, बुलियन और शून्य प्रकार;
  • आवश्यक गुण;
  • additionalProperties: false.
  • सरणी वस्तुएं;
  • एनयूएम मान;
  • न्यूनतम स्ट्रिंग लंबाई।

यह एक पूर्ण उत्पादन सत्यापनकर्ता के लिए एक प्रतिस्थापन नहीं है। पुनर्नवीनीकरण के लिए पाठ वह है जहां सत्यापन होता हैः वर्णकों के लिए खोज के बाद, तर्क के लिए निष्पादन से पहले, और संरचित परिणामों के लिए खपत से पहले।

सामग्री ब्लॉक में अलग-अलग लागत होती है

contentarray कई content types को जोड़ सकता है।

TypeUse it forMain boundary
textHuman and model-readable summariesTreat text as untrusted output
imageVisual evidence encoded as base64Validate media type and size
audioSpoken or recorded output encoded as base64Validate media type and duration limits
resource_linkA URI the client may fetch laterReauthorize the later resource read
resourceData embedded directly in the resultEnforce payload and content limits now

संसाधन लिंक यह प्रमाण नहीं है कि संसाधन में दिखाई देता है resources/list. यह इस टूल कॉल द्वारा लौटाया गया एक संदर्भ है. ग्राहक अभी भी अपनी संसाधन नीति लागू करता है जब वह यूआरआई का पालन करता है.

एक एम्बेडेड संसाधन एक और यात्रा से बचता है लेकिन वर्तमान प्रतिक्रिया आकार को बढ़ाता है। बड़े या स्वतंत्र रूप से बदलते कलाकृतियों के लिए लिंक का उपयोग करें। छोटे सबूतों के लिए एम्बेडेड संसाधनों का उपयोग करें जो परिणाम के साथ परमाणु रूप से यात्रा करना चाहिए।

सबक evidence_bundleपरिणाम सभी पांच प्रकारों को शामिल करता है। ग्राहक परिणाम को स्वीकार करने से पहले प्रत्येक ब्लॉक को मान्य करता है।

x-mcp-headerमेटाडेटा को रूट कर रहा है

अंदर एक संपत्ति inputSchemaघोषणा कर सकता है x-mcp-header. स्ट्रीम करने योग्य HTTP पर, क्लाइंट उस तर्क को दर्पण में Mcp-Param-{name}. .

json{
  "region": {
    "type": "string",
    "x-mcp-header": "Region"
  }
}

के साथregion: "eu-west", परिवहन उत्सर्जन कर सकते हैंः

httpMcp-Param-Region: eu-west

एनोटेशन मौजूद है ताकि लोड बैलेंसर, गेटवे या पॉलिसी इंजन JSON शरीर को पार्स किए बिना रूट कर सके। यह क्रेडेंशियल डालने के लिए जगह नहीं है।

प्रोटोकॉल में टिप्पणी को प्रतिबंधित किया गया हैः

  • हेडर नाम खाली नहीं है और HTTP फ़ील्ड-नाम टोकन सिंटैक्स का पालन करता है;
  • हेडर नाम मामले के बावजूद अद्वितीय हैं;
  • गुण प्रकार स्ट्रिंग, पूर्णांक या बुलियन है;
  • numberअनुमति नहीं है;
  • टिप्पणी केवल के प्रत्यक्ष सदस्य पर दिखाई देती है।inputSchema.properties.
  • पूर्णांक मान भीतर रहते हैं -9007199254740991पार9007199254740991. .

स्थान नियम वाक्यरचना है और विफलता बंद. पूरे योजना पेड़ पर चलें,

केवल गुणों को अपने सत्यापनकर्ता समझता है.

एक घोंसले वस्तु के नीचे टिप्पणी properties, ए oneOfशाखा, items, एक

परिभाषा $refएक संदर्भ को हल करने के लिए

संदर्भित नोड को प्रत्यक्ष शीर्ष-स्तरीय गुण में नहीं बदलता है।

इस पाठ में एक तैनाती नीति जोड़ी गई हैः ऐसे वर्णकों को अस्वीकार करें जो जैसे नामों को दर्शाते हैं password,secret,token,api_keyया authorization. आधिकारिक विनिर्देश सर्वर लेखकों को संवेदनशील मापदंडों को प्रतिबिंबित नहीं करने की सलाह देता है. एक ग्राहक उस सलाह को एक कठिन प्रवेश नियम में बदल सकता है।

हेडर नाम का ऑडिट करें, उसका मूल्य नहीं। नमूना कोड रिकॉर्ड Mcp-Param-Regionरखकर रखकरeu-westलेखा परीक्षा की घटना से बाहर।

HTTP हेडर बनाने से पहले एन्कोड मान

एक पैरामीटर मान केवल तभी सादा पाठ के रूप में यात्रा कर सकता है जब यह एक गैर-खाली स्ट्रिंग है

से दिखाई देने वाले ASCII वर्णों के!पार~और नहीं की तरह है

सब कुछ इस तरह से उपयोग करता हैः

text=?base64?{Base64UTF8}?=

Base64UTF8सटीक UTF-8 बाइट्स पर मानक आधार 64 है. कटौती नहीं करते,

सामान्यीकरण, या पहले मूल्य को प्रतिस्थापित करें.

टैब, नियंत्रण वर्ण, सीआर या एलएफ, अग्रणी या पीछे की सफेद जगह, और कोई भी

से शुरू होने वाली मूल्य=?base64?. एक sentinel की तरह दिखता मान को फिर से एन्कोडिंग है

क्या प्राप्तकर्ता को मूल पाठ को पुनः प्राप्त करने की अनुमति देता है बजाय डिकोडिंग

परिवहन वाक्यविन्यास के रूप में.

बुलियन छोटे अक्षर के रूप में प्रस्तुत trueया false. आधार 10 में प्रस्तुत पूर्णांक और

जावास्क्रिप्ट सुरक्षित पूर्णांक सीमा के भीतर रहना चाहिए. उस सीमा के बाहर मान

मध्यस्थ द्वारा गोल किए जाने के बजाय अस्वीकार कर दी जाती है।

सर्वर दर्पण प्रतिलिपि की जांच करता है

हेडर पीढ़ी केवल क्लाइंट का आधा है. Streamable HTTP सीमा पर,

सर्वर को:

  1. पहचान प्राप्त करें Mcp-Param-*शीर्षक-नाम मामले को ध्यान में रखते हुए नाम;
  2. सही आधार64 सेंटीनेल फॉर्म को जब मौजूद हो तो डिकोड करें;
  3. डीकोड किए गए पाठ को संबंधित JSON बॉडी तर्क के साथ सटीक रूप से तुलना करें;
  4. एक गायब, दोहराया, अप्रत्याशित, गलत रूप से तैयार या असंगत को अस्वीकार करना

शिपमेंट से पहले पहचाना हेडर।

अस्वीकृति HTTP है 400JSON-RPC त्रुटि कोड के साथ -32020. . न ही

शरीर का मूल्य या इसके एन्कोडेड हेडर फॉर्म लेखा रिकॉर्ड में शामिल नहीं है।

केवल मान्यता प्राप्त हेडर नाम और अस्वीकार श्रेणी।

code/main.pyइस सीमा को सीधे मॉडल।Lesson 09

विधि और सहित व्यापक Streamable HTTP सत्यापन क्रम को कवर करता है

प्रोटोकॉल-संस्करण समानता।

पृष्ठ पृष्ठ को कुचलने वाले कुचकार

एमसीपी सूची संचालन कर्सर पेजिंग का उपयोग करते हैं. सर्वर पृष्ठ आकार और कर्सर प्रारूप का चयन करता है. क्लाइंट एक निर्णय प्राप्त करता हैः

pythonif result.get("nextCursor") is None:
    break
cursor = result["nextCursor"]

यह मत लिखोः

pythonif not result.get("nextCursor"):
    break

एक खाली स्ट्रिंग एक मान्य कर्सर है सत्यता बहुत जल्दी रुक जाएगी।

क्लाइंट्स को एक कर्सर को डिकोड नहीं करना चाहिए, इसे बढ़ाना चाहिए, इसे ऑर्डर करने के लिए पूर्व कर्सर के साथ तुलना करना चाहिए, या पृष्ठ संख्या का अनुमान लगाना चाहिए। एक सर्वर कर्सर पर हस्ताक्षर कर सकता है, इसे कैटलॉग संस्करण से बांध सकता है, या इसे निजी राज्य में मैप कर सकता है। यह सर्वर का कार्यान्वयन विवरण है।

नमूना सर्वर जानबूझकर वापस आता है ""पहले पृष्ठ के बाद ग्राहक को दूसरे अनुरोध पर सटीक मूल्य भेजना होगा। इसका पता हैः

text<first request with no cursor>
<second request with cursor "">

अमान्य कर्सर JSON-RPC अमान्य पैरामीटर उत्पन्न करते हैं, कोड -32602. .

पूरा होना एक अनुमतिक सतह है

completion/completeयह इंटरैक्टिव फॉर्म के लिए उपयोगी है, लेकिन यह उन नामों को लीक कर सकता है जिन्हें सामान्य सूची विधियां सुरक्षित करती हैं।

एक पूर्ति अनुरोध में एक संदर्भ और पूर्ति किए जा रहे तर्क का नाम दिया जाता हैः

json{
  "method": "completion/complete",
  "params": {
    "ref": {
      "type": "ref/prompt",
      "name": "deployment_review"
    },
    "argument": {
      "name": "environment",
      "value": "st"
    }
  }
}

परिणाम अधिकतम 100 मान देता है और रिपोर्ट कर सकता है totalऔर hasMore. .

संदर्भित प्रॉम्प्ट या संसाधन द्वारा उपयोग की जाने वाली उसी प्राधिकरण सीमा को लागू करें।developmentऔर stagingकेवल एक ऑपरेटर ही प्राप्त कर सकता हैproduction. .

उत्पादन को पूरा करने के लिए निम्नलिखित आवश्यकताएं भी होती हैंः

  • इनपुट सत्यापन;
  • कॉल करने वाले के लिए फ़िल्टरिंग;
  • ग्राहक में डिबोंसिंग का अनुरोध करना;
  • सर्वर में दर सीमा;
  • सीमित परिणाम गणना;
  • लॉग जो संवेदनशील सुझाव मानों को उजागर नहीं करते हैं।

पूरा करना सहायता है, खोज के लिए नहीं।

दो त्रुटि परतें

प्रोटोकॉल त्रुटियों को उपकरण निष्पादन त्रुटियों से अलग रखें।

जब MCP अनुरोध सही ढंग से भेजा नहीं जा सकता है तो JSON-RPC त्रुटि का उपयोग करेंः

  • अज्ञात उपकरण का नाम;
  • गलत रूप से तैयार अनुरोध आकार;
  • अनुरोध मेटाडेटा जो गायब हैं;
  • अमान्य कर्सर।

के साथ एक पूर्ण उपकरण परिणाम का उपयोग करेंisError: trueजब कॉल उपकरण तक पहुंच गया और उपकरण एक कार्रवाई योग्य विफलता की सूचना देता हैः

  • रिपोर्ट स्रोत उपलब्ध नहीं है;
  • एक तिथि समर्थित सीमा से बाहर है;
  • एक व्यावसायिक नियम अनुरोधित ऑपरेशन को अस्वीकार करता है।

मॉडल अक्सर एक उपकरण निष्पादन त्रुटि को ठीक कर सकते हैं। वे एक सर्वर को ठीक नहीं कर सकते हैं जिसने अपने स्वयं के आउटपुट स्कीम का उल्लंघन किया है।

यदि उपकरण एक आउटपुट योजना घोषित करता है, तो उस के भीतर एक कार्रवाई योग्य विफलता मॉडल

स्कीम. नमूना route_reportविफलता अपने अनुरोधित क्षेत्र वापस करता है

accepted: false, मानव-पठनीय त्रुटि पाठ के साथ और isError: true. .

इसे बनाओ

code/main.pyपायथन मानक पुस्तकालय के साथ सीमा के दोनों ओर का निर्माण करता है।

सर्वर निष्पादित करता हैः

  • अनुरोध पर MCP मेटाडेटा सत्यापन;
  • server/discoverउपकरण और पूर्णता क्षमताओं के साथ;
  • निर्धारक tools/listपृष्ठीकरण;
  • चार उपकरण वर्णक, जिसमें एक को अस्वीकार करना होगा;
  • सरणी संरचित आउटपुट;
  • प्रत्येक वर्तमान उपकरण सामग्री ब्लॉक प्रकार;
  • एक स्ट्रीम करने योग्य HTTP समानता गेट जो मान्यता प्राप्त पैरामीटर हेडर को डिकोड करता है और

HTTP पर लौटता है 400प्लस JSON-RPC -32020असंगतता पर;

  • अधिकृत और दर-सीमित पूर्णता।

ग्राहक द्वारा लागू किया जाता हैः

  • वर्णक प्रवेश;
  • पूर्ण वृक्षx-mcp-headerप्लेसमेंट वैधता और संवेदनशील क्षेत्र नीति;
  • सटीक स्पष्ट रूप से दिखाई देने वाले ASCII या base64 UTF-8 मान कोडिंग;
  • एक अपारदर्शी कर्सर लूप जो एक खाली स्ट्रिंग का अनुसरण करता है;
  • तर्क और परिणाम सत्यापन;
  • सामग्री ब्लॉक सत्यापन;
  • शीर्षक लेखा परीक्षा घटनाएँ जिनमें नाम हैं लेकिन मूल्य नहीं हैं।

जानबूझकर असुरक्षित वर्णक शिक्षण डेटा है। यह साबित करता है कि एक अस्वीकृत उपकरण वैध उपकरणों को लोड करने से नहीं रोकता है।

इसका प्रयोग करें

भंडारण मूल सेः

bashcd phases/13-tools-and-protocols/28-mcp-tool-contracts-and-content/code
python3 main.py
python3 -m unittest discover tests -v

डेमो प्रिंट्स स्वीकार किए गए उपकरण, अस्वीकार वर्णक, दोनों पेजिंग

अनुरोध, संरचित सरणी सामग्री, सामग्री ब्लॉक प्रकार, दर्पण हेडर

नाम, चाहे आवश्यक मूल्य एन्कोडिंग, HTTP समता स्थिति, और

कॉलर-फिल्टर्ड समापन मान।

इंटरैक्टिव लैब

खुला code/main.pyऔर पता लगाएं TOOLS. .

  1. परिवर्तनtag_catalog.outputSchema.typeसेarrayobject. .
  2. डेमो चलाएं. क्लाइंट को वापस किए गए सरणी को अस्वीकार करना चाहिए.
  3. योजना को बहाल करें।
  4. पहले पृष्ठ को रखें nextCursorजैसे "", फिर अंतिम पृष्ठ वापस करें

nextCursor: Noneक्षेत्र को छोड़ने के बजाय।

  1. परीक्षण चलाओ और कर्सर निशान की तुलना करें।
  2. जोड़ें x-mcp-header: "Authorization"एक स्ट्रिंग संपत्ति के लिए।
  3. पुष्टि वर्णक प्रवेश उसे आह्वान से पहले अस्वीकार करता है।
  4. कोशिश करोregionयूनिकोड, एक नई रेखा, आसपास के स्थानों वाले मान और

शाब्दिक पाठ =?base64?SGVsbG8=?=. प्रत्येक जारी हेडर को डिकोड करें और साबित करें

मूल मूल्य ठीक से जीवित रहता है।

  1. टिप्पणी को नीचे ले जाएँ oneOf,items, या एक $refपरिभाषा। पुष्टि

प्रत्येक वर्णक को अस्वीकार कर दिया जाता है भले ही डेमो द्वारा उस शाखा का कभी उपयोग नहीं किया जाता है।

  1. मान्यता प्राप्त हेडर को हटाएं या इसका डिकोड मान बदलें. HTTP की पुष्टि करें

सीमा रिटर्न की स्थिति 400और JSON-RPC कोड -32020. .

मुद्दा JSON आकार याद करने के लिए नहीं है. यह प्रत्येक गेट की सीमा पर विफलता देखने के लिए है जो इसे मालिक है.

अभ्यास प्रयोगशाला

अनुबंध प्रयोगशाला को एक search_evidenceउपकरण।

आवश्यकताएँः

  1. इसकी इनपुट योजना स्वीकार करती है query,limit, और एक सुरक्षित regionमार्ग क्षेत्र।
  2. इसकी आउटपुट स्कीम के साथ वस्तुओं की एक सरणी हैuri,titleऔर score. .
  3. परिणाम में प्रति आइटम संगतता पाठ और संसाधन लिंक शामिल है।
  4. तर्क अज्ञात गुणों को अस्वीकार करते हैं।
  5. limitआवेदन की वैधता से सीमित है।
  6. एक URI तक पहुँच के बिना एक कॉल करने वाला कभी भी उस URI को पूरा या टूल आउटपुट के माध्यम से नहीं देखता है।
  7. परीक्षणों में एक असंगत स्कोर, एक अमान्य शीर्षक टिप्पणी और दो पृष्ठों की सूची शामिल है।
  8. हेडर-मूल्य परीक्षण दृश्यमान ASCII, यूनिकोड, नियंत्रण वर्णों को कवर करते हैं,

सफेद स्थान, sentinel-looking पाठ, और दोनों जावास्क्रिप्ट-सुरक्षित पूर्णांक सीमाओं.

  1. HTTP फिक्स्चर केस-असंवेदनशील हेडर नामों को स्वीकार करता है लेकिन गायब को अस्वीकार करता है

या स्थिति के साथ असंगत मान्यता प्राप्त मूल्य 400और कोड -32020. .

शिप की गई कलाकृतियाँ

outputs/skill-mcp-contract-reviewer.mdएक फ्लैट, पुनः प्रयोज्य समीक्षा कौशल है। इसे एक उपकरण वर्णक, नमूना परिणाम, पृष्ठीकरण व्यवहार और समापन नीति दें। यह एक प्रवेश निर्णय, परिणाम सत्यापन योजना, हेडर नीति और ठोस विफलता परीक्षण लौटाता है।

जाँचें

जब ये कथन सच होते हैं तो पाठ पूरा हो जाता हैः

  • tools/listदोहराए गए कॉल पर एक ही तार्किक क्रम लौटाता है।
  • ग्राहक दूसरी मांग करता है जब nextCursorहै "". .
  • असुरक्षित संवेदनशील हेडर वर्णक को बाहर रखा गया है जबकि अन्य उपकरण उपलब्ध रहते हैं।
  • एक सरणी अपनी सरणी आउटपुट योजना को पारित करती है।
  • एक वस्तु उसी सरणी योजना में विफल रहता है।
  • त्रुटि परिणाम प्रकाशित आउटपुट योजना को छोड़ या उल्लंघन नहीं कर सकते हैं।
  • पाठ, छवि, ऑडियो, संसाधन लिंक और एम्बेडेड संसाधन ब्लॉक मान्य करते हैं।
  • हेडर ऑडिट घटनाओं में नाम और कोई मान नहीं होते हैं।
  • सादा दृश्यमान ASCII सादा रहता है; यूनिकोड, नियंत्रण, पैड, खाली, और

sentinel-देखने वाले मानों सटीक आधार 64 UTF-8 एन्कोडिंग के माध्यम से वापसी-यात्रा।

  • जावास्क्रिप्ट सुरक्षित सीमा के बाहर दर्पण पूर्णांक अस्वीकार कर दिया जाता है।
  • में संक्षेपoneOf,items, घोंसले हुए वस्तुएँ, $refपरिभाषाएँ, या

प्रवेश के दौरान आउटपुट योजनाओं को अस्वीकार कर दिया जाता है।

  • केस-असंवेदनशील मान्यता प्राप्त हेडर नाम केवल तभी गुजरते हैं जब डिकोड मान

शरीर से बिल्कुल मेल खाता है; गायब या असंगत प्रतियां HTTP उत्पन्न 400

और JSON-RPC -32020. .

  • विश्लेषक पूर्णता कभी नहीं लौटता production. .
  • उपकरण विफलता का उपयोग करता है isError: true; एक गलत रूप से प्रोटोकॉल कॉल JSON-RPC का उपयोग करता है error. .

उत्पादन विफलता मोड

FailureWhat the learner seesCorrect response
Client assumes object outputValid arrays fail or are silently wrappedValidate against the published schema without object-only types
Empty cursor treated as falseFinal pages disappearContinue whenever nextCursor is present and non-null
Sensitive value mirroredSecret appears in proxy, WAF, or trace dataReject the descriptor and keep secrets in protected request data
Raw Unicode or whitespace mirroredGateway and origin disagree or the value is normalizedUse exact base64 UTF-8 sentinel encoding and compare after decoding
Annotation hidden in a schema branchA client misses routing metadata during admissionTraverse the entire schema tree and allow only direct top-level properties
Large integer mirroredJavaScript intermediary rounds the routing valueReject values outside the JavaScript safe integer range
Header and body disagreeGateway routes one target while the origin executes anotherReject before dispatch with HTTP 400 and JSON-RPC -32020
Output schema ignoredDownstream code consumes corrupt structureValidate before model or application use
Resource link trusted automaticallyCaller follows an unauthorized URIReauthorize every resource read
Completion shares global suggestionsHidden tenant names leakFilter by caller, reference, and authorization
Tool annotations treated as policyDestructive operation bypasses confirmationEnforce authorization and approval outside annotations
One malformed tool breaks discoveryEntire server becomes unavailableReject the bad descriptor and admit valid tools independently

कैपस्टोन कनेक्शन

चरण 13 के कैपस्टोन को एक गेटवे की आवश्यकता है जो कई सर्वरों से उपकरणों को मिला सकता है। यह पाठ इसके प्रवेश कोर प्रदान करता है।

कलाकृतियों का उपयोग चार टुकड़ों के लिए ग्रेड करने के लिए capstone सबूतः

  • निर्धारात्मक और पूर्ण पृष्ठबद्ध खोज;
  • मॉडल के जोखिम से पहले वर्णक सत्यापन;
  • सत्यापित संरचित आउटपुट प्लस सीमित सामग्री ब्लॉक;
  • अनुमतियों की सीमाओं को बनाए रखने वाले पूर्ण और रूटिंग मेटाडेटा।

सफल गेटवे से गेटवे संगतता का दावा न करें tools/callवर्णक, पृष्ठ ट्रैक, स्वीकार किए गए उपकरण सेट, अस्वीकार किए गए उपकरण सेट, और एक सत्यापित परिणाम कैप्चर करें।

प्रमुख शर्तें

TermMeaning
inputSchemaJSON Schema object defining accepted tool arguments
outputSchemaOptional JSON Schema defining structuredContent
structuredContentAny JSON value produced by a tool result
Content blockTyped text, image, audio, resource link, or embedded resource
x-mcp-headerSchema annotation that mirrors a primitive argument into Streamable HTTP metadata
Opaque cursorServer-issued pagination token whose value the client does not interpret
Completion referencePrompt name or resource URI/template whose argument is being completed
AdmissionClient decision to expose or reject a discovered descriptor

आगे पढ़ना

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.