← कोर्सच्या मुख्य पानाकडे परत

📐 8 धडे आकृत्यांमध्ये

जांभळा = प्रोटोकॉल (1–5) · नारिंगी = बांधा & deploy (6–8). धडे 02, 04, 07 sequence आकृत्या आहेत — प्रोटोकॉलची नैसर्गिक भाषा.

1 🍝 MCP का

adapter चा ड्रॉवर (N×M) → मानक socket (N+M).

🧒 सोप्या शब्दांत

कल्पना करा, वर्गातल्या प्रत्येक उपकरणाचा plug वेगळाच आहे, म्हणून प्रत्येक खोलीला प्रत्येक उपकरणासाठी खास adapter लागतो: 3 खोल्या × 4 उपकरणे = 12 adapters. मग शाळेने एकच standard socket ठरवला. प्रत्येक खोलीत socket एकदा बसवला, प्रत्येक उपकरणाला plug एकदा लावला: 3 + 4 = 7 कामे, आणि सगळे सगळीकडे चालते. AI apps आणि त्यांच्या tools मधला तो standard socket म्हणजे MCP.

📖 नवे शब्दMCP — Model Context Protocol: AI apps नी tools आणि data शी बोलण्याचा एकच standard मार्गhost — socket असलेले AI app, जसे IDE किंवा chatbotserver — MCP plug मधून एखादे tool किंवा data source देणारा programN×M — प्रत्येक app गुणिले प्रत्येक tool — प्रत्येक जोडीसाठी वेगळा adapter
1🍝 आधी — N×M हाताने बांधलेले adapters💻 IDE💬 chatbot🤖 agent🐙 GitHub📁 files🗄️ शाळेचा DB📅 calendar3 × 4 = 12 adapters, एकही पुन्हा वापरता येत नाही2🔌 नंतर — प्रत्येक host म्हणजे socket, प्रत्येक server म्हणजे plug (N+M)💻 IDE💬 chatbot🤖 agentMCP🐙 GitHub📁 files🗄️ शाळेचा DB📅 calendar3 + 4 = 7 implementations, प्रत्येक सगळ्यांशी चालते3🔌 AI साधनांसाठी USB ची कल्पनाGitHub server एकदा लिहा → प्रत्येक MCP host वापरू शकतो · एक host लिहा → तो प्रत्येक MCP server वापरू शकतोprotocol म्हणजे plug चा आकार: server काय देतो ते कसे विचारायचे, कसे बोलवायचे, उत्तर कसे वाचायचे
⏪ आधी

प्रत्येक AI app ला प्रत्येक tool साठी हाताने बनवलेला adapter लागायचा: 3 hosts × 4 tools = 12 adapters, एकही पुन्हा वापरता येत नाही.

💡 काय

MCP म्हणजे AI tools साठी USB सारखा standard socket: प्रत्येक host एक socket आणि प्रत्येक server एक plug.

⚙️ कसे

Protocol plug चा आकार ठरवतो: server काय देतो ते कसे विचारायचे, त्याला call कसा करायचा आणि उत्तर कसे वाचायचे.

🎯 का

12 ऐवजी 3 + 4 = 7 implementations: GitHub server एकदाच लिहा आणि प्रत्येक MCP host तो वापरू शकतो.

🚀 पुढे

पुढचा धडा खोली उघडतो: host, client आणि server कोण आहेत, आणि काय चालेल ते कोण ठरवतो.

🧪 Try it here — hosts आणि servers वाढवा — MCP शिवाय आणि सह adapters मोजा
34

संपूर्ण धडा 01 वाचा →

2 🏫 आर्किटेक्चर

खोली (host) · भिंतीवरचे socket (client) · वाद्य (server).

🧒 सोप्या शब्दांत

विज्ञान प्रयोगशाळेत विद्यार्थी microscope मागू शकतो, पण तो द्यायचा की नाही ते खोलीतले शिक्षक ठरवतात. MCP असेच चालते: model शब्दांत मागतो, host (खोली) परवानगी तपासतो, आणि client (भिंतीवरचा socket) request server (उपकरण) पर्यंत नेतो, जो काम करतो. मग उत्तर परत model च्या बाकावर येते.

