(इस पाठ का वीडियो देखने के लिए ऊपर दी गई छवि पर क्लिक करें)
Model Context Protocol (MCP) एक शक्तिशाली, मानकीकृत फ्रेमवर्क है जो बड़े भाषा मॉडलों (LLMs) और बाहरी उपकरणों, अनुप्रयोगों, और डेटा स्रोतों के बीच संचार को अनुकूलित करता है। यह गाइड आपको MCP के मूलभूत सिद्धांतों से परिचित कराएगा। आप इसके क्लाइंट-सर्वर आर्किटेक्चर, आवश्यक घटकों, संचार तंत्र, और कार्यान्वयन सर्वोत्तम प्रथाओं के बारे में जानेंगे।
-
स्पष्ट उपयोगकर्ता सहमति: सभी डेटा पहुंच और संचालन के लिए निष्पादन से पहले स्पष्ट उपयोगकर्ता अनुमोदन आवश्यक है। उपयोगकर्ताओं को स्पष्ट रूप से समझना चाहिए कि कौन सा डेटा एक्सेस किया जाएगा और कौन से कार्य किए जाएंगे, अनुमति और प्राधिकरण पर सूक्ष्म नियंत्रण के साथ।
-
डेटा गोपनीयता सुरक्षा: उपयोगकर्ता डेटा केवल स्पष्ट सहमति के साथ प्रकट किया जाता है और पूरी इंटरैक्शन अवधि में मजबूत पहुंच नियंत्रण द्वारा सुरक्षित रखा जाना चाहिए। कार्यान्वयन अवैध डेटा प्रसारण को रोकना और कड़ा गोपनीयता सीमा बनाए रखना चाहिए।
-
उपकरण निष्पादन सुरक्षा: प्रत्येक टूल कॉल के लिए प्रयोगकर्ता की स्पष्ट सहमति आवश्यक है, जिसमें टूल की कार्यक्षमता, पैरामीटर, और संभावित प्रभाव की स्पष्ट समझ हो। मजबूत सुरक्षा सीमाएं अनपेक्षित, असुरक्षित, या दुर्भावनापूर्ण टूल निष्पादन को रोकें।
-
ट्रांसपोर्ट लेयर सुरक्षा: सभी संचार चैनलों को उपयुक्त एन्क्रिप्शन और प्रमाणीकरण तंत्र का उपयोग करना चाहिए। रिमोट कनेक्शन सुरक्षित ट्रांसपोर्ट प्रोटोकॉल और उचित क्रेडेंशियल प्रबंधन लागू करें।
- अनुमति प्रबंधन: सूक्ष्म अनुमति प्रणालियाँ लागू करें जो उपयोगकर्ताओं को नियंत्रित करने देती हैं कि कौन से सर्वर, टूल्स, और संसाधन उपलब्ध हैं
- प्रमाणीकरण और प्राधिकरण: सुरक्षित प्रमाणीकरण विधियों (OAuth, API keys) का उपयोग उचित टोकन प्रबंधन और समाप्ति के साथ करें
- इनपुट सत्यापन: परिभाषित स्कीमाओं के अनुसार सभी पैरामीटर और डेटा इनपुट को सत्यापित करें जिससे इंजेक्शन हमलों को रोका जा सके
- ऑडिट लॉगिंग: सुरक्षा निगरानी और अनुपालन के लिए सभी संचालन के व्यापक लॉग बनाए रखें
यह पाठ मॉडल संदर्भ प्रोटोकॉल (MCP) इकोसिस्टम की मूलभूत वास्तुकला और घटकों की पड़ताल करता है। आप MCP इंटरैक्शन को संचालित करने वाले क्लाइंट-सर्वर आर्किटेक्चर, प्रमुख घटकों, और संचार तंत्रों के बारे में जानेंगे।
इस पाठ के अंत तक, आप:
- MCP क्लाइंट-सर्वर आर्किटेक्चर को समझेंगे।
- होस्ट्स, क्लाइंट्स, और सर्वर्स की भूमिकाओं और जिम्मेदारियों की पहचान करेंगे।
- MCP को एक लचीले एकीकरण स्तर बनाने वाली मूल विशेषताओं का विश्लेषण करेंगे।
- MCP इकोसिस्टम में सूचना का प्रवाह समझेंगे।
- .NET, जावा, पाइथन, और जावास्क्रिप्ट में कोड उदाहरणों के माध्यम से व्यावहारिक अंतर्दृष्टि प्राप्त करेंगे।
MCP इकोसिस्टम क्लाइंट-सर्वर मॉडल पर आधारित है। यह मॉड्यूलर संरचना एआई अनुप्रयोगों को उपकरणों, डेटाबेस, API, और सन्दर्भ संसाधनों के साथ प्रभावी ढंग से बातचीत करने की अनुमति देती है। आइए इस वास्तुकला को इसके मुख्य घटकों में विभाजित करें।
MCP अपनी जड़ में क्लाइंट-सर्वर आर्किटेक्चर का पालन करता है जहाँ एक होस्ट एप्लिकेशन कई सर्वरों से कनेक्ट हो सकता है:
flowchart LR
subgraph "आपका कंप्यूटर"
Host["MCP के साथ होस्ट (विज़ुअल स्टूडियो, VS कोड, IDEs, टूल्स)"]
S1["MCP सर्वर A"]
S2["MCP सर्वर B"]
S3["MCP सर्वर C"]
Host <-->|"MCP प्रोटोकॉल"| S1
Host <-->|"MCP प्रोटोकॉल"| S2
Host <-->|"MCP प्रोटोकॉल"| S3
S1 <--> D1[("स्थानीय\डेटा स्रोत A")]
S2 <--> D2[("स्थानीय\डेटा स्रोत B")]
end
subgraph "इंटरनेट"
S3 <-->|"वेब API"| D3[("रिमोट\सेवाएं")]
end
- MCP Hosts: VSCode, Claude Desktop, IDEs, या AI टूल जैसे प्रोग्राम जो MCP के माध्यम से डेटा तक पहुँचना चाहते हैं
- MCP Clients: प्रोटोकॉल क्लाइंट जो सर्वरों के साथ 1:1 कनेक्शन बनाए रखते हैं
- MCP Servers: हल्के प्रोग्राम जो मानकीकृत मॉडल संदर्भ प्रोटोकॉल के माध्यम से विशिष्ट क्षमताएँ प्रदान करते हैं
- स्थानीय डेटा स्रोत: आपके कंप्यूटर की फाइलें, डेटाबेस, और सेवाएँ जिन्हें MCP सर्वर सुरक्षित रूप से एक्सेस कर सकते हैं
- रिमोट सेवाएं: इंटरनेट पर उपलब्ध बाहरी सिस्टम जिन्हें MCP सर्वर API के माध्यम से कनेक्ट कर सकते हैं
MCP प्रोटोकॉल एक विकसित होता हुआ मानक है जो तारीख-आधारित संस्करण (YYYY-MM-DD फ़ॉर्मेट) का उपयोग करता है। वर्तमान प्रोटोकॉल संस्करण 2025-11-25 है। आप प्रोटोकॉल विनिर्देश में नवीनतम अपडेट देख सकते हैं।
मॉडल संदर्भ प्रोटोकॉल (MCP) में, Hosts वे AI अनुप्रयोग हैं जो उपयोगकर्ताओं के लिए प्रोटोकॉल के साथ बातचीत का मुख्य इंटरफ़ेस होते हैं। होस्ट कई MCP सर्वरों से कनेक्शन को समन्वित और प्रबंधित करते हैं, प्रत्येक सर्वर कनेक्शन के लिए समर्पित MCP क्लाइंट बनाते हैं। होस्ट्स के उदाहरण:
- AI एप्लिकेशन: Claude Desktop, Visual Studio Code, Claude Code
- डेवलपमेंट वातावरण: IDEs और कोड संपादक जिनमें MCP एकीकरण होता है
- कस्टम एप्लिकेशन: विशेष AI एजेंट और टूल्स
Hosts वे एप्लिकेशन हैं जो AI मॉडल इंटरैक्शन का समन्वय करते हैं। वे:
- AI मॉडल का संचालन: LLMs को निष्पादित या उनके साथ इंटरैक्ट करते हुए प्रतिक्रिया उत्पन्न करना और AI वर्कफ़्लोज़ का समन्वय करना
- क्लाइंट कनेक्शन प्रबंधन: प्रत्येक MCP सर्वर कनेक्शन के लिए एक MCP क्लाइंट बनाना और बनाए रखना
- यूजर इंटरफ़ेस नियंत्रण: वार्तालाप प्रवाह, उपयोगकर्ता इंटरैक्शन, और प्रतिक्रिया प्रस्तुति को संभालना
- सुरक्षा लागू करना: अनुमतियाँ, सुरक्षा प्रतिबंध, और प्रमाणीकरण नियंत्रित करना
- उपयोगकर्ता सहमति संभालना: डेटा साझा करने और टूल निष्पादन के लिए उपयोगकर्ता की मंजूरी प्रबंधित करना
Clients वे आवश्यक घटक हैं जो होस्ट्स और MCP सर्वरों के बीच समर्पित एक-से-एक कनेक्शन बनाए रखते हैं। प्रत्येक MCP क्लाइंट को होस्ट द्वारा एक विशिष्ट MCP सर्वर से कनेक्ट होने के लिए उत्पन्न किया जाता है, जिससे संगठित और सुरक्षित संचार चैनल सुनिश्चित होते हैं। एकाधिक क्लाइंट्स होस्ट्स को एक साथ कई सर्वरों से जुड़ने की अनुमति देते हैं।
Clients होस्ट एप्लिकेशन के अंदर कनेक्टर घटक हैं। वे:
- प्रोटोकॉल संचार: सर्वरों को प्रॉम्प्ट और निर्देशों के साथ JSON-RPC 2.0 अनुरोध भेजना
- क्षमता वार्ता: प्रारंभिक चरण में सर्वर के साथ समर्थित विशेषताओं और प्रोटोकॉल संस्करणों पर चर्चा करना
- टूल निष्पादन: मॉडलों से टूल निष्पादन अनुरोध प्रबंधित करना और प्रतिक्रियाओं को संसाधित करना
- रीयल-टाइम अपडेट्स: सर्वरों से नोटिफिकेशन और वास्तविक समय अपडेट संभालना
- प्रतिक्रिया प्रसंस्करण: उपयोगकर्ताओं को दिखाने के लिए सर्वर प्रतिक्रियाओं को संसाधित और स्वरूपित करना
Servers ऐसे प्रोग्राम हैं जो MCP क्लाइंट्स को संदर्भ, उपकरण, और क्षमताएं प्रदान करते हैं। वे स्थानीय रूप से (होस्ट के समान मशीन पर) या दूरस्थ रूप से (बाहरी प्लेटफॉर्म पर) निष्पादित हो सकते हैं, और क्लाइंट अनुरोधों को संभालने तथा संरचित प्रतिक्रियाएँ प्रदान करने के लिए उत्तरदायी होते हैं। सर्वर मानकीकृत मॉडल संदर्भ प्रोटोकॉल के माध्यम से विशिष्ट कार्यक्षमता प्रदान करते हैं।
Servers सेवाएं हैं जो संदर्भ और क्षमताएं प्रदान करती हैं। वे:
- फीचर पंजीकरण: ग्राहकों को उपलब्ध प्रिमिटिव्स (संसाधन, प्रॉम्प्ट, टूल) पंजीकृत और प्रदर्शित करना
- अनुरोध प्रेषण: क्लाइंट्स से टूल कॉल, संसाधन अनुरोध, और प्रॉम्प्ट अनुरोध प्राप्त करना और निष्पादित करना
- संदर्भ प्रदान करना: मॉडल प्रतिक्रियाओं को बढ़ाने के लिए संदर्भ जानकारी और डेटा प्रदान करना
- स्थिति प्रबंधन: सत्र स्थिति बनाए रखना और आवश्यकतानुसार स्थिति-आधारित इंटरैक्शन संभालना
- रीयल-टाइम सूचनाएं: कनेक्टेड क्लाइंट्स को क्षमता परिवर्तनों और अपडेट के बारे में सूचनाएं भेजना
सर्वर किसी के द्वारा विकसित किए जा सकते हैं ताकि मॉडल क्षमताओं को विशिष्ट कार्यक्षमता के साथ बढ़ाया जा सके, और वे स्थानीय तथा रिमोट दोनों तैनाती परिदृश्यों का समर्थन करते हैं।
Model Context Protocol (MCP) में सर्वर तीन मुख्य प्रिमिटिव्स प्रदान करते हैं जो ग्राहकों, होस्ट्स, और भाषा मॉडलों के बीच समृद्ध इंटरैक्शन के मूलभूत निर्माण खण्डों को परिभाषित करते हैं। ये प्रिमिटिव्स प्रोटोकॉल के माध्यम से उपलब्ध संदर्भ जानकारी और क्रियाओं के प्रकार निर्दिष्ट करते हैं।
MCP सर्वर निम्नलिखित तीन मुख्य प्रिमिटिव्स में से किसी भी संयोजन को प्रकट कर सकते हैं:
Resources वे डेटा स्रोत होते हैं जो AI अनुप्रयोगों को संदर्भ जानकारी प्रदान करते हैं। वे स्थिर या गतिशील सामग्री होते हैं जो मॉडल की समझ और निर्णय लेने में सहायता करते हैं:
- संदर्भ डेटा: AI मॉडल की खपत के लिए संरचित सूचना और संदर्भ
- ज्ञान आधार: दस्तावेज भंडार, लेख, मैनुअल, और शोध पत्र
- स्थानीय डेटा स्रोत: फाइलें, डेटाबेस, और स्थानीय सिस्टम सूचना
- बाहरी डेटा: API प्रतिक्रियाएँ, वेब सेवाएँ, और दूरस्थ सिस्टम डेटा
- गतिशील सामग्री: बाहरी परिस्थितियों के आधार पर अपडेट होने वाला रीयल-टाइम डेटा
संसाधन URI द्वारा पहचाने जाते हैं और resources/list के माध्यम से खोज और resources/read के माध्यम से प्राप्त किया जा सकता है:
file://documents/project-spec.md
database://production/users/schema
api://weather/current
Prompts पुन: उपयोग योग्य टेम्पलेट्स हैं जो भाषा मॉडलों के साथ इंटरैक्शन को संरचित करने में मदद करते हैं। ये मानकीकृत बातचीत पैटर्न और टेम्पलेट वर्कफ़्लोज़ प्रदान करते हैं:
- टेम्पलेट-आधारित इंटरैक्शन: पूर्व-संरचित संदेश और बातचीत के आरंभकर्ता
- वर्कफ़्लो टेम्प्लेट्स: सामान्य कार्यों और इंटरैक्शनों के लिए मानकीकृत अनुक्रम
- फ्यू-शॉट उदाहरण: मॉडल निर्देश के लिए उदाहरण-आधारित टेम्पलेट्स
- सिस्टम प्रॉम्प्ट्स: मॉडल व्यवहार और संदर्भ को परिभाषित करने वाले मूलभूत प्रॉम्प्ट्स
- गतिशील टेम्प्लेट्स: पैरामीट्राइज्ड प्रॉम्प्ट जो विशिष्ट संदर्भों के अनुरूप हो सकते हैं
प्रॉम्प्ट्स परिवर्ती प्रतिस्थापन का समर्थन करते हैं और prompts/list से खोजे जा सकते हैं और prompts/get के साथ प्राप्त किए जा सकते हैं:
Generate a {{task_type}} for {{product}} targeting {{audience}} with the following requirements: {{requirements}}Tools ऐसे निष्पादन योग्य फ़ंक्शन हैं जिन्हें AI मॉडल विशिष्ट क्रियाएं करने के लिए कॉल कर सकते हैं। वे MCP इकोसिस्टम के "क्रियाओं" का प्रतिनिधित्व करते हैं, जो मॉडल को बाहरी प्रणालियों के साथ इंटरैक्ट करने में सक्षम बनाते हैं:
- निष्पादन योग्य क्रियाएं: विशिष्ट पैरामीटरों के साथ कॉल किये जाने वाले पृथक ऑपरेशन
- बाहरी सिस्टम एकीकरण: API कॉल, डेटाबेस क्वेरी, फाइल ऑपरेशन, गणना
- अद्वितीय पहचान: प्रत्येक टूल का विशिष्ट नाम, वर्णन, और पैरामीटर स्कीमा होता है
- संरचित इनपुट/आउटपुट: टूल मान्य पैरामीटर स्वीकार करते हैं और संरचित, टाइप किए गए प्रतिक्रियाएँ लौटाते हैं
- क्रिया क्षमता: मॉडल को वास्तविक दुनिया में क्रियाएँ करने और लाइव डेटा प्राप्त करने की अनुमति देते हैं
टूल्स पैरामीटर सत्यापन के लिए JSON स्कीमा के साथ परिभाषित होते हैं और tools/list के माध्यम से खोजे जाते हैं तथा tools/call के द्वारा निष्पादित किए जाते हैं। टूल्स बेहतर UI प्रस्तुति के लिए अतिरिक्त मेटाडेटा के रूप में आइकन भी शामिल कर सकते हैं।
टूल एनोटेशन: टूल्स व्यवहार एनोटेशन जैसे readOnlyHint, destructiveHint का समर्थन करते हैं जो बताते हैं कि टूल केवल-पढ़ने वाला है या विनाशकारी है, जिससे क्लाइंट्स को टूल निष्पादन के लिए सूचित निर्णय लेने में मदद मिलती है।
उदाहरण टूल परिभाषा:
server.tool(
"search_products",
{
query: z.string().describe("Search query for products"),
category: z.string().optional().describe("Product category filter"),
max_results: z.number().default(10).describe("Maximum results to return")
},
async (params) => {
// खोज निष्पादित करें और संरचित परिणाम लौटाएं
return await productService.search(params);
}
);Model Context Protocol (MCP) में, clients ऐसे प्रिमिटिव्स प्रकट कर सकते हैं जो सर्वरों को होस्ट एप्लिकेशन से अतिरिक्त क्षमताएं अनुरोध करने की अनुमति देते हैं। ये क्लाइंट-पक्ष प्रिमिटिव्स सरवर कार्यान्वयन को अधिक समृद्ध और इंटरैक्टिव बनाते हैं जो AI मॉडल क्षमताओं और उपयोगकर्ता इंटरैक्शन तक पहुँच सकते हैं।
Sampling सर्वरों को क्लाइंट के AI एप्लिकेशन से भाषा मॉडल पूर्णताएँ मांगने की अनुमति देता है। यह प्रिमिटिव सर्वरों को अपने मॉडल निर्भरताओं को एम्बेड किए बिना LLM क्षमताओं तक पहुंचने के लिए सक्षम बनाता है:
- मॉडल-स्वतंत्र पहुंच: सर्वर बिना LLM SDK शामिल किए या मॉडल पहुँच प्रबंधित किए पूर्णताएँ मांग सकते हैं
- सर्वर-प्रेरित AI: सर्वरों को क्लाइंट के AI मॉडल का उपयोग कर स्वायत्त रूप से सामग्री उत्पन्न करने में सक्षम बनाता है
- पुनरावृत्त LLM इंटरैक्शन: जटिल परिदृश्यों का समर्थन करता है जहां सर्वरों को प्रसंस्करण के लिए AI सहायता की जरूरत होती है
- गतिशील सामग्री निर्माण: होस्ट के मॉडल के उपयोग से संदर्भगत प्रतिक्रियाएं बनाने की सुविधा देता है
- टूल कॉलिंग समर्थन: सर्वर सैंपलिंग के दौरान क्लाइंट के मॉडल को टूल को कॉल करने के लिए
toolsऔरtoolChoiceपैरामीटर शामिल कर सकते हैं
सैंपलिंग sampling/complete विधि के माध्यम से शुरू किया जाता है, जहाँ सर्वर क्लाइंट को पूर्णता अनुरोध भेजते हैं।
Roots क्लाइंट्स को एक मानकीकृत तरीका प्रदान करते हैं जिससे वे सर्वरों को फ़ाइल सिस्टम सीमाएं दिखा सकते हैं, जिससे सर्वर समझ सकते हैं कि उन्हें किन निर्देशिकाओं और फ़ाइलों तक पहुंच है:
- फ़ाइल सिस्टम सीमाएं: उस सीमा को परिभाषित करें जहाँ सर्वर फ़ाइल सिस्टम के भीतर संचालन कर सकते हैं
- पहुंच नियंत्रण: सर्वरों को समझने में मदद करें कि उन्हें किन निर्देशिकाओं और फ़ाइलों तक अनुमति है
- गतिशील अपडेट्स: जब रूट्स की सूची बदलती है तो क्लाइंट सर्वरों को सूचित कर सकते हैं
- URI-आधारित पहचान: रूट्स
file://URI का उपयोग करते हैं जो पहुंच योग्य निर्देशिकाओं और फ़ाइलों की पहचान करते हैं
रूट्स को roots/list विधि के माध्यम से खोजा जाता है, और क्लाइंट notifications/roots/list_changed भेजते हैं जब रूट्स बदलते हैं।
Elicitation सर्वरों को क्लाइंट इंटरफ़ेस के माध्यम से उपयोगकर्ताओं से अतिरिक्त जानकारी या पुष्टि मांगने की अनुमति देता है:
- उपयोगकर्ता इनपुट अनुरोध: जब टूल निष्पादन के लिए अतिरिक्त जानकारी की आवश्यकता हो तो सर्वर मांग सकते हैं
- पुष्टि संवाद: संवेदनशील या प्रभावशाली संचालन के लिए उपयोगकर्ता मंजूरी माँगना
- इंटरैक्टिव वर्कफ़्लोज़: चरण-दर-चरण उपयोगकर्ता इंटरैक्शन बनाने की अनुमति देना
- गतिशील पैरामीटर संग्रह: टूल निष्पादन के दौरान गुम या वैकल्पिक पैरामीटर जुटाना
उद्घोषणा अनुरोध elicitation/request विधि का उपयोग करके क्लाइंट के इंटरफ़ेस के माध्यम से उपयोगकर्ता इनपुट एकत्रित करने के लिए किया जाता है।
URL मोड उद्घोषणा: सर्वर URL-आधारित उपयोगकर्ता इंटरैक्शन भी अनुरोध कर सकते हैं, जिससे वे प्रमाणीकरण, पुष्टि, या डेटा प्रविष्टि के लिए उपयोगकर्ताओं को बाहरी वेब पृष्ठों पर निर्देशित कर सकते हैं।
Logging सर्वरों को क्लाइंट्स को संरचित लॉग संदेश भेजने की अनुमति देता है, जो डिबगिंग, निगरानी, और परिचालन दृश्यता के लिए आवश्यक हैं:
- डिबगिंग समर्थन: सर्वर को त्रुटि निवारण के लिए विस्तृत निष्पादन लॉग प्रदान करने में सक्षम बनाना
- परिचालन निगरानी: क्लाइंट को स्थिति अपडेट और प्रदर्शन मेट्रिक्स भेजना
- त्रुटि रिपोर्टिंग: विस्तृत त्रुटि संदर्भ और डायग्नोस्टिक जानकारी प्रदान करना
- ऑडिट ट्रेल्स: सर्वर संचालन और निर्णयों के व्यापक लॉग बनाने
लॉगिंग संदेश सर्वर संचालन में पारदर्शिता प्रदान करने और डिबगिंग को सक्षम बनाने के लिए क्लाइंट्स को भेजे जाते हैं।
मॉडल संदर्भ प्रोटोकॉल (MCP) होस्ट्स, क्लाइंट्स, सर्वर, और मॉडलों के बीच सूचना के एक संरचित प्रवाह को परिभाषित करता है। इस प्रवाह को समझना यह स्पष्ट करता है कि उपयोगकर्ता अनुरोध कैसे प्रसंस्कृत होते हैं और कैसे बाहरी टूल्स और डेटा मॉडल प्रतिक्रियाओं में एकीकृत होते हैं।
-
होस्ट कनेक्शन आरंभ करता है
होस्ट एप्लिकेशन (जैसे IDE या चैट इंटरफ़ेस) आमतौर पर STDIO, WebSocket या अन्य समर्थित ट्रांसपोर्ट के माध्यम से MCP सर्वर से कनेक्शन स्थापित करता है। -
क्षमता बातचीत
क्लाइंट (होस्ट में एम्बेडेड) और सर्वर अपने समर्थित फीचर्स, टूल्स, संसाधनों, और प्रोटोकॉल संस्करणों के बारे में जानकारी का आदान-प्रदान करते हैं। इससे दोनों पक्ष समझते हैं कि सत्र के लिए कौन-कौन सी क्षमताएँ उपलब्ध हैं। -
उपयोगकर्ता अनुरोध
उपयोगकर्ता होस्ट के साथ इंटरैक्ट करता है (जैसे प्रॉम्प्ट या कमांड दर्ज करता है)। होस्ट इस इनपुट को जमा करता है और इसे प्रोसेसिंग के लिए क्लाइंट को भेजता है। -
संसाधन या टूल उपयोग
- क्लाइंट मॉडल की समझ को समृद्ध करने के लिए सर्वर से अतिरिक्त संदर्भ या संसाधन (जैसे फाइलें, डेटाबेस प्रविष्टियाँ, या ज्ञान आधार लेख) मांग सकता है।
- यदि मॉडल निर्धारित करता है कि किसी टूल की आवश्यकता है (जैसे डेटा प्राप्त करना, गणना करना, या API कॉल करना), तो क्लाइंट टूल नाम और पैरामीटर निर्दिष्ट करते हुए सर्वर को टूल इनवोकेशन अनुरोध भेजता है।
-
सर्वर निष्पादन
सर्वर संसाधन या टूल अनुरोध प्राप्त करता है, आवश्यक ऑपरेशंस (जैसे फ़ंक्शन चलाना, डेटाबेस क्वेरी करना, या फाइल पुनः प्राप्त करना) करता है, और परिणामों को संरचित फॉर्मेट में क्लाइंट को लौटाता है। -
प्रतिक्रिया निर्माण
क्लाइंट सर्वर की प्रतिक्रियाएँ (संसाधन डेटा, टूल आउटपुट, आदि) को चल रहे मॉडल इंटरैक्शन में शामिल करता है। मॉडल इस जानकारी का उपयोग व्यापक और संदर्भात्मक रूप से उपयुक्त प्रतिक्रिया उत्पन्न करने के लिए करता है। -
परिणाम प्रस्तुति
होस्ट क्लाइंट से अंतिम आउटपुट प्राप्त करता है और इसे उपयोगकर्ता को प्रस्तुत करता है, अक्सर मॉडल द्वारा उत्पन्न टेक्स्ट के साथ-साथ टूल निष्पादन या संसाधन खोज के परिणाम भी शामिल होते हैं।
यह प्रक्रिया MCP को उन्नत, इंटरैक्टिव, और संदर्भ-सचेत AI एप्लिकेशंस का समर्थन करने में सक्षम बनाती है, जो मॉडलों को बाहरी टूल्स और डेटा स्रोतों से सहज रूप से जोड़ती है।
MCP दो विशिष्ट आर्किटेक्चरल लेयर्स से बनी है जो पूर्ण संचार फ्रेमवर्क प्रदान करने के लिए एक साथ काम करते हैं:
डेटा लेयर MCP प्रोटोकॉल के कोर को JSON-RPC 2.0 के आधार पर लागू करता है। यह लेयर मैसेज संरचना, अर्थ, और इंटरैक्शन पैटर्न को परिभाषित करता है:
- JSON-RPC 2.0 प्रोटोकॉल: सभी संचार मेथड कॉल, प्रतिक्रियाएँ, और नोटिफिकेशन के लिए मानकीकृत JSON-RPC 2.0 मैसेज फॉर्मेट का उपयोग करता है
- लाइफसायकल प्रबंधन: क्लाइंट्स और सर्वर्स के बीच कनेक्शन इनिशियलाइज़ेशन, क्षमता बातचीत, और सत्र समाप्ति को संभालता है
- सर्वर प्रिमिटिव्स: सर्वर को टूल्स, संसाधन, और प्रॉम्प्ट के माध्यम से मुख्य कार्यक्षमता प्रदान करने में सक्षम बनाता है
- क्लाइंट प्रिमिटिव्स: सर्वर को LLM से सैंपलिंग अनुरोध करने, उपयोगकर्ता इनपुट elicitation, और लॉग संदेश भेजने की अनुमति देता है
- रियल-टाइम नोटिफिकेशन: पॉलिंग के बिना डायनेमिक अपडेट के लिए असिंक्रोनस नोटिफिकेशन का समर्थन करता है
- प्रोटोकॉल संस्करण बातचीत: संगतता सुनिश्चित करने के लिए डेट-आधारित संस्करण (YYYY-MM-DD) का उपयोग करता है
- क्षमता खोज: इनिशियलाइज़ेशन के दौरान क्लाइंट और सर्वर समर्थित फीचर्स का आदान-प्रदान करते हैं
- स्टेटफुल सत्र: संदर्भ निरंतरता के लिए कई इंटरैक्शंस में कनेक्शन स्थिति बनाए रखता है
ट्रांसपोर्ट लेयर MCP प्रतिभागियों के बीच संचार चैनल, मैसेज फ्रेमिंग, और प्रमाणीकरण का प्रबंधन करता है:
-
STDIO ट्रांसपोर्ट:
- सीधे प्रक्रिया संचार के लिए मानक इनपुट/आउटपुट स्ट्रीम्स का उपयोग करता है
- समान मशीन पर स्थानीय प्रक्रियाओं के लिए बेहतर, नेटवर्क ओवरहेड नहीं है
- स्थानीय MCP सर्वर कार्यान्वयन के लिए सामान्यतः उपयोग किया जाता है
-
स्ट्रीमेबल HTTP ट्रांसपोर्ट:
- क्लाइंट से सर्वर को संदेशों के लिए HTTP POST का उपयोग करता है
- वैकल्पिक सर्वर-सेंट इवेंट्स (SSE) सर्वर से क्लाइंट स्ट्रीमिंग के लिए
- नेटवर्क के पार दूरस्थ सर्वर संचार सक्षम करता है
- मानक HTTP प्रमाणीकरण (बीयरर टोकन, API कुंजी, कस्टम हेडर) का समर्थन करता है
- MCP सुरक्षित टोकन-आधारित प्रमाणीकरण के लिए OAuth की सिफारिश करता है
ट्रांसपोर्ट लेयर डेटा लेयर से संचार विवरणों को अलग करता है, जिससे सभी ट्रांसपोर्ट तंत्रों के लिए एक समान JSON-RPC 2.0 मैसेज फॉर्मेट उपयोग संभव होता है। यह अमूर्तता एप्लिकेशन को स्थानीय और दूरस्थ सर्वरों के बीच सहज बदलाव की अनुमति देती है।
MCP कार्यान्वयन को सुरक्षित, विश्वसनीय, और सुरक्षा आधारित इंटरैक्शन सुनिश्चित करने के लिए कई आवश्यक सुरक्षा सिद्धांतों का पालन करना चाहिए:
-
उपयोगकर्ता सहमति और नियंत्रण:
किसी भी डेटा तक पहुँच या संचालन से पहले उपयोगकर्ता की स्पष्ट सहमति आवश्यक है। उन्हें स्पष्ट नियंत्रण होना चाहिए कि कौन सा डेटा साझा किया जा रहा है और कौन से क्रियाकलाप अनुमोदित हैं, साथ ही गतिविधियों की समीक्षा और स्वीकृति के लिए सहज यूजर इंटरफेस प्रदान करना। -
डेटा गोपनीयता:
उपयोगकर्ता डेटा केवल स्पष्ट सहमति के साथ साझा किया जाना चाहिए और उचित पहुँच नियंत्रण से सुरक्षित रहना चाहिए। MCP अनुप्रयोगों को अनधिकृत डेटा ट्रांसमिशन से बचाना और सभी इंटरैक्शनों में गोपनीयता बनाए रखना चाहिए। -
टूल सुरक्षा:
किसी भी टूल को इनवोक करने से पहले स्पष्ट उपयोगकर्ता सहमति आवश्यक है। उपयोगकर्ताओं को प्रत्येक टूल की कार्यक्षमता का स्पष्ट ज्ञान होना चाहिए, और अनजाने या असुरक्षित टूल निष्पादन को रोकने के लिए मजबूत सुरक्षा सीमाएं लागू करनी चाहिए।
इन सुरक्षा सिद्धांतों का पालन करके MCP उपयोगकर्ता विश्वास, गोपनीयता, और सुरक्षा को बनाए रखते हुए शक्तिशाली AI एकीकरण सक्षम करता है।
नीचे कुछ लोकप्रिय प्रोग्रामिंग भाषाओं में कोड उदाहरण दिए गए हैं जो MCP सर्वर के प्रमुख घटकों और टूल्स को लागू करने के तरीके को दर्शाते हैं।
यहां एक व्यावहारिक .NET कोड उदाहरण है जो कस्टम टूल्स के साथ सरल MCP सर्वर लागू करने का तरीका दिखाता है। यह उदाहरण टूल्स को परिभाषित करने, पंजीकृत करने, अनुरोधों को संभालने, और मॉडल कंटेक्स्ट प्रोटोकॉल का उपयोग करके सर्वर से कनेक्ट करने को दर्शाता है।
using System;
using System.Threading.Tasks;
using ModelContextProtocol.Server;
using ModelContextProtocol.Server.Transport;
using ModelContextProtocol.Server.Tools;
public class WeatherServer
{
public static async Task Main(string[] args)
{
// Create an MCP server
var server = new McpServer(
name: "Weather MCP Server",
version: "1.0.0"
);
// Register our custom weather tool
server.AddTool<string, WeatherData>("weatherTool",
description: "Gets current weather for a location",
execute: async (location) => {
// Call weather API (simplified)
var weatherData = await GetWeatherDataAsync(location);
return weatherData;
});
// Connect the server using stdio transport
var transport = new StdioServerTransport();
await server.ConnectAsync(transport);
Console.WriteLine("Weather MCP Server started");
// Keep the server running until process is terminated
await Task.Delay(-1);
}
private static async Task<WeatherData> GetWeatherDataAsync(string location)
{
// This would normally call a weather API
// Simplified for demonstration
await Task.Delay(100); // Simulate API call
return new WeatherData {
Temperature = 72.5,
Conditions = "Sunny",
Location = location
};
}
}
public class WeatherData
{
public double Temperature { get; set; }
public string Conditions { get; set; }
public string Location { get; set; }
}यह उदाहरण ऊपर दिए गए .NET उदाहरण की तरह ही MCP सर्वर और टूल पंजीकरण को Java में लागू करता है।
import io.modelcontextprotocol.server.McpServer;
import io.modelcontextprotocol.server.McpToolDefinition;
import io.modelcontextprotocol.server.transport.StdioServerTransport;
import io.modelcontextprotocol.server.tool.ToolExecutionContext;
import io.modelcontextprotocol.server.tool.ToolResponse;
public class WeatherMcpServer {
public static void main(String[] args) throws Exception {
// एक MCP सर्वर बनाएं
McpServer server = McpServer.builder()
.name("Weather MCP Server")
.version("1.0.0")
.build();
// एक मौसम उपकरण पंजीकृत करें
server.registerTool(McpToolDefinition.builder("weatherTool")
.description("Gets current weather for a location")
.parameter("location", String.class)
.execute((ToolExecutionContext ctx) -> {
String location = ctx.getParameter("location", String.class);
// मौसम डेटा प्राप्त करें (सरलीकृत)
WeatherData data = getWeatherData(location);
// स्वरूपित प्रतिक्रिया लौटाएं
return ToolResponse.content(
String.format("Temperature: %.1f°F, Conditions: %s, Location: %s",
data.getTemperature(),
data.getConditions(),
data.getLocation())
);
})
.build());
// stdio ट्रांसपोर्ट का उपयोग करके सर्वर से कनेक्ट करें
try (StdioServerTransport transport = new StdioServerTransport()) {
server.connect(transport);
System.out.println("Weather MCP Server started");
// प्रक्रिया समाप्त होने तक सर्वर चालू रखें
Thread.currentThread().join();
}
}
private static WeatherData getWeatherData(String location) {
// कार्यान्वयन मौसम API को कॉल करेगा
// उदाहरण उद्देश्यों के लिए सरलीकृत
return new WeatherData(72.5, "Sunny", location);
}
}
class WeatherData {
private double temperature;
private String conditions;
private String location;
public WeatherData(double temperature, String conditions, String location) {
this.temperature = temperature;
this.conditions = conditions;
this.location = location;
}
public double getTemperature() {
return temperature;
}
public String getConditions() {
return conditions;
}
public String getLocation() {
return location;
}
}यह उदाहरण fastmcp का उपयोग करता है, इसलिए कृपया पहले इसे स्थापित करें:
pip install fastmcpCode Sample:
#!/usr/bin/env python3
import asyncio
from fastmcp import FastMCP
from fastmcp.transports.stdio import serve_stdio
# एक FastMCP सर्वर बनाएं
mcp = FastMCP(
name="Weather MCP Server",
version="1.0.0"
)
@mcp.tool()
def get_weather(location: str) -> dict:
"""Gets current weather for a location."""
return {
"temperature": 72.5,
"conditions": "Sunny",
"location": location
}
# एक वर्ग का उपयोग करके वैकल्पिक तरीका
class WeatherTools:
@mcp.tool()
def forecast(self, location: str, days: int = 1) -> dict:
"""Gets weather forecast for a location for the specified number of days."""
return {
"location": location,
"forecast": [
{"day": i+1, "temperature": 70 + i, "conditions": "Partly Cloudy"}
for i in range(days)
]
}
# वर्ग उपकरणों को रजिस्टर करें
weather_tools = WeatherTools()
# सर्वर शुरू करें
if __name__ == "__main__":
asyncio.run(serve_stdio(mcp))यह उदाहरण JavaScript में MCP सर्वर बनाने और दो मौसम संबंधित टूलों को पंजीकृत करने का तरीका दिखाता है।
// आधिकारिक मॉडल संदर्भ प्रोटोकॉल एसडीके का उपयोग करना
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod"; // पैरामीटर सत्यापन के लिए
// एक MCP सर्वर बनाएं
const server = new McpServer({
name: "Weather MCP Server",
version: "1.0.0"
});
// एक मौसम उपकरण परिभाषित करें
server.tool(
"weatherTool",
{
location: z.string().describe("The location to get weather for")
},
async ({ location }) => {
// यह सामान्य रूप से एक मौसम API को कॉल करेगा
// प्रदर्शन के लिए सरलित
const weatherData = await getWeatherData(location);
return {
content: [
{
type: "text",
text: `Temperature: ${weatherData.temperature}°F, Conditions: ${weatherData.conditions}, Location: ${weatherData.location}`
}
]
};
}
);
// एक पूर्वानुमान उपकरण परिभाषित करें
server.tool(
"forecastTool",
{
location: z.string(),
days: z.number().default(3).describe("Number of days for forecast")
},
async ({ location, days }) => {
// यह सामान्य रूप से एक मौसम API को कॉल करेगा
// प्रदर्शन के लिए सरलित
const forecast = await getForecastData(location, days);
return {
content: [
{
type: "text",
text: `${days}-day forecast for ${location}: ${JSON.stringify(forecast)}`
}
]
};
}
);
// सहायक फ़ंक्शन
async function getWeatherData(location) {
// API कॉल का अनुकरण करें
return {
temperature: 72.5,
conditions: "Sunny",
location: location
};
}
async function getForecastData(location, days) {
// API कॉल का अनुकरण करें
return Array.from({ length: days }, (_, i) => ({
day: i + 1,
temperature: 70 + Math.floor(Math.random() * 10),
conditions: i % 2 === 0 ? "Sunny" : "Partly Cloudy"
}));
}
// स्ट्डियो ट्रांसपोर्ट का उपयोग करके सर्वर कनेक्ट करें
const transport = new StdioServerTransport();
server.connect(transport).catch(console.error);
console.log("Weather MCP Server started");यह JavaScript उदाहरण दिखाता है कि कैसे stdio ट्रांसपोर्ट का उपयोग करते हुए MCP सर्वर बनाया जाता है जो मौसम संबंधित टूल पंजीकृत करता है और आने वाले क्लाइंट अनुरोधों को संभालता है।
MCP प्रोटोकॉल में सुरक्षा और प्राधिकरण प्रबंधन के लिए कई अंतर्निहित अवधारणाएँ और तंत्र शामिल हैं:
-
टूल अनुमति नियंत्रण:
क्लाइंट यह निर्दिष्ट कर सकते हैं कि मॉडल को सत्र के दौरान कौन से टूल्स का उपयोग करने की अनुमति है। यह सुनिश्चित करता है कि केवल स्पष्ट रूप से अधिकृत टूल्स ही उपलब्ध हों, जिससे अनजाने या असुरक्षित संचालन का जोखिम कम होता है। अनुमतियाँ उपयोगकर्ता वरीयताओं, संगठनात्मक नीतियों, या इंटरैक्शन के संदर्भ के आधार पर गतिशील रूप से कॉन्फ़िगर की जा सकती हैं। -
प्रमाणीकरण:
सर्वर टूल्स, संसाधनों, या संवेदनशील ऑपरेशंस तक पहुँच प्रदान करने से पहले प्रमाणीकरण मांग सकते हैं। इसमें API कुंजी, OAuth टोकन, या अन्य प्रमाणीकरण स्कीम शामिल हो सकते हैं। उचित प्रमाणीकरण यह सुनिश्चित करता है कि केवल विश्वसनीय क्लाइंट्स और उपयोगकर्ता ही सर्वर-साइड क्षमताओं को इनवोक कर सकें। -
मान्यता:
सभी टूल इनवोकेशंस के लिए पैरामीटर वैलिडेशन लागू होती है। प्रत्येक टूल अपने पैरामीटरों के लिए अपेक्षित प्रकार, प्रारूप, और प्रतिबंध परिभाषित करता है, और सर्वर आने वाले अनुरोधों को उसी के अनुसार मान्य करता है। यह खराब या दुर्भावनापूर्ण इनपुट को टूल कार्यान्वयन तक पहुँचने से रोकता है और ऑपरेशंस की अखंडता बनाए रखता है। -
रेट लिमिटिंग:
दुरुपयोग को रोकने और सर्वर संसाधनों के उचित उपयोग को सुनिश्चित करने के लिए MCP सर्वर टूल कॉल्स और संसाधन पहुँच के लिए रेट लिमिटिंग लागू कर सकते हैं। रेट लिमिट उपयोगकर्ता, सत्र, या ग्लोबली लागू हो सकती है और डिनायल-ऑफ-सर्विस हमलों या अत्यधिक संसाधन उपभोग से सुरक्षा करती है।
इन तंत्रों को मिलाकर, MCP बाहरी टूल्स और डेटा स्रोतों के साथ भाषा मॉडलों को सुरक्षित रूप से एकीकृत करने के लिए एक मजबूत आधार प्रदान करता है, साथ ही उपयोगकर्ताओं और डेवलपर्स को पहुँच और उपयोग पर सूक्ष्म नियंत्रण देता है।
MCP संचार स्पष्ट और विश्वसनीय इंटरैक्शन के लिए संरचित JSON-RPC 2.0 संदेशों का उपयोग करता है। प्रोटोकॉल विभिन्न प्रकार के ऑपरेशंस के लिए विशिष्ट संदेश पैटर्न परिभाषित करता है:
initializeअनुरोध: कनेक्शन स्थापित करता है और प्रोटोकॉल संस्करण व क्षमताओं का नेगोशिएशन करता हैinitializeप्रतिक्रिया: समर्थित फीचर्स और सर्वर जानकारी की पुष्टि करता हैnotifications/initialized: संकेत देता है कि इनिशियलाइज़ेशन पूरा हो गया है और सत्र तैयार है
tools/listअनुरोध: सर्वर से उपलब्ध टूल्स खोजता हैresources/listअनुरोध: उपलब्ध संसाधनों (डेटा स्रोतों) की सूची प्राप्त करता हैprompts/listअनुरोध: उपलब्ध प्रॉम्प्ट टेम्प्लेट्स को पुनः प्राप्त करता है
tools/callअनुरोध: दिए गए पैरामीटर के साथ किसी विशिष्ट टूल को निष्पादित करता हैresources/readअनुरोध: किसी विशिष्ट संसाधन से सामग्री प्राप्त करता हैprompts/getअनुरोध: वैकल्पिक पैरामीटर के साथ प्रॉम्प्ट टेम्प्लेट प्राप्त करता है
sampling/completeअनुरोध: सर्वर क्लाइंट से LLM पूर्णता मांगता हैelicitation/request: सर्वर क्लाइंट इंटरफ़ेस के माध्यम से उपयोगकर्ता इनपुट मांगता है- लॉगिंग संदेश: सर्वर संरचित लॉग संदेश क्लाइंट को भेजता है
notifications/tools/list_changed: सर्वर क्लाइंट को टूल परिवर्तनों की सूचना देता हैnotifications/resources/list_changed: सर्वर क्लाइंट को संसाधन परिवर्तनों की सूचना देता हैnotifications/prompts/list_changed: सर्वर क्लाइंट को प्रॉम्प्ट परिवर्तनों की सूचना देता है
सभी MCP संदेश JSON-RPC 2.0 प्रारूप का पालन करते हैं जिसमें:
- अनुरोध संदेश:
id,method, और वैकल्पिकparamsशामिल होते हैं - प्रतिक्रिया संदेश:
idऔर या तोresultयाerrorशामिल होते हैं - नोटिफिकेशन संदेश:
methodऔर वैकल्पिकparamsहोते हैं (कोईidया प्रतिक्रिया अपेक्षित नहीं होती)
यह संरचित संचार विश्वसनीय, ट्रेस करने योग्य, और विस्तार योग्य इंटरैक्शन सुनिश्चित करता है जो रियल-टाइम अपडेट्स, टूल चेनिंग, और मजबूत त्रुटि प्रबंधन जैसे उन्नत परिदृश्यों का समर्थन करता है।
कार्य एक प्रायोगिक विशेषता है जो MCP अनुरोधों के लिए स्थायी निष्पादन रैपर्स प्रदान करती है जो रिजल्ट पुनः प्राप्ति और स्थिति ट्रैकिंग को स्थगित करती हैं:
- दीर्घकालिक संचालन: महंगे गणनाओं, कार्यप्रवाह स्वचालन, और बैच प्रोसेसिंग को ट्रैक करता है
- स्थगित परिणाम: संचालन पूरा होने पर कार्य स्थिति की पूछताछ और परिणाम पुनः प्राप्त करता है
- स्थिति ट्रैकिंग: परिभाषित जीवनचक्र अवस्थाओं के माध्यम से कार्य प्रगति की निगरानी करता है
- मल्टी-स्टेप संचालन: कई इंटरैक्शन में फैले जटिल वर्कफ़्लोज़ का समर्थन करता है
कार्य मानक MCP अनुरोधों को रैप करते हैं ताकि उन ऑपरेशंस के लिए जो तुरंत पूर्ण नहीं हो सकते, असिंक्रोनस निष्पादन पैटर्न सक्षम हो सकें।
- आर्किटेक्चर: MCP एक क्लाइंट-सर्वर आर्किटेक्चर का उपयोग करता है जहाँ होस्ट कई क्लाइंट कनेक्शन को सर्वर तक प्रबंधित करता है
- प्रतिभागी: पारिस्थितिकी तंत्र में होस्ट (AI एप्लिकेशन), क्लाइंट (प्रोटोकॉल कनेक्टर्स), और सर्वर (क्षमता प्रदाता) शामिल हैं
- ट्रांसपोर्ट तंत्र: संचार STDIO (स्थानीय) और स्ट्रीमेबल HTTP के साथ वैकल्पिक SSE (दूरस्थ) का समर्थन करता है
- कोर प्रिमिटिव्स: सर्वर टूल्स (क्रियान्वित कार्य), संसाधन (डेटा स्रोत), और प्रॉम्प्ट (टेम्प्लेट) प्रदान करता है
- क्लाइंट प्रिमिटिव्स: क्लाइंट से सैंपलिंग, elicitation (यूजर इनपुट सहित URL मोड), रूट्स (फाइल सिस्टम सीमाएँ), और लॉगिंग अनुरोध कर सकते हैं
- प्रायोगिक फीचर्स: कार्य दीर्घकालिक संचालन के लिए स्थायी निष्पादन रैपर्स प्रदान करते हैं
- प्रोटोकॉल आधार: JSON-RPC 2.0 पर आधारित, डेट-आधारित संस्करण (वर्तमान: 2025-11-25)
- रियल-टाइम क्षमताएं: डायनेमिक अपडेट और रियल-टाइम सिंकिंग के लिए नोटिफिकेशन का समर्थन करता है
- सुरक्षा प्रथम: स्पष्ट उपयोगकर्ता सहमति, डेटा गोपनीयता सुरक्षा, और सुरक्षित ट्रांसपोर्ट मूल आवश्यकताएँ हैं
अपने डोमेन में उपयोगी एक सरल MCP टूल डिज़ाइन करें। परिभाषित करें:
- टूल का नाम क्या होगा
- यह किन पैरामीटर्स को स्वीकार करेगा
- यह क्या आउटपुट लौटाएगा
- एक मॉडल इस टूल का उपयोग उपयोगकर्ता समस्याओं को हल करने के लिए कैसे कर सकता है
अगला: अध्याय 2: सुरक्षा
अस्वीकरण:
इस दस्तावेज़ का अनुवाद AI अनुवाद सेवा Co-op Translator का उपयोग करके किया गया है। हम सटीकता के लिए प्रयासरत हैं, लेकिन कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में मौजूद दस्तावेज़ को अधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं।
