(वरील प्रतिमेवर क्लिक करून या धड्याचा व्हिडिओ पहा)
Model Context Protocol (MCP) हा एक शक्तिशाली, प्रमाणित फ्रेमवर्क आहे जो मोठ्या भाषा मॉडेल्स (LLMs) आणि बाह्य साधने, अनुप्रयोग, आणि डेटा स्रोत यांच्यातील संवाद अधिक चांगला बनवतो. या मार्गदर्शकामध्ये MCP च्या मुख्य संकल्पनांवर प्रकाश टाकला आहे. तुम्हाला त्याच्या क्लायंट-सर्व्हर आर्किटेक्चर, महत्त्वाच्या घटक, संवाद यंत्रणा, आणि अंमलबजावणीसाठी सर्वोत्तम पद्धती शिकायला मिळतील.
-
स्पष्ट वापरकर्ता संमती: सर्व डेटा प्रवेश आणि ऑपरेशन्ससाठी अंमलबजावणीपूर्वी स्पष्ट वापरकर्ता मंजुरी आवश्यक आहे. वापरकर्त्यांना कोणता डेटा प्रवेश केला जाईल आणि कोणती कृती केली जाईल याची स्पष्ट समज असावी, तसेच परवानग्या आणि अधिकृततेवर सखोल नियंत्रण असावे.
-
डेटा गोपनीयता संरक्षण: वापरकर्त्याचा डेटा फक्त स्पष्ट संमतीने उघड केला जातो आणि संपूर्ण संवाद जीवनचक्रात मजबूत प्रवेश नियंत्रणाद्वारे संरक्षित केला जातो. अंमलबजावणीमध्ये अनधिकृत डेटा प्रसारण रोखले पाहिजे आणि कठोर गोपनीयता सीमा राखल्या पाहिजेत.
-
साधन अंमलबजावणी सुरक्षितता: प्रत्येक साधनाची अंमलबजावणी स्पष्ट वापरकर्ता संमतीसह आवश्यक आहे, ज्यामध्ये साधनाची कार्यक्षमता, पॅरामीटर्स, आणि संभाव्य परिणाम याची स्पष्ट समज असावी. अनपेक्षित, असुरक्षित, किंवा दुर्भावनायुक्त साधन अंमलबजावणी रोखण्यासाठी मजबूत सुरक्षा सीमा असाव्यात.
-
ट्रान्सपोर्ट लेयर सुरक्षा: सर्व संवाद चॅनेल योग्य एन्क्रिप्शन आणि प्रमाणीकरण यंत्रणा वापरून सुरक्षित केले पाहिजेत. दूरस्थ कनेक्शनसाठी सुरक्षित ट्रान्सपोर्ट प्रोटोकॉल आणि योग्य क्रेडेन्शियल व्यवस्थापन अंमलात आणले पाहिजे.
- परवानगी व्यवस्थापन: वापरकर्त्यांना कोणते सर्व्हर, साधने, आणि संसाधने प्रवेशयोग्य आहेत हे नियंत्रित करण्यासाठी सूक्ष्म-स्तरीय परवानगी प्रणाली अंमलात आणा
- प्रमाणीकरण आणि अधिकृतता: सुरक्षित प्रमाणीकरण पद्धती (OAuth, API कीज) योग्य टोकन व्यवस्थापन आणि कालबाह्यता सह वापरा
- इनपुट व्हॅलिडेशन: इंजेक्शन हल्ले टाळण्यासाठी परिभाषित स्कीमांनुसार सर्व पॅरामीटर्स आणि डेटा इनपुट्सची पडताळणी करा
- ऑडिट लॉगिंग: सुरक्षा निरीक्षण आणि अनुपालनासाठी सर्व ऑपरेशन्सचे व्यापक लॉग्स ठेवा
या धड्यात Model Context Protocol (MCP) इकोसिस्टम बनवणाऱ्या मूलभूत आर्किटेक्चर आणि घटकांचा अभ्यास केला आहे. तुम्हाला MCP संवादांना चालना देणारे क्लायंट-सर्व्हर आर्किटेक्चर, प्रमुख घटक, आणि संवाद यंत्रणा याबद्दल शिकायला मिळेल.
या धड्याच्या शेवटी, तुम्ही:
- MCP च्या क्लायंट-सर्व्हर आर्किटेक्चरची समज प्राप्त कराल.
- Hosts, Clients, आणि Servers यांची भूमिका आणि जबाबदाऱ्या ओळखाल.
- MCP ला एक लवचिक एकत्रीकरण स्तर बनवणाऱ्या मुख्य वैशिष्ट्यांचे विश्लेषण कराल.
- MCP इकोसिस्टममधील माहिती प्रवाह कसा चालतो हे शिकाल.
- .NET, Java, Python, आणि JavaScript मधील कोड उदाहरणांद्वारे व्यावहारिक अंतर्दृष्टी मिळवाल.
MCP इकोसिस्टम क्लायंट-सर्व्हर मॉडेलवर आधारित आहे. या मॉड्युलर संरचनेमुळे AI अनुप्रयोगांना साधने, डेटाबेस, APIs, आणि संदर्भ संसाधनांशी कार्यक्षमतेने संवाद साधता येतो. चला या आर्किटेक्चरचे मुख्य घटक समजून घेऊया.
MCP च्या केंद्रस्थानी क्लायंट-सर्व्हर आर्किटेक्चर आहे जिथे होस्ट अनुप्रयोग अनेक सर्व्हर्सशी कनेक्ट होऊ शकतो:
flowchart LR
subgraph "Your Computer"
Host["Host with MCP (Visual Studio, VS Code, IDEs, Tools)"]
S1["MCP Server A"]
S2["MCP Server B"]
S3["MCP Server C"]
Host <-->|"MCP Protocol"| S1
Host <-->|"MCP Protocol"| S2
Host <-->|"MCP Protocol"| S3
S1 <--> D1[("Local\Data Source A")]
S2 <--> D2[("Local\Data Source B")]
end
subgraph "Internet"
S3 <-->|"Web APIs"| D3[("Remote\Services")]
end
- MCP Hosts: VSCode, Claude Desktop, IDEs, किंवा MCP च्या माध्यमातून डेटा प्रवेश करू इच्छिणारे AI साधने
- MCP Clients: प्रोटोकॉल क्लायंट्स जे सर्व्हर्ससोबत 1:1 कनेक्शन राखतात
- MCP Servers: हलके प्रोग्राम्स जे MCP च्या प्रमाणित मॉडेल कॉन्टेक्स्ट प्रोटोकॉलद्वारे विशिष्ट क्षमता उघड करतात
- स्थानिक डेटा स्रोत: तुमच्या संगणकातील फायली, डेटाबेस, आणि सेवा ज्यांना MCP सर्व्हर्स सुरक्षितपणे प्रवेश करू शकतात
- दूरस्थ सेवा: इंटरनेटवर उपलब्ध बाह्य प्रणाली ज्यांना MCP सर्व्हर्स APIs च्या माध्यमातून कनेक्ट करू शकतात.
MCP प्रोटोकॉल एक विकसित होणारा मानक आहे जो तारीख-आधारित आवृत्तीकरण (YYYY-MM-DD स्वरूप) वापरतो. सध्याचा प्रोटोकॉल आवृत्ती 2025-06-18 आहे. प्रोटोकॉल स्पेसिफिकेशन मधील नवीनतम अद्यतने तुम्ही पाहू शकता.
Model Context Protocol (MCP) मध्ये, Hosts हे AI अनुप्रयोग आहेत जे प्रोटोकॉलशी संवाद साधण्यासाठी प्राथमिक इंटरफेस म्हणून काम करतात. Hosts अनेक MCP सर्व्हर्सशी कनेक्शन तयार करून MCP क्लायंट्स व्यवस्थापित करतात. Hosts चे उदाहरणे:
- AI अनुप्रयोग: Claude Desktop, Visual Studio Code, Claude Code
- विकसन वातावरण: MCP एकत्रीकरणासह IDEs आणि कोड एडिटर्स
- कस्टम अनुप्रयोग: उद्देशपूर्ण AI एजंट्स आणि साधने
Hosts हे AI मॉडेल संवाद समन्वयित करणारे अनुप्रयोग आहेत. ते:
- AI मॉडेल्सचे समन्वय: प्रतिसाद निर्माण करण्यासाठी किंवा AI वर्कफ्लो समन्वयित करण्यासाठी LLMs अंमलात आणतात किंवा संवाद साधतात
- क्लायंट कनेक्शन व्यवस्थापन: प्रत्येक MCP सर्व्हर कनेक्शनसाठी एक MCP क्लायंट तयार करतात आणि राखतात
- वापरकर्ता इंटरफेस नियंत्रण: संभाषण प्रवाह, वापरकर्ता संवाद, आणि प्रतिसाद सादरीकरण हाताळतात
- सुरक्षा अंमलबजावणी: परवानग्या, सुरक्षा मर्यादा, आणि प्रमाणीकरण नियंत्रित करतात
- वापरकर्ता संमती हाताळतात: डेटा शेअरिंग आणि साधन अंमलबजावणीसाठी वापरकर्ता मंजुरी व्यवस्थापित करतात
Clients हे महत्त्वाचे घटक आहेत जे Hosts आणि MCP सर्व्हर्स दरम्यान समर्पित एक-ते-एक कनेक्शन राखतात. प्रत्येक MCP क्लायंट Host द्वारे विशिष्ट MCP सर्व्हरशी कनेक्ट होण्यासाठी तयार केला जातो, ज्यामुळे व्यवस्थित आणि सुरक्षित संवाद चॅनेल सुनिश्चित होतात. अनेक क्लायंट्स Hosts ला एकाच वेळी अनेक सर्व्हर्सशी कनेक्ट होण्याची परवानगी देतात.
Clients हे होस्ट अनुप्रयोगातील कनेक्टर घटक आहेत. ते:
- प्रोटोकॉल संवाद: सर्व्हर्सना JSON-RPC 2.0 विनंत्या पाठवतात ज्यामध्ये प्रॉम्प्ट्स आणि सूचना असतात
- क्षमता वाटाघाटी: सुरुवातीच्या टप्प्यात सर्व्हर्ससोबत समर्थित वैशिष्ट्ये आणि प्रोटोकॉल आवृत्त्यांवर वाटाघाटी करतात
- साधन अंमलबजावणी: मॉडेल्सकडून साधन अंमलबजावणी विनंत्या व्यवस्थापित करतात आणि प्रतिसाद प्रक्रिया करतात
- रिअल-टाइम अद्यतने: सर्व्हर्सकडून सूचना आणि रिअल-टाइम अद्यतने हाताळतात
- प्रतिसाद प्रक्रिया: वापरकर्त्यांना प्रदर्शित करण्यासाठी सर्व्हर प्रतिसाद प्रक्रिया करतात आणि स्वरूपित करतात
Servers हे प्रोग्राम्स आहेत जे MCP क्लायंट्सना संदर्भ, साधने, आणि क्षमता प्रदान करतात. ते स्थानिक (Host च्या समान मशीनवर) किंवा दूरस्थ (बाह्य प्लॅटफॉर्मवर) अंमलात आणले जाऊ शकतात आणि क्लायंट विनंत्या हाताळण्यासाठी आणि संरचित प्रतिसाद प्रदान करण्यासाठी जबाबदार असतात. Servers MCP च्या प्रमाणित मॉडेल कॉन्टेक्स्ट प्रोटोकॉलद्वारे विशिष्ट कार्यक्षमता उघड करतात.
Servers हे सेवा आहेत जे संदर्भ आणि क्षमता प्रदान करतात. ते:
- वैशिष्ट्य नोंदणी: उपलब्ध प्रिमिटिव्ह्स (संसाधने, प्रॉम्प्ट्स, साधने) क्लायंट्ससाठी नोंदणी करतात आणि उघड करतात
- विनंती प्रक्रिया: क्लायंट्सकडून साधन कॉल्स, संसाधन विनंत्या, आणि प्रॉम्प्ट विनंत्या प्राप्त करतात आणि अंमलात आणतात
- संदर्भ प्रदान: मॉडेल प्रतिसाद सुधारण्यासाठी संदर्भात्मक माहिती आणि डेटा प्रदान करतात
- स्थिती व्यवस्थापन: सत्र स्थिती राखतात आणि आवश्यक असल्यास स्थितीपूर्ण संवाद हाताळतात
- रिअल-टाइम सूचना: कनेक्ट केलेल्या क्लायंट्सना क्षमता बदल आणि अद्यतने याबद्दल सूचना पाठवतात
Servers कोणालाही विकसित करता येतात जे मॉडेल क्षमतांना विशेष कार्यक्षमतेसह विस्तारित करतात, आणि ते स्थानिक तसेच दूरस्थ अंमलबजावणी परिदृश्यांना समर्थन देतात.
Model Context Protocol (MCP) मधील Servers तीन मुख्य प्रिमिटिव्ह्स प्रदान करतात जे क्लायंट्स, Hosts, आणि भाषा मॉडेल्स दरम्यान समृद्ध संवादांसाठी मूलभूत घटक परिभाषित करतात. हे प्रिमिटिव्ह्स MCP च्या माध्यमातून उपलब्ध असलेल्या संदर्भात्मक माहिती आणि कृतींच्या प्रकारांचे वर्णन करतात.
MCP Servers खालील तीन मुख्य प्रिमिटिव्ह्सपैकी कोणत्याही संयोजनाचा उघडपणे वापर करू शकतात:
Resources हे डेटा स्रोत आहेत जे AI अनुप्रयोगांना संदर्भात्मक माहिती प्रदान करतात. ते स्थिर किंवा गतिशील सामग्रीचे प्रतिनिधित्व करतात जे मॉडेल समज आणि निर्णय घेण्याची क्षमता सुधारते:
- संदर्भात्मक डेटा: AI मॉडेल वापरासाठी संरचित माहिती आणि संदर्भ
- ज्ञान तळे: दस्तऐवज संग्रह, लेख, मॅन्युअल्स, आणि संशोधन पेपर्स
- स्थानिक डेटा स्रोत: फायली, डेटाबेस, आणि स्थानिक प्रणाली माहिती
- बाह्य डेटा: API प्रतिसाद, वेब सेवा, आणि दूरस्थ प्रणाली डेटा
- गतिशील सामग्री: बाह्य परिस्थितीनुसार अद्यतनित होणारा रिअल-टाइम डेटा
Resources URIs द्वारे ओळखले जातात आणि resources/list द्वारे शोध आणि resources/read पद्धतीद्वारे पुनर्प्राप्तीला समर्थन देतात:
file://documents/project-spec.md
database://production/users/schema
api://weather/current
Prompts हे पुनर्वापरयोग्य टेम्पलेट्स आहेत जे भाषा मॉडेल्ससोबत संवाद संरचित करण्यात मदत करतात. ते प्रमाणित संवाद पद्धती आणि टेम्पलेटेड वर्कफ्लो प्रदान करतात:
- टेम्पलेट-आधारित संवाद: पूर्व-रचलेले संदेश आणि संभाषण प्रारंभक
- वर्कफ्लो टेम्पलेट्स: सामान्य कार्ये आणि संवादांसाठी प्रमाणित अनुक्रम
- Few-shot उदाहरणे: मॉडेल सूचना देण्यासाठी उदाहरण-आधारित टेम्पलेट्स
- सिस्टम प्रॉम्प्ट्स: मॉडेल वर्तन आणि संदर्भ परिभाषित करणारे मूलभूत प्रॉम्प्ट्स
- गतिशील टेम्पलेट्स: विशिष्ट संदर्भांनुसार अनुकूल होणारे पॅरामीटराइज्ड प्रॉम्प्ट्स
Prompts व्हेरिएबल सब्स्टिट्यूशनला समर्थन देतात आणि prompts/list द्वारे शोधले जाऊ शकतात आणि prompts/get द्वारे पुनर्प्राप्त केले जाऊ शकतात:
Generate a {{task_type}} for {{product}} targeting {{audience}} with the following requirements: {{requirements}}Tools हे कार्यक्षम फंक्शन्स आहेत ज्यांना AI मॉडेल्स विशिष्ट कृती करण्यासाठी अंमलात आणू शकतात. ते MCP इकोसिस्टमचे "क्रियापद" दर्शवतात, ज्यामुळे मॉडेल्स बाह्य प्रणालींसोबत संवाद साधू शकतात:
- कार्यक्षम फंक्शन्स: विशिष्ट पॅरामीटर्ससह मॉडेल्स अंमलात आणू शकणाऱ्या स्वतंत्र ऑपरेशन्स
- बाह्य प्रणाली एकत्रीकरण: API कॉल्स, डेटाबेस क्वेरीज, फायली ऑपरेशन्स, गणना
- अद्वितीय ओळख: प्रत्येक साधनाचे वेगळे नाव, वर्णन, आणि पॅरामीटर स्कीमा असते
- संरचित I/O: साधने वैध पॅरामीटर्स स्वीकारतात आणि संरचित, टाइप केलेले प्रतिसाद परत करतात
- क्रिया क्षमता: मॉडेल्सना वास्तविक-जगातील कृती करण्यास आणि थेट डेटा पुनर्प्राप्त करण्यास सक्षम करतात
Tools JSON Schema च्या माध्यमातून पॅरामीटर पडताळणीसाठी परिभाषित केले जातात आणि tools/list द्वारे शोधले जातात आणि tools/call द्वारे अंमलात आणले जातात:
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) => {
// Execute search and return structured results
return await productService.search(params);
}
);Model Context Protocol (MCP) मध्ये, clients प्रिमिटिव्ह्स उघड करू शकतात ज्यामुळे सर्व्हर्सना होस्ट अनुप्रयोगाकडून अतिरिक्त क्षमता विनंती करता येतात. हे क्लायंट-साइड प्रिमिटिव्ह्स सर्व्हर अंमलबजावणींना अधिक समृद्ध आणि परस्परसंवादी बनवतात, ज्यामुळे AI मॉडेल क्षमता आणि वापरकर्ता संवाद प्रवेशयोग्य होतो.
Sampling सर्व्हर्सना क्लायंटच्या AI अनुप्रयोगाकडून भाषा मॉडेल पूर्णता विनंती करण्याची परवानगी देते. हे प्रिमिटिव्ह सर्व्हर्सना स्वतःचे मॉडेल अवलंबित्व समाविष्ट न करता LLM क्षमता प्रवेश करण्यास सक्षम करते:
- मॉडेल-स्वतंत्र प्रवेश: सर्व्हर्स LLM SDKs समाविष्ट न करता किंवा मॉडेल प्रवेश व्यवस्थापित न करता पूर्णता विनंती करू शकतात
- सर्व्हर-प्रारंभित AI: सर्व्हर्सना क्लायंटच्या AI मॉडेलचा वापर करून सामग्री स्वायत्तपणे निर्माण करण्यास सक्षम करते
- Recursive LLM संवाद: जटिल परिस्थितींना समर्थन देते जिथे सर्व्हर्सना प्रक्रिया करण्यासाठी AI सहाय्य आवश्यक असते
- गतिशील सामग्री निर्मिती: होस्टच्या मॉडेलचा वापर करून संदर्भात्मक प्रतिसाद तयार करण्यास सर्व्हर्सना सक्षम करते
Sampling sampling/complete पद्धतीद्वारे सुरू केली जाते, जिथे सर्व्हर्स क्लायंट्सकडे पूर्णता विनंती पाठवतात.
Elicitation सर्व्हर्सना क्लायंट इंटरफेसद्वारे वापरकर्त्यांकडून अतिरिक्त माहिती किंवा पुष्टीकरण विनंती करण्यास सक्षम करते:
- वापरकर्ता इनपुट विनंत्या: साधन अंमलबजावणीसाठी आवश्यक असलेल्या अतिरिक्त माहितीची विनंती करण्यासाठी सर्व्हर्स वापरकर्त्यांकडे विचारू शकतात
- पुष्टीकरण संवाद: संवेदनशील किंवा प्रभावी ऑपरेशन्ससाठी वापरकर्ता मंजुरीची विनंती करा
- परस्परसंवादी वर्कफ्लो: सर्व्हर्सना चरण-दर-चरण वापरकर्ता संवाद तयार करण्यास सक्षम करा
- गतिशील पॅरामीटर संग्रह: साधन अंमलबजावणी दरम्यान गहाळ किंवा पर्यायी पॅरामीटर्स गोळा करा
Elicitation विनंत्या elicitation/request पद्धतीचा वापर करून क्लायंटच्या इंटरफेसद्वारे वापरकर्ता इनपुट गोळा करण्यासाठी केल्या जातात.
Logging सर्व्हर्सना क्लायंट्सकडे संरचित लॉग संदेश पाठवण्याची परवानगी देते जे डिबगिंग, निरीक्षण, आणि ऑपरेशनल दृश्यमानतेसाठी उपयुक्त असतात:
- डिबगिंग समर्थन: सर्व्हर्सना डिबगिंगसाठी तपशीलवार अंमलबजावणी लॉ
- JSON-RPC 2.0 प्रोटोकॉल: सर्व संवाद पद्धती मानक JSON-RPC 2.0 संदेश स्वरूपाचा वापर करतात, ज्यामध्ये पद्धती कॉल, प्रतिसाद, आणि सूचना समाविष्ट असतात
- जीवनचक्र व्यवस्थापन: क्लायंट आणि सर्व्हर दरम्यान कनेक्शन प्रारंभ, क्षमता वाटाघाटी, आणि सत्र समाप्ती हाताळते
- सर्व्हर प्रिमिटिव्ह्स: सर्व्हरला साधने, संसाधने, आणि प्रॉम्प्ट्सद्वारे मुख्य कार्यक्षमता प्रदान करण्यास सक्षम करते
- क्लायंट प्रिमिटिव्ह्स: सर्व्हरला LLM कडून नमुने घेण्याची विनंती करण्यास, वापरकर्त्याचे इनपुट मिळविण्यास, आणि लॉग संदेश पाठविण्यास सक्षम करते
- रिअल-टाइम सूचना: पोलिंगशिवाय डायनॅमिक अद्यतनांसाठी असिंक्रोनस सूचना समर्थित करते
- प्रोटोकॉल आवृत्ती वाटाघाटी: सुसंगतता सुनिश्चित करण्यासाठी तारीख-आधारित आवृत्तीकरण (YYYY-MM-DD) वापरते
- क्षमता शोध: प्रारंभाच्या वेळी क्लायंट आणि सर्व्हर समर्थित वैशिष्ट्यांची माहिती देवाणघेवाण करतात
- राज्यपूर्ण सत्रे: अनेक संवादांमध्ये कनेक्शन स्थिती राखते, संदर्भ सातत्य सुनिश्चित करते
ट्रान्सपोर्ट लेयर MCP सहभागी दरम्यान संवाद चॅनेल, संदेश फ्रेमिंग, आणि प्रमाणीकरण व्यवस्थापित करते:
-
STDIO ट्रान्सपोर्ट:
- थेट प्रक्रिया संवादासाठी मानक इनपुट/आउटपुट प्रवाहांचा वापर करते
- नेटवर्क ओव्हरहेडशिवाय त्याच मशीनवरील स्थानिक प्रक्रियांसाठी आदर्श
- स्थानिक MCP सर्व्हर अंमलबजावणीसाठी सामान्यतः वापरले जाते
-
स्ट्रीमेबल HTTP ट्रान्सपोर्ट:
- क्लायंट-टू-सर्व्हर संदेशांसाठी HTTP POST वापरते
- सर्व्हर-टू-क्लायंट स्ट्रीमिंगसाठी पर्यायी Server-Sent Events (SSE)
- नेटवर्क्समध्ये दूरस्थ सर्व्हर संवाद सक्षम करते
- मानक HTTP प्रमाणीकरण (bearer tokens, API keys, custom headers) समर्थित करते
- सुरक्षित टोकन-आधारित प्रमाणीकरणासाठी MCP OAuth शिफारस करते
ट्रान्सपोर्ट लेयर डेटा लेयरपासून संवाद तपशील अब्स्ट्रॅक्ट करते, सर्व ट्रान्सपोर्ट यंत्रणांमध्ये समान JSON-RPC 2.0 संदेश स्वरूप सक्षम करते. या अब्स्ट्रॅक्शनमुळे अनुप्रयोगांना स्थानिक आणि दूरस्थ सर्व्हर दरम्यान सहजपणे स्विच करता येते.
MCP अंमलबजावणींनी सर्व प्रोटोकॉल ऑपरेशन्समध्ये सुरक्षित, विश्वासार्ह, आणि सुरक्षित संवाद सुनिश्चित करण्यासाठी अनेक महत्त्वपूर्ण सुरक्षा तत्त्वांचे पालन करणे आवश्यक आहे:
-
वापरकर्ता संमती आणि नियंत्रण: कोणतेही डेटा प्रवेश किंवा ऑपरेशन्स करण्यापूर्वी वापरकर्त्याने स्पष्ट संमती प्रदान करणे आवश्यक आहे. वापरकर्त्यांना कोणता डेटा सामायिक केला जातो आणि कोणती क्रिया अधिकृत केली जाते यावर स्पष्ट नियंत्रण असावे, तसेच क्रियाकलाप पुनरावलोकन आणि मंजूर करण्यासाठी अंतर्ज्ञानी वापरकर्ता इंटरफेसद्वारे समर्थन असावे.
-
डेटा गोपनीयता: वापरकर्त्याचा डेटा फक्त स्पष्ट संमतीने उघड केला जावा आणि योग्य प्रवेश नियंत्रणाद्वारे संरक्षित केला जावा. MCP अंमलबजावणींनी अनधिकृत डेटा प्रसारण टाळले पाहिजे आणि सर्व संवादांमध्ये गोपनीयता राखली पाहिजे.
-
साधन सुरक्षा: कोणतेही साधन वापरण्यापूर्वी स्पष्ट वापरकर्ता संमती आवश्यक आहे. प्रत्येक साधनाची कार्यक्षमता वापरकर्त्याला स्पष्टपणे समजली पाहिजे, आणि अनपेक्षित किंवा असुरक्षित साधन अंमलबजावणी टाळण्यासाठी मजबूत सुरक्षा सीमा लागू केल्या पाहिजेत.
या सुरक्षा तत्त्वांचे पालन करून, MCP सर्व प्रोटोकॉल संवादांमध्ये वापरकर्ता विश्वास, गोपनीयता, आणि सुरक्षा राखते, तसेच शक्तिशाली AI एकत्रीकरण सक्षम करते.
खाली काही लोकप्रिय प्रोग्रामिंग भाषांमध्ये कोड उदाहरणे दिली आहेत, जी मुख्य MCP सर्व्हर घटक आणि साधने अंमलबजावणी कशी करावी हे स्पष्ट करतात.
खालील .NET कोड उदाहरण एक सोपा MCP सर्व्हर कसा अंमलात आणायचा हे दाखवते, ज्यामध्ये सानुकूल साधने परिभाषित आणि नोंदवली जातात, विनंत्या हाताळल्या जातात, आणि Model Context Protocol वापरून सर्व्हर कनेक्ट केला जातो.
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 {
// Create an MCP server
McpServer server = McpServer.builder()
.name("Weather MCP Server")
.version("1.0.0")
.build();
// Register a weather tool
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);
// Get weather data (simplified)
WeatherData data = getWeatherData(location);
// Return formatted response
return ToolResponse.content(
String.format("Temperature: %.1f°F, Conditions: %s, Location: %s",
data.getTemperature(),
data.getConditions(),
data.getLocation())
);
})
.build());
// Connect the server using stdio transport
try (StdioServerTransport transport = new StdioServerTransport()) {
server.connect(transport);
System.out.println("Weather MCP Server started");
// Keep server running until process is terminated
Thread.currentThread().join();
}
}
private static WeatherData getWeatherData(String location) {
// Implementation would call a weather API
// Simplified for example purposes
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;
}
}या उदाहरणात आम्ही Python मध्ये MCP सर्व्हर कसे तयार करावे हे दाखवतो. तुम्हाला साधने तयार करण्याचे दोन वेगवेगळे मार्ग देखील दाखवले जातात.
#!/usr/bin/env python3
import asyncio
from mcp.server.fastmcp import FastMCP
from mcp.server.transports.stdio import serve_stdio
# Create a FastMCP server
mcp = FastMCP(
name="Weather MCP Server",
version="1.0.0"
)
@mcp.tool()
def get_weather(location: str) -> dict:
"""Gets current weather for a location."""
# This would normally call a weather API
# Simplified for demonstration
return {
"temperature": 72.5,
"conditions": "Sunny",
"location": location
}
# Alternative approach using a class
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."""
# This would normally call a weather API forecast endpoint
# Simplified for demonstration
return {
"location": location,
"forecast": [
{"day": i+1, "temperature": 70 + i, "conditions": "Partly Cloudy"}
for i in range(days)
]
}
# Instantiate the class to register its tools
weather_tools = WeatherTools()
# Start the server using stdio transport
if __name__ == "__main__":
asyncio.run(serve_stdio(mcp))हे उदाहरण JavaScript मध्ये MCP सर्व्हर तयार करणे आणि दोन हवामान-संबंधित साधने नोंदवणे कसे करावे हे दाखवते.
// Using the official Model Context Protocol SDK
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod"; // For parameter validation
// Create an MCP server
const server = new McpServer({
name: "Weather MCP Server",
version: "1.0.0"
});
// Define a weather tool
server.tool(
"weatherTool",
{
location: z.string().describe("The location to get weather for")
},
async ({ location }) => {
// This would normally call a weather API
// Simplified for demonstration
const weatherData = await getWeatherData(location);
return {
content: [
{
type: "text",
text: `Temperature: ${weatherData.temperature}°F, Conditions: ${weatherData.conditions}, Location: ${weatherData.location}`
}
]
};
}
);
// Define a forecast tool
server.tool(
"forecastTool",
{
location: z.string(),
days: z.number().default(3).describe("Number of days for forecast")
},
async ({ location, days }) => {
// This would normally call a weather API
// Simplified for demonstration
const forecast = await getForecastData(location, days);
return {
content: [
{
type: "text",
text: `${days}-day forecast for ${location}: ${JSON.stringify(forecast)}`
}
]
};
}
);
// Helper functions
async function getWeatherData(location) {
// Simulate API call
return {
temperature: 72.5,
conditions: "Sunny",
location: location
};
}
async function getForecastData(location, days) {
// Simulate API call
return Array.from({ length: days }, (_, i) => ({
day: i + 1,
temperature: 70 + Math.floor(Math.random() * 10),
conditions: i % 2 === 0 ? "Sunny" : "Partly Cloudy"
}));
}
// Connect the server using stdio transport
const transport = new StdioServerTransport();
server.connect(transport).catch(console.error);
console.log("Weather MCP Server started");हे JavaScript उदाहरण MCP क्लायंट कसे तयार करावे, जो सर्व्हरशी कनेक्ट होतो, प्रॉम्प्ट पाठवतो, आणि प्रतिसाद प्रक्रिया करतो, ज्यामध्ये केलेल्या कोणत्याही साधन कॉल्सचा समावेश आहे.
MCP प्रोटोकॉलमध्ये सुरक्षा आणि अधिकृतता व्यवस्थापनासाठी अनेक अंगभूत संकल्पना आणि यंत्रणा समाविष्ट आहेत:
-
साधन परवानगी नियंत्रण:
क्लायंट सत्रादरम्यान मॉडेलला कोणती साधने वापरण्याची परवानगी आहे हे निर्दिष्ट करू शकतात. यामुळे फक्त स्पष्टपणे अधिकृत साधनेच प्रवेशयोग्य आहेत याची खात्री होते, अनपेक्षित किंवा असुरक्षित ऑपरेशन्सचा धोका कमी होतो. परवानग्या वापरकर्ता प्राधान्ये, संस्थात्मक धोरणे, किंवा संवादाच्या संदर्भावर आधारित गतिशीलपणे कॉन्फिगर केल्या जाऊ शकतात. -
प्रमाणीकरण:
सर्व्हर साधन, संसाधने, किंवा संवेदनशील ऑपरेशन्समध्ये प्रवेश देण्यापूर्वी प्रमाणीकरण आवश्यक करू शकतात. यामध्ये API keys, OAuth tokens, किंवा इतर प्रमाणीकरण योजना समाविष्ट असू शकतात. योग्य प्रमाणीकरण सुनिश्चित करते की फक्त विश्वासार्ह क्लायंट आणि वापरकर्ते सर्व्हर-साइड क्षमता वापरू शकतात. -
व्हॅलिडेशन:
सर्व साधन अंमलबजावणींसाठी पॅरामीटर व्हॅलिडेशन लागू केले जाते. प्रत्येक साधन त्याच्या पॅरामीटर्ससाठी अपेक्षित प्रकार, स्वरूप, आणि मर्यादा परिभाषित करते, आणि सर्व्हर येणाऱ्या विनंत्यांची तदनुसार पडताळणी करतो. यामुळे खराब स्वरूपाचा किंवा दुर्भावनायुक्त इनपुट साधन अंमलबजावणीपर्यंत पोहोचण्यापासून रोखले जाते आणि ऑपरेशन्सची अखंडता राखण्यास मदत होते. -
रेट लिमिटिंग:
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 क्लायंट-सर्व्हर आर्किटेक्चर वापरते, जिथे यजमान अनेक क्लायंट कनेक्शन व्यवस्थापित करतात
- सहभागी: पर्यावरणामध्ये यजमान (AI अनुप्रयोग), क्लायंट (प्रोटोकॉल कनेक्टर्स), आणि सर्व्हर (क्षमता प्रदाते) समाविष्ट आहेत
- ट्रान्सपोर्ट यंत्रणा: संवाद STDIO (स्थानिक) आणि Streamable HTTP सह पर्यायी SSE (दूरस्थ) समर्थित करते
- मुख्य प्रिमिटिव्ह्स: सर्व्हर साधने (अंमलबजावणीयोग्य कार्ये), संसाधने (डेटा स्रोत), आणि प्रॉम्प्ट्स (टेम्पलेट्स) उघड करतात
- क्लायंट प्रिमिटिव्ह्स: सर्व्हर क्लायंटकडून नमुने (LLM पूर्णता), elicitation (वापरकर्ता इनपुट), आणि लॉगिंग विनंती करू शकतात
- प्रोटोकॉल पाया: JSON-RPC 2.0 वर आधारित, तारीख-आधारित आवृत्तीकरणासह (सध्याचे: 2025-06-18)
- रिअल-टाइम क्षमता: डायनॅमिक अद्यतने आणि रिअल-टाइम समक्रमणासाठी सूचना समर्थित करते
- सुरक्षा प्रथम: स्पष्ट वापरकर्ता संमती, डेटा गोपनीयता संरक्षण, आणि सुरक्षित ट्रान्सपोर्ट मुख्य आवश्यकता आहेत
तुमच्या क्षेत्रात उपयुक्त ठरेल असे एक सोपे MCP साधन डिझाइन करा. परिभाषित करा:
- साधनाचे नाव काय असेल
- कोणते पॅरामीटर्स स्वीकारले जातील
- कोणते आउटपुट परत केले जाईल
- मॉडेल वापरकर्त्याच्या समस्यांचे निराकरण करण्यासाठी हे साधन कसे वापरू शकते
पुढे: Chapter 2: Security
अस्वीकरण:
हा दस्तऐवज AI भाषांतर सेवा Co-op Translator चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