📖 नवे शब्दmodel — शब्द वाचणारा आणि लिहिणारा AI; तो फक्त मागू शकतो, स्वतः कृती करू शकत नाहीhost — model भोवतीचे app, जे खरोखर काय चालेल ते ठरवतेclient — host मधला जोडणारा भाग; प्रत्येक server connection साठी एकserver — प्रत्यक्ष काम करणारा program, जसे grade शोधणेtools/call — 'हे tool या inputs सह चालव' असे सांगणारा message
1🏫 host म्हणजे खोली: model विचारते, host ठरवतो, server करतो🧠 मॉडेल🏫 host🔌 client🔬 server1 "I want lookup_grade(katrina)" — in words2 🚧 host ठरवतोपरवानगीची तपासणी इथेमंजूर → पुढे पाठवा3 tools/call {name, arguments}4 result {content: "Katrina (3A): A+"}5 → model च्या डेस्कवर येते 📄2🧩 एक host, अनेक clients — प्रत्येक server जोडणीला एक client🏫 host (उदा. IDE)🔌 clientGitHub🔌 clientfiles🔌 clientशाळेचा DB
⏪ आधी

Model थेट tools call करू शकले असते, तर त्याच्या शब्दांमध्ये आणि तुमच्या data वरील खऱ्या कृतींमध्ये कोणीच नसते.

💡 काय

Host म्हणजे खोली: model विचारतो, host ठरवतो, आणि server client socket मधून काम करतो.

⚙️ कसे

Model lookup_grade(student=katrina) मागतो; host परवानगी तपासतो, मग client tools/call पाठवतो.

🎯 का

परवानगीची तपासणी host मध्ये असते, आणि एक host प्रत्येक server connection साठी एक client चालवतो: GitHub, files, DB.

🚀 पुढे

पुढे server काय देऊ शकतो ते पाहाल — tools, resources आणि prompts — आणि प्रत्येक घ्यायचे कोण ठरवतो.

🧪 Try it here — model ची इच्छा host मधून पाठवा — आणि host म्हणून ठरवा

संपूर्ण धडा 02 वाचा →

3 🧰 तीन कपाटे

Tools, resources, prompts — मॉडेल, ॲप आणि user प्रत्येकी एक ठरवतात.

🧒 सोप्या शब्दांत

वर्गात तीन कप्पे असतात. एकात काहीतरी करण्यासाठी वापरायच्या वस्तू, जसे stapler; एकात वाचायची पुस्तके आणि तक्ते; एकात तयार activity cards. MCP मध्ये model tools च्या कप्प्यातून निवडतो, app बाकावर कोणते resources ठेवायचे ते निवडते, आणि user prompt निवडतो, उदा. slash-command मेनूमधून.

📖 नवे शब्दtools — inputs असलेल्या कृती, जसे lookup_grade(student); model त्या निवडतोresources — वाचायच्या गोष्टी, जसे file:///handbook.pdf; app त्या निवडतेprompts — /weekly-report सारख्या तयार कृती-पद्धती; user त्या निवडतो
1🧰📁📜 तीन कपाटे — आणि प्रत्येकातून कोण घेते ते कोण ठरवते🧰 TOOLSinputs असलेल्या कृतीlookup_grade(student)add_homework(class, title)कोण ठरवते:MODEL(host परवानगी देत असेल तर)📁 RESOURCESवाचता येणारा संदर्भfile:///handbook.pdfdb://students/3Aकोण ठरवते:APP(टेबलावर काय जाते)📜 PROMPTSसुचवलेल्या कृती/summarize-ticket/weekly-reportकोण ठरवते:USER(menus, slash-commands)2💬 दोनदा म्हणाtools: model कृती निवडते · resources: app काय दाखवायचे ते निवडते · prompts: user कृती निवडतोserver कोणतेही मिश्रण देऊ शकतो — शाळेचा server तीन tools देतो आणि बाकी काही नाही
⏪ आधी

सगळ्यालाच 'tool' म्हटले तर काय वापरायचे ते कोणी ठरवायचे हे लपते: model, app की user.

💡 काय

Server तीन कप्पे देतो: tools (कृती), resources (वाचता येणारा context) आणि prompts (सुचवलेल्या कृती-पद्धती).

