AI एजेंट्स बनानामध्यमपाठ 2017 मिनट का पाठ

अपना खुद का MCP सर्वर लिखना

Model Context Protocol किसी भी कम्पैटिबल ऐप को आपके टूल्स इस्तेमाल करने देता है। जानें कि एक सर्वर क्या एक्सपोज़ करता है, यह कैसे स्ट्रक्चर्ड होता है, और इसे लीस्ट प्रिविलेज (कम से कम अधिकार) पर कैसे रखा जाए।

पाठ वीडियो में

60 सेकंड में

अपना खुद का MCP सर्वर लिखना

Model Context Protocol किसी भी कम्पैटिबल ऐप को आपके टूल्स इस्तेमाल करने देता है। जानें कि एक सर्वर क्या एक्सपोज़ करता है, यह कैसे स्ट्रक्चर्ड होता है, और इसे लीस्ट प्रिविलेज (कम…

1/4
आसान शब्दों में
स्टैंडर्ड प्लग वाला फ़ोन चार्जर कई फ़ोनों के साथ काम करता है। स्टैंडर्ड प्लग से पहले, हर फ़ोन को अपने चार्जर की ज़रूरत होती थी। MCP एआई टूल्स के लिए एक स्टैंडर्ड प्लग की तरह है: अपना टूल एक बार लिखें, और कई एआई ऐप्स उससे कनेक्ट हो सकते हैं।
Model Context Protocol (MCP) एआई ऐप्लिकेशन्स को टूल्स और डेटा से जोड़ने के लिए एक ओपन प्रोटोकॉल है। एक MCP सर्वर एक छोटा प्रोग्राम होता है जो क्षमताएं (capabilities) प्रदान करता है। एक एआई ऐप (एक चैट ऐप, एक IDE, या आपका अपना एजेंट) के अंदर मौजूद MCP क्लाइंट सर्वर से कनेक्ट होता है और जो कुछ वे ऑफर करते हैं उसे मॉडल तक पहुंचाता है। मैसेजेस JSON-RPC का उपयोग करते हैं।

एक सर्वर क्या एक्सपोज़ कर सकता है

प्रिमिटिव (Primitive)यह क्या हैआमतौर पर इसे इस्तेमाल करने का फ़ैसला कौन करता हैउदाहरण
Toolsफ़ंक्शन्स जिन्हें मॉडल कॉल कर सकता है, नाम, विवरण (description) और इनपुट स्कीमा के साथ।ऐप के नियमों के दायरे में मॉडल।get_bus_times(stop_id)
Resourcesडेटा जिसे ऐप पढ़ सकता है और कॉन्टेक्स्ट में जोड़ सकता है, जिसे URI द्वारा पहचाना जाता है।ऐप या यूज़र।एक फ़ाइल, एक डेटाबेस रिकॉर्ड, एक पॉलिसी डॉक्यूमेंट।
Promptsसर्वर द्वारा ऑफ़र किए जाने वाले दोबारा इस्तेमाल होने योग्य प्रॉम्प्ट टेम्पलेट्स।यूज़र, अक्सर किसी मेनू से।"मैनेजर के लिए इस टिकट का सारांश बनाएं"।
सर्वर आमतौर पर दो में से किसी एक तरीके से चलते हैं: एक लोकल प्रोसेस के रूप में जो स्टैंडर्ड इनपुट और आउटपुट (stdio) पर बात करता है, या HTTP पर एक रिमोट सर्विस के रूप में। पर्सनल टूल्स के लिए लोकल तरीका आसान है। रिमोट को सही ऑथेंटिकेशन की आवश्यकता होती है। ट्रांसपोर्ट से जुड़े ताज़ा विवरण के लिए स्पेसिफिकेशन देखें।

एक छोटे सर्वर का स्ट्रक्चर

  1. 1

    सर्वर बनाएं

    इसे एक नाम दें। SDK प्रोटोकॉल मैसेजेस को आपके लिए संभालता है।
  2. 2

    टूल्स रजिस्टर करें

    हर टूल: एक फ़ंक्शन, एक स्पष्ट विवरण और टाइप्ड पैरामीटर्स। SDK स्कीमा तैयार करता है।
  3. 3

    रिसोर्सेज़ और प्रॉम्प्ट्स रजिस्टर करें

    सिर्फ़ तभी जब आपको उनकी ज़रूरत हो। कई सर्वर सिर्फ़ टूल्स के साथ शुरू होते हैं।
  4. 4

    इसे चलाएं

    लोकल ऐप के लिए इसे stdio पर शुरू करें, या रिमोट ऐप के लिए HTTP पर।
  5. 5

    क्लाइंट कनेक्ट करें

    सर्वर को MCP-सपोर्ट करने वाले ऐप की सेटिंग्स में जोड़ें और हर टूल का टेस्ट करें।
Python सहित आधिकारिक SDKs की लिस्ट modelcontextprotocol.io पर दी गई है। नीचे दिया गया स्केच Python SDK के हाई-लेवल सर्वर हेल्पर के स्टाइल में लिखा गया है। इसे केवल उदाहरण समझें: वर्ज़न बदलने पर SDK के नाम और इम्पोर्ट बदल जाते हैं, इसलिए कुछ भी चलाने से पहले आधिकारिक डॉक्यूमेंट्स से ताज़ा क्विकस्टार्ट कॉपी करें।
bus_server.py: illustrative sketch of a tiny MCP server (check the official quickstart for exact API names)python
# Illustrative sketch. Install and API details: see https://modelcontextprotocol.io/
from mcp.server.fastmcp import FastMCP   # name may differ in your SDK version

server = FastMCP("city-bus-times")

TIMES = {"STOP-101": ["08:05", "08:25", "08:45"], "STOP-202": ["09:10", "09:40"]}

@server.tool()
def get_bus_times(stop_id: str) -> str:
    """Next departures for ONE bus stop. Use when the user gives a stop id
    like STOP-101. Read-only. Returns up to 3 times, or a clear error."""
    if stop_id not in TIMES:
        return "No stop " + stop_id + ". Stop ids look like STOP-101."
    return ", ".join(TIMES[stop_id][:3])

@server.resource("stops://list")
def list_stops() -> str:
    """All stop ids this server knows."""
    return "\n".join(sorted(TIMES))

if __name__ == "__main__":
    server.run()   # stdio by default in many versions; check the docs
नोट
यह कोड कोई ख़तरनाक काम नहीं करता: एक तय टेबल पर सिर्फ़ एक रीड-ओनली टूल। यह पहला सर्वर बनाने के लिए बेहतरीन है। राइट (write) टूल्स केवल तभी जोड़ें जब रीड (read) वाला हिस्सा ठीक से काम करने लगे और आपने मंज़ूरी (approval) के बारे में सोच लिया हो।

आपके सर्वर के लिए लीस्ट प्रिविलेज

  • सिर्फ़ वही एक्सपोज़ करें जिसकी ज़रूरत है। अपनी पूरी API को रैप न करें। कुछ सीमित टूल्स के साथ शुरुआत करें।
  • कम से कम क्रेडेंशियल्स का इस्तेमाल करें। यदि सर्वर किसी डेटाबेस को कॉल करता है, तो रीड टूल्स के लिए इसे सिर्फ़ रीड-ओनली अकाउंट दें। सीक्रेट्स को एन्वायरमेंट वेरिएबल्स या सीक्रेट्स मैनेजर में रखें, टूल के विवरण या रिज़ल्ट्स में कभी नहीं।
  • हर इनपुट की जांच करें। आर्ग्युमेंट्स उस मॉडल से आते हैं जिसने शायद कोई दुर्भावनापूर्ण (malicious) टेक्स्ट पढ़ा हो। किसी भी पब्लिक API की तरह वैलिडेट करें: टाइप्स, रेंज, स्वीकृत आईडी और यूज़र की परमिशन।
  • फ़ाइल सिस्टम और नेटवर्क को सीमित करें। फ़ाइल टूल को केवल एक ही फ़ोल्डर दिखना चाहिए। फ़ेच टूल को केवल अनुमति वाले होस्ट्स तक ही पहुंचना चाहिए।
  • छोटे, साफ़-सुथरे रिज़ल्ट्स लौटाएं। सीक्रेट्स, इंटरनल स्टैक ट्रेसेज़ या दूसरे यूज़र्स का डेटा न लौटाएं।
  • विवरणों का वर्ज़न रखें और रिव्यू करें। टूल का विवरण बदलने से मॉडल का व्यवहार बदल जाता है। इसे कोड में बदलाव की तरह ही समझें।
सावधान रहें
सुरक्षा से जुड़े पहलू Hardening MCP servers and clients और Tool poisoning and rug pulls में कवर किए गए हैं: रिमोट सर्वर्स के लिए ऑथेंटिकेशन, वर्ज़न पिन करना, थर्ड-पार्टी सर्वर्स का रिव्यू करना, और यह कि क्लाइंट द्वारा लोड किए जाने से पहले सर्वर के विवरणों पर भरोसा क्यों होना चाहिए। इन लेसन्स को अपने सामने खुला रखकर ही काम करें।
इसे आज़माएं। अपने काम से जुड़ा एक छोटा रीड-ओनली टूल बताएं जो किसी एआई असिस्टेंट के लिए उपयोगी हो, उदाहरण के लिए "हमारी दुकान में किसी प्रोडक्ट का स्टॉक चेक करना"। इसका नाम, विवरण और पैरामीटर्स ऐसे लिखें मानो किसी MCP सर्वर के लिए लिख रहे हों।

और देखें और पढ़ें

लैब

लीस्ट-प्रिविलेज नोट्स के साथ एक छोटे रीड-ओनली MCP सर्वर का डिज़ाइन (और वैकल्पिक रूप से एक काम करने वाला वर्ज़न)।

~45 min

समस्या

कॉलेज के नोटिस बोर्ड के लिए एक MCP सर्वर डिज़ाइन करें। पहले कागज़ पर लिखने वाला काम करें; कोडिंग वाला हिस्सा वैकल्पिक है।

  1. दो टूल्स और एक रिसोर्स की लिस्ट बनाएं। हर टूल के लिए: नाम, "कब उपयोग करें" के साथ विवरण, और टाइप्ड पैरामीटर्स। दोनों टूल्स सिर्फ़ रीड-ओनली होने चाहिए।
  2. एक लीस्ट-प्रिविलेज टेबल लिखें: सर्वर किस क्रेडेंशियल के साथ किस डेटा तक पहुँच सकता है, और वह क्या नहीं कर सकता है।
  3. तीन इनपुट चेक्स और तीन एरर मैसेजेस लिखें जिन पर मॉडल काम कर सके।
  4. वैकल्पिक: फ़ेक डेटा के साथ इसे बनाने के लिए modelcontextprotocol.io पर दिए गए Python क्विकस्टार्ट को फ़ॉलो करें, और प्रोजेक्ट के इंस्पेक्टर टूल या MCP-सपोर्ट करने वाले ऐप से इसका टेस्ट करें।
शुरुआती कोडtext
Server name: college-notices

Tool 1: name | description (use when / do not use for) | parameters | read or write
Tool 2: ...
Resource: uri | what it returns

Least privilege:
  data it can reach:
  credential used:
  can NOT do:

Input checks:
Error messages:

आपका काम तब पूरा होगा जब

कठिन सवाल

उत्तर देखने से पहले ख़ुद जवाब देने की कोशिश करें। अगर आप इनके जवाब दे सकते हैं, तो आप पाठ समझ गए हैं।

Q1बाद में, कॉलेज एक <code>post_notice</code> राइट टूल जोड़ना चाहता है। इसे रिलीज़ करने से पहले आप इसमें क्या जोड़ेंगे?दिखाएं

एक अलग, अधिक सीमित क्रेडेंशियल जो केवल नोटिस बना सकता है; पोस्ट करने से पहले सटीक टेक्स्ट के साथ किसी व्यक्ति को दिखाया जाने वाला कन्फ़र्मेशन स्टेप; लंबाई और कंटेंट की जांच; एक आइडम्पोटेंसी (idempotency) की ताकि दोबारा कोशिश करने पर दो बार पोस्ट न हो जाए; किसने पूछा और क्या पोस्ट किया गया इसका लॉग; और नोटिस हटाने का एक आसान तरीका। राइट टूल को एक अलग सर्वर में रखने पर विचार करें ताकि रीड-ओनली यूज़र्स इसे कभी लोड ही न करें।

Q2टूल का विवरण बदलना सुरक्षा के नज़रिए से एक बड़ा बदलाव क्यों है, भले ही कोड में कोई बदलाव न हुआ हो?दिखाएं

मॉडल क्या करना है, यह कुछ हद तक विवरणों (descriptions) के आधार पर तय करता है। बदला हुआ विवरण मॉडल से नई स्थितियों में किसी टूल को कॉल करवा सकता है, अलग डेटा भेजवा सकता है, या छिपे हुए निर्देशों का पालन करवा सकता है। थर्ड-पार्टी सर्वरों के साथ "rug pull" हमले इसी तरह काम करते हैं। इसलिए विवरणों को रिव्यू किया जाना चाहिए, उनका वर्ज़न रखा जाना चाहिए और थर्ड-पार्टी सर्वरों के लिए उन्हें पिन किया जाना चाहिए।

जारी रखने के लिए कृपया साइन इन करें।

अक्सर पूछे जाने वाले सवाल

क्या अपने एजेंट को टूल्स देने के लिए मुझे MCP की ज़रूरत है?

नहीं। यदि एक ही प्रोग्राम में एक अकेला एजेंट टूल्स का उपयोग करता है, तो आपके अपने लूप में साधारण फ़ंक्शन कॉलिंग ज़्यादा आसान है। MCP तब मदद करता है जब आप चाहते हैं कि वही टूल्स कई एआई ऐप्स में काम करें, या चाहते हैं कि दूसरे लोग बिना कस्टम इंटीग्रेशन कोड लिखे आपके टूल्स का उपयोग कर सकें।

टूल और रिसोर्स में क्या अंतर है?

टूल एक एक्शन है जिसे मॉडल आर्ग्युमेंट्स के साथ कॉल करने का फ़ैसला लेता है। रिसोर्स वह डेटा है जिसे ऐप या यूज़र कॉन्टेक्स्ट में जोड़ने का फ़ैसला करता है, जिसे URI द्वारा पहचाना जाता है। अगर मॉडल को यह तय करना है कि कोई चीज़ कब फ़ेच करनी है, तो उसे टूल बनाएं।

बिना एआई ऐप के मैं MCP सर्वर की टेस्टिंग कैसे करूं?

MCP प्रोजेक्ट इसके लिए डेवलपर टूल्स प्रदान करता है, जैसे कि एक इंस्पेक्टर जो आपको सर्वर से कनेक्ट करने, उसके टूल्स को देखने और उन्हें खुद अपने हाथ से कॉल करने की सुविधा देता है। मौजूदा टूल्स के लिए आधिकारिक साइट देखें। साथ ही हर टूल के पीछे काम करने वाले फ़ंक्शन्स के लिए सामान्य यूनिट टेस्ट भी लिखें।

क्या कोई रिमोट MCP सर्वर मेरी फ़ाइलें देख सकता है?

सिर्फ़ वही जो क्लाइंट उसे भेजता है। लेकिन सर्वर के टूल रिज़ल्ट्स और विवरण मॉडल के कॉन्टेक्स्ट में जाते हैं, इसलिए कोई दुर्भावनापूर्ण सर्वर मॉडल को प्रभावित करने की कोशिश कर सकता है। केवल उन्हीं सर्वर्स को कनेक्ट करें जिन पर आप भरोसा करते हैं, और हर एक को उतनी ही कम एक्सेस दें जितनी ज़रूरत हो।

पाठ का टेस्ट

5 सवाल। पास होने और इस पाठ को पूरा करने के लिए 3 सही होने चाहिए (60%)।

टेस्ट देने और अपनी प्रोग्रेस सेव करने के लिए साइन इन करें