⚙️ कसे

Model lookup_grade सारखे tools निवडतो, app file:///handbook.pdf सारखे resources, आणि user /weekly-report निवडतो.

🎯 का

कोण ठरवतो हे कळले की नियंत्रण कुठे आहे ते कळते; server कोणतेही मिश्रण देऊ शकतो — school server फक्त तीन tools देतो.

🚀 पुढे

पुढचा धडा wire वरील खरे messages दाखवतो: server/discover, tools/list आणि tools/call.

🧪 Try it here — प्रत्येक गोष्टीसाठी कोण पोहोचतो — model, app की user?

संपूर्ण धडा 03 वाचा →

4 🪪 तार

तीन क्रियापदे आणि प्रत्येक संदेशावर एक बॅज — संपूर्ण प्रोटोकॉल (आवृत्ती 2026-07-28), संदेशा-संदेशाने.

🧒 सोप्या शब्दांत

शाळा कार्यालयाला चिठ्ठी पाठवताना तुम्ही प्रत्येक चिठ्ठीवर नाव आणि वर्ग लिहिता, म्हणजे ड्युटीवरचा कोणताही कारकून तुम्हाला न आठवता उत्तर देऊ शकतो. MCP असेच चालते. तीन requests आहेत: 'तू काय support करतोस?', 'तुझे tools सांग' आणि 'हे tool चालव'. प्रत्येकावर स्वतःचा _meta badge असतो, म्हणून handshake नाही आणि session ठेवायची गरज नाही.

📖 नवे शब्द_meta — प्रत्येक request वरचा badge, जो protocol version आणि कोण विचारतोय ते सांगतोserver/discover — ऐच्छिक पहिला प्रश्न: 'तू कोणत्या versions आणि सुविधा support करतोस?'tools/list — server कडे त्याचे tools मागतो, प्रत्येकाचे नाव, वर्णन आणि input schema सहtools/call — arguments सह एक tool चालवतो; उत्तर त्याच id सह परत येतेsession — requests मध्ये server तुमच्याबद्दल ठेवतो ती आठवण — या revision मध्ये ती नाही
1🪪 wire — तीन क्रियापदे आणि प्रत्येक संदेशावर बिल्ला (revision 2026-07-28)🔌 client🔬 serverserver/discover {_meta: {protocolVersion, clientInfo, clientCapabilities}} (optional)1{resultType, supportedVersions: ["2026-07-28"], capabilities: {tools: {}}, _meta: {serverInfo}}tools/list — तोच _meta बॅज घालून 🪪 (प्रत्येक विनंती घालते)2{tools: [{name: "lookup_grade", description, inputSchema}, …]}tools/call {name: "lookup_grade", arguments: {student: "katrina"}, id: 4}3{id: 4, content: [{type: "text", text: "Katrina (3A) has grade A+"}]}handshake नाही, session नाही: प्रत्येक request स्वतःचा बिल्ला घेऊन येते, म्हणून कोणतीही server प्रत उत्तर देऊ शकते · python3 client/mini_client.py चालवा आणि नेमक्या याच ओळी पहा
⏪ आधी

Handshake आणि session ने सुरू होणाऱ्या protocol मध्ये त्याच server ला प्रत्येक client लक्षात ठेवावा लागतो.

💡 काय

Wire म्हणजे तीन क्रियापदे — server/discover, tools/list, tools/call — आणि प्रत्येक request वर एक _meta badge.

⚙️ कसे

tools/call {name: lookup_grade, arguments: {student: katrina}, id: 4} ला id 4 सह 'Katrina (3A) has grade A+' उत्तर मिळते.

🎯 का

Handshake नाही, session नाही: प्रत्येक request स्वतःचा badge घेऊन येतो, म्हणून कोणतीही server replica उत्तर देऊ शकते.

🚀 पुढे

पुढचा धडा हेच messages दोन transports वरून नेतो — stdio आणि Streamable HTTP — आणि विश्वासाचे नियम जोडतो.

🧪 Try it here — mini client आणि शाळेच्या server मधले खरे संदेश एकेक करून पहा

संपूर्ण धडा 04 वाचा →

5 🚧 Transports & विश्वास

थेट प्लग (stdio) विरुद्ध extension cord (Streamable HTTP) — आणि न भाजण्याची तीन शिफारस केलेली धोरणे.

🧒 सोप्या शब्दांत

दिवा थेट भिंतीत plug करता येतो, किंवा extension cord ने दूरच्या socket पर्यंत नेता येतो. MCP servers ही अशाच दोन प्रकारे जोडतात: stdio, म्हणजे तुमच्याच computer वर चालणारा program, किंवा Streamable HTTP, म्हणजे internet पलीकडचा server जो बहुधा OAuth ने login मागतो. कसेही असो, सावध राहा: local server खरे software आहे, त्याची उत्तरे फक्त data आहेत, आणि बदलांसाठी माणसाचा होकार लागतो.

📖 नवे शब्दstdio — थेट plug: host server ला program म्हणून सुरू करतो आणि stdin/stdout वरून बोलतोStreamable HTTP — extension cord: तेच messages internet वरून HTTP POST ने पाठवले जातातOAuth — login करून remote server ला मर्यादित प्रवेश देण्याचा standard मार्गprompt injection — tool परत देतो त्या मजकुरात लपलेल्या आज्ञा, जसे 'ignore previous instructions'
1🔌 stdio — थेट plug🏫 host process🔬 serverchild processstdinstdoutओळीला एक JSON संदेश · network अजिबात नाहीस्थानिक गोष्टी: फाइल्स, git, स्थानिक database2📡 Streamable HTTP — extension cord🏫 hostinternet🔬 remote serverteam DB, SaaSOAuthतेच MCP संदेश HTTP POST वरून (+ streaming)दूरचे servers auth जोडतात — बहुधा OAuth3🚧 भाजून न घेण्याची तीन धोरणे1 · स्थानिक server म्हणजे software चतो तुमच्या process च्या परवानग्यांनी चालतो —ॲप म्हणून install कराल तेच install करा2 · tool निकालात prompt injection असू शकतेweb पानातले "आधीच्या सूचना विसरा…"म्हणजे data, आदेश नव्हे3 · परिणामकारक कृतींना माणसाचा click हवापाठवा, भरा, delete, merge — host विचारतो,प्रत्येक वेळी
⏪ आधी

कोणताही server विचार न करता जोडला तर अनोळखी software तुमच्या परवानग्यांनी चालते आणि model ला धोकादायक मजकूर देते.

💡 काय

stdio म्हणजे local child process ला थेट plug; Streamable HTTP म्हणजे remote server पर्यंतची extension cord.

⚙️ कसे

stdio stdin/stdout वरून प्रत्येक ओळीत एक JSON message पाठवतो; HTTP तेच messages POST ने, बहुधा OAuth सह पाठवतो.

🎯 का

तीन धोरणे: local server म्हणजे software, tool results म्हणजे data, आज्ञा नव्हे, आणि writes साठी माणसाची परवानगी.

🚀 पुढे

पुढे तुम्ही स्वतःचा server बांधाल, मग असा client ज्याचा host allow? क्षणी ही धोरणे लागू करतो.

🧪 Try it here — tool चा निकाल येतो — host ने त्यावर कृती करावी का?

संपूर्ण धडा 05 वाचा →

6 🔬 सर्व्हर बांधा

~125 प्रामाणिक ओळी: गुंडाळलेली वस्तू, कपाट, dispatcher, plumbing.

🧒 सोप्या शब्दांत

grade बद्दलच्या प्रश्नांना उत्तर देणाऱ्या शाळा कार्यालयाचा विचार करा. सगळ्यात मागे नोंदवही, मग कार्यालय काय करू शकते याची भिंतीवरची यादी, मग उत्तर शोधणारा कारकून, आणि पुढे एक खिडकी जिथून चिठ्ठ्या आत येतात आणि उत्तरे बाहेर जातात. school_server.py मध्ये सुमारे 125 ओळींत हेच चार थर आहेत, आणि MCP म्हणजे फक्त पुढची खिडकी.

📖 नवे शब्दinputSchema — tool ला लागणाऱ्या inputs चे वर्णन, उदा. student हा मजकूर असायला हवाdescription — model साठी लिहिलेले साधे वाक्य, म्हणजे tool केव्हा वापरायचे ते त्याला कळतेrun_tool — काम करणारी साधी if-ladder; protocol शिवाय ती test करता येतेJSON-RPC — message ची रचना: method, inputs आणि id; errors नम्र messages म्हणून परत येतातflush=True — प्रत्येक उत्तर लगेच बाहेर पाठवते, म्हणजे host वाट पाहत राहत नाही
1🔬 server/school_server.py — चार थरांत ~125 ओळी1 🗄️ गुंडाळलेली गोष्टGRADES = {"katrina": ("3A","A+"), …} — इथे खेळण्यातला dict, प्रत्यक्षात तुमचा Postgres किंवा APIMCP म्हणजे फक्त पुढचा plug2 📋 कपाट: TOOLSname · description (MODEL साठी लिहिलेले) · inputSchema {student: string, required}समृद्ध schemas आणि स्पष्ट descriptions model ला दिशा देतात3 🔀 run_tool(name, args)साधी Python if-शिडी — protocol शिवाय unit-test करता येणारीif name == "lookup_grade": return grade_of(args["student"])4 🔧 main() नळकामओळ वाचा → बिल्ला तपासा → JSON-RPC dispatch → ओळ लिहा · print(..., flush=True)!errors = सभ्य JSON-RPC errors, crash कधीच नाहीflush=True विसरलात तर buffer मध्ये बसलेल्या उत्तराची host कायम वाट पाहतो — पहिला नेहमीचा bug
⏪ आधी

स्पष्ट रचना नसेल तर server business logic आणि protocol plumbing एकत्र करतो आणि test करणे कठीण होते.

💡 काय

school_server.py म्हणजे चार थरांतील ~125 ओळी: wrapped गोष्ट, TOOLS कप्पा, run_tool आणि main() plumbing.

⚙️ कसे

main() एक ओळ वाचतो, badge तपासतो, JSON-RPC dispatch करतो आणि print(..., flush=True) ने एक ओळ लिहितो.

🎯 का

run_tool ही साधी if-ladder आहे, protocol शिवाय unit-test करता येते, आणि errors नम्र JSON-RPC errors बनतात.

🚀 पुढे

खेळण्यातील GRADES dict ऐवजी तुमचा Postgres किंवा API लावा; पुढचा धडा या server ला call करणारा client बांधतो.

🧪 Try it here — server चा run_tool() थेट बोलवा — protocol शिवाय

संपूर्ण धडा 06 वाचा →

7 🔌 क्लायंट बांधा

सत्ता असलेली बाजू — मॉडेल सुचवते, HOST मध्यस्थी करतो.

🧒 सोप्या शब्दांत

विद्यार्थी म्हणू शकतो 'grade register आणा', पण ते खरोखर होईल की नाही ते वर्गशिक्षक ठरवतात. MCP मध्ये host म्हणजे ते शिक्षक: model फक्त tool call सुचवतो, आणि काहीही चालण्यापूर्वी host 'allow? [y/N]' ला थांबतो. खरा host विचारतो: हे tool चालण्याची परवानगी आहे का, inputs योग्य आहेत का, यामुळे काही बदलेल का? मग माणसाला विचारतो.

📖 नवे शब्दhost — सुचवलेला tool call खरोखर होईल की नाही ते ठरवणारे appclient — connection ची host कडची बाजू, जी server ला tools/call पाठवतेallow? [y/N] — call चालण्यापूर्वी माणूस होकार किंवा नकार देतो ते थांबणेagent host — असा host जिथे तुमच्या keyboard ऐवजी खरा model API tool calls सुचवतो
1🔌 client बाजूकडे ताकद — model सुचवते, HOST ठरवतो🧑 तुम्ही (--drive)🏫 MiniHost🔬 school_server1 "call lookup_grade {student: katrina}"⚡ 2 ताकदीचा क्षणallow? [y/N] 🚧tools/call {…, id: 4}3 {id: 4, content: [… grade A+ …]}4 📄 डेस्कवर येतेclient/mini_client.py — input() च्या जागी मॉडेलचा API कॉल ठेवा आणि तुमच्याकडे खरा agent host आहे2🧑‍⚖️ पायरी 2 वर खरा host काय तपासतोहे tool मुळात चालते का?arguments योग्य आहेत का?ते जग बदलते का?माणसाला विचारा
⏪ आधी

Model ने मागितलेले सगळे client ने सरळ चालवले, तर एक चुकीची सूचना कोणी न तपासता जग बदलू शकते.

💡 काय

खरी सत्ता client बाजूकडे असते: model फक्त सुचवतो, आणि tool call होईल की नाही ते host ठरवतो.

⚙️ कसे

MiniHost tools/call {…, id: 4} पाठवण्यापूर्वी allow? [y/N] विचारतो, आणि result model च्या बाकावर येतो.

🎯 का

खरा host तपासतो: tool ला परवानगी आहे का, arguments योग्य आहेत का, ते जग बदलते का? मग माणसाला विचारतो.

🚀 पुढे

client/mini_client.py मधील input() ऐवजी model API call लावा, आणि तुमच्याकडे खरा agent host तयार.

🧪 Try it here — mini host चालवा: तुम्ही इच्छा लिहा, host विचारतो, server उत्तर देतो

संपूर्ण धडा 07 वाचा →

8 🌍 खऱ्या जगातील वापर

कोडिंग, support, डेटा, बैठका, अहवाल — sequence आकृत्यांसह.

🧒 सोप्या शब्दांत

एकच भिंतीवरचा socket projector, पंखा किंवा किटली चालवू शकतो. तसेच तोच MCP plug AI apps ना code लिहायला, support प्रश्नांची उत्तरे द्यायला, data तपासायला, meetings ची तयारी करायला किंवा reports लिहायला मदत करू देतो — फक्त बाकावर वेगवेगळे servers ठेवून. खऱ्या व्यवस्था read-only accounts आणि merge किंवा post करण्यापूर्वी माणसाच्या click ने सुरक्षित राहतात.

📖 नवे शब्दread-only — data पाहू शकतो पण कधीच बदलू शकत नाहीscoped account — कामाला लागेल तेवढेच करू शकणारा login, उदा. फक्त SELECTPR — pull request: माणसाच्या मंजुरीची वाट पाहणारे सुचवलेले code बदलN+M — प्रत्येक नवा server प्रत्येक host सोबत चालतो, आणि प्रत्येक host प्रत्येक server सोबत
1🌍 पाच खरे hosts — तोच plug, डेस्कवर वेगवेगळे servers🐙 coding assistantissuecodetestsPRPR तुमच्या click ची वाट पाहतो 🚧🎧 support deskप्रश्नorders DB (फक्त वाचन)docsउत्तर + पावत्याorders DB वर फक्त-वाचन scope📊 data analystप्रश्नquery_db (SELECT only)make_chartअहवालमर्यादित database खाते, admin नव्हे📅 बैठक-तयारीचा butlercalendarCRMemailटिपण3 servers, एक डेस्क — N+M प्रत्यक्ष📁 अहवाल रोबोटfolder वाचासारांशमसुदाslack_post 🚧post करणे माणसाच्या click ने अडवलेले
⏪ आधी

प्रत्येक AI product code, orders, calendars आणि chat साठी स्वतःचे खाजगी connectors पुन्हा पुन्हा जोडायचे.

💡 काय

पाच खरे hosts — coding, support, data, meeting prep, report robot — वेगवेगळ्या servers सह तोच plug वापरतात.

⚙️ कसे

Data analyst आधी query_db (फक्त SELECT) आणि मग make_chart call करतो; meeting butler calendar, CRM आणि email वाचतो.

🎯 का

मर्यादित accounts आणि माणसाची परवानगी, जसे PR click आणि slack_post click, खरे deployments सुरक्षित ठेवतात.

🚀 पुढे

Servers जोडून host वाढवा: एका बाकावर 3 servers म्हणजे प्रत्यक्षात N+M, आणि प्रत्येक नवा server प्रत्येक host सोबत चालतो.

🧪 Try it here — use case निवडा आणि त्याला कोणते servers आणि कोणते दरवाजे लागतात ते पहा

संपूर्ण धडा 08 वाचा →