spinny:~/writing $ less mcp-model-context-protocol-guide.md
12**Model Context Protocol (MCP)** Anthropic द्वारा बनाया गया एक ओपन स्टैंडर्ड है जो परिभाषित करता है कि AI मॉडल बाहरी टूल्स, डेटा स्रोतों और सेवाओं के साथ कैसे संवाद करते हैं। इसे "AI का USB-C" समझें - एक यूनिवर्सल कनेक्टर जो किसी भी AI एजेंट को एक मानकीकृत इंटरफ़ेस के माध्यम से किसी भी टूल से बात करने देता है।34अपने लॉन्च के बाद से, MCP ने **97 मिलियन मासिक SDK डाउनलोड** पार कर लिए हैं और इसे हर प्रमुख AI प्रदाता ने अपनाया है: Anthropic, OpenAI, Google, Microsoft और Amazon। इस गाइड में, हम MCP के साथ बनाने के लिए आवश्यक सब कुछ जानेंगे।56## MCP क्यों मौजूद है78MCP से पहले, हर AI एप्लिकेशन को हर उस टूल के लिए कस्टम इंटीग्रेशन बनाना पड़ता था जिसे वह उपयोग करना चाहता था। अपनी AI से फाइलें पढ़वाना चाहते हैं? कस्टम कोड लिखें। डेटाबेस क्वेरी करना? और कस्टम कोड। Slack पर पोस्ट करना? एक और इंटीग्रेशन।910इसने एक **N×M समस्या** पैदा की: N AI एप्लिकेशन्स में से प्रत्येक को M कस्टम इंटीग्रेशन की आवश्यकता थी, जिससे दोहरा प्रयास और खंडित इकोसिस्टम बने।1112```mermaid13graph TD14 subgraph "Before MCP (N×M)"15 A1[AI App 1] --> T1[GitHub Integration]16 A1 --> T2[Slack Integration]17 A1 --> T3[DB Integration]18 A2[AI App 2] --> T4[GitHub Integration]19 A2 --> T5[Slack Integration]20 A2 --> T6[DB Integration]21 end22```2324MCP इसे एक **एकल प्रोटोकॉल** से हल करता है जिसका उपयोग कोई भी AI क्लाइंट किसी भी MCP सर्वर के साथ संवाद करने के लिए कर सकता है:2526```mermaid27graph TD28 subgraph "With MCP (N+M)"29 A1[AI App 1] --> MCP[MCP Protocol]30 A2[AI App 2] --> MCP31 MCP --> S1[GitHub Server]32 MCP --> S2[Slack Server]33 MCP --> S3[DB Server]34 end35```3637## मुख्य अवधारणाएँ3839MCP में तीन मूलभूत प्रिमिटिव हैं:4041### 1. टूल्स (Tools)42टूल्स ऐसे फंक्शन हैं जिन्हें AI कॉल कर सकती है। वे "फाइल बनाएं", "डेटाबेस क्वेरी करें", या "मैसेज भेजें" जैसी क्रियाओं का प्रतिनिधित्व करते हैं। हर टूल का एक नाम, विवरण और अपने पैरामीटर्स के लिए एक JSON Schema होता है।4344```typescript45{46 name: "create_issue",47 description: "Create a new GitHub issue",48 inputSchema: {49 type: "object",50 properties: {51 title: { type: "string", description: "Issue title" },52 body: { type: "string", description: "Issue body" },53 repo: { type: "string", description: "Repository name" }54 },55 required: ["title", "repo"]56 }57}58```5960### 2. रिसोर्सेस (Resources)61रिसोर्सेस वह डेटा है जिसे AI पढ़ सकती है। ये फाइलें, डेटाबेस रिकॉर्ड्स, API रिस्पॉन्सेस या कोई भी अन्य डेटा स्रोत हो सकते हैं। रिसोर्सेस की पहचान URIs द्वारा होती है।6263```typescript64{65 uri: "file:///Users/dev/project/README.md",66 name: "Project README",67 mimeType: "text/markdown"68}69```7071### 3. प्रॉम्प्ट्स (Prompts)72प्रॉम्प्ट्स पुन: प्रयोज्य टेम्पलेट हैं जो इंटरैक्शन को संरचित करने में मदद करते हैं। इनमें डायनामिक पैरामीटर शामिल हो सकते हैं और ये सामान्य वर्कफ़्लो को मानकीकृत करने के लिए उपयोगी हैं।7374```typescript75{76 name: "code_review",77 description: "Review code changes for quality and security",78 arguments: [79 { name: "diff", description: "The code diff to review", required: true }80 ]81}82```8384## आर्किटेक्चर8586MCP एक क्लाइंट-सर्वर आर्किटेक्चर का अनुसरण करता है:8788```mermaid89graph LR90 subgraph "Host Application"91 Client[MCP Client]92 end9394 subgraph "MCP Server"95 Server[Server Process]96 Server --> Tools[Tools]97 Server --> Resources[Resources]98 Server --> Prompts[Prompts]99 end100101 Client -- "JSON-RPC 2.0\n(stdio or SSE)" --> Server102```103104- **होस्ट**: AI एप्लिकेशन (Claude Desktop, Cursor, आपका कस्टम ऐप)105- **क्लाइंट**: एक MCP सर्वर के साथ 1:1 कनेक्शन बनाए रखता है106- **सर्वर**: क्लाइंट को टूल्स, रिसोर्सेस और प्रॉम्प्ट्स उपलब्ध कराता है107- **ट्रांसपोर्ट**: संवाद stdio (लोकल) या Server-Sent Events (रिमोट) पर JSON-RPC 2.0 के माध्यम से होता है108109## MCP सर्वर बनाना110111आइए एक प्रैक्टिकल MCP सर्वर बनाएं जो JSON फाइल में संग्रहीत एक कार्य सूची के साथ इंटरैक्ट करता है।112113### सेटअप114115```bash116mkdir mcp-todo-server && cd mcp-todo-server117npm init -y118npm install @modelcontextprotocol/sdk zod119```120121### सर्वर कार्यान्वयन122123```typescript124// src/index.ts125import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";126import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";127import { z } from "zod";128import fs from "fs";129130const TODO_FILE = "./todos.json";131132function readTodos(): { id: number; text: string; done: boolean }[] {133 if (!fs.existsSync(TODO_FILE)) return [];134 return JSON.parse(fs.readFileSync(TODO_FILE, "utf-8"));135}136137function writeTodos(todos: { id: number; text: string; done: boolean }[]) {138 fs.writeFileSync(TODO_FILE, JSON.stringify(todos, null, 2));139}140141const server = new McpServer({142 name: "todo-server",143 version: "1.0.0",144});145146// Tool: Add a todo147server.tool(148 "add_todo",149 "Add a new todo item",150 { text: z.string().describe("The todo text") },151 async ({ text }) => {152 const todos = readTodos();153 const newTodo = { id: Date.now(), text, done: false };154 todos.push(newTodo);155 writeTodos(todos);156 return { content: [{ type: "text", text: `Added: "${text}"` }] };157 }158);159160// Tool: List todos161server.tool(162 "list_todos",163 "List all todo items",164 {},165 async () => {166 const todos = readTodos();167 const list = todos168 .map((t) => `${t.done ? "✅" : "⬜"} [${t.id}] ${t.text}`)169 .join("\n");170 return { content: [{ type: "text", text: list || "No todos yet." }] };171 }172);173174// Tool: Complete a todo175server.tool(176 "complete_todo",177 "Mark a todo as completed",178 { id: z.number().describe("The todo ID to complete") },179 async ({ id }) => {180 const todos = readTodos();181 const todo = todos.find((t) => t.id === id);182 if (!todo) return { content: [{ type: "text", text: "Todo not found." }] };183 todo.done = true;184 writeTodos(todos);185 return { content: [{ type: "text", text: `Completed: "${todo.text}"` }] };186 }187);188189// Resource: Current todos as a readable resource190server.resource(191 "todos://list",192 "Current todo list",193 async () => ({194 contents: [{195 uri: "todos://list",196 mimeType: "application/json",197 text: JSON.stringify(readTodos(), null, 2),198 }],199 })200);201202// Start the server203const transport = new StdioServerTransport();204await server.connect(transport);205```206207### कॉन्फ़िगरेशन208209इस सर्वर को Claude Desktop के साथ उपयोग करने के लिए, इसे अपने कॉन्फ़िग में जोड़ें:210211```json212{213 "mcpServers": {214 "todo": {215 "command": "npx",216 "args": ["tsx", "/path/to/mcp-todo-server/src/index.ts"]217 }218 }219}220```221222## MCP क्लाइंट बनाना223224आप एक कस्टम क्लाइंट भी बना सकते हैं जो किसी भी MCP सर्वर से कनेक्ट होता है:225226```typescript227import { Client } from "@modelcontextprotocol/sdk/client/index.js";228import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";229230const transport = new StdioClientTransport({231 command: "npx",232 args: ["tsx", "./src/index.ts"],233});234235const client = new Client({ name: "my-client", version: "1.0.0" });236await client.connect(transport);237238// List available tools239const { tools } = await client.listTools();240console.log("Available tools:", tools.map((t) => t.name));241242// Call a tool243const result = await client.callTool({244 name: "add_todo",245 arguments: { text: "Write MCP blog post" },246});247console.log(result);248```249250## लोकप्रिय MCP सर्वर251252MCP इकोसिस्टम तेजी से बढ़ा है। यहाँ कुछ सबसे लोकप्रिय सर्वर हैं:253254| सर्वर | विवरण | उपयोग का मामला |255|--------|--------|----------------|256| **GitHub** | Issues, PRs बनाएं, repos प्रबंधित करें | डेवलपमेंट वर्कफ़्लो |257| **Slack** | मैसेज भेजें, चैनल प्रबंधित करें | टीम संचार |258| **PostgreSQL** | डेटाबेस क्वेरी और प्रबंधन | डेटा एक्सेस |259| **Filesystem** | फाइलें पढ़ें, लिखें और खोजें | लोकल डेवलपमेंट |260| **Puppeteer** | ब्राउज़र ऑटोमेशन और स्क्रैपिंग | वेब टेस्टिंग |261| **Sentry** | एरर मॉनिटरिंग और डिबगिंग | प्रोडक्शन सपोर्ट |262| **Supabase** | डेटाबेस, auth, स्टोरेज | बैकएंड ऑपरेशन्स |263264## MCP vs A2A (Agent-to-Agent)265266जबकि MCP **एजेंट-टू-टूल** संचार को संभालता है, Google का **A2A (Agent-to-Agent)** प्रोटोकॉल **एजेंट-टू-एजेंट** संचार को संभालता है। वे पूरक हैं:267268```mermaid269graph TD270 Agent1[Agent 1] -- "A2A Protocol" --> Agent2[Agent 2]271 Agent1 -- "MCP Protocol" --> Tool1[GitHub MCP Server]272 Agent2 -- "MCP Protocol" --> Tool2[Database MCP Server]273```274275- **MCP**: AI एजेंट टूल्स का उपयोग कैसे करता है (वर्टिकल इंटीग्रेशन)276- **A2A**: AI एजेंट्स एक-दूसरे के साथ कैसे सहयोग करते हैं (हॉरिज़ॉन्टल इंटीग्रेशन)277278## सर्वोत्तम प्रथाएँ2792801. **सर्वर को केंद्रित रखें**: प्रत्येक डोमेन के लिए एक सर्वर (GitHub सर्वर, Slack सर्वर, आदि)। मोनोलिथिक सर्वर न बनाएं।2812. **Zod से इनपुट वैलिडेट करें**: हमेशा उचित स्कीमा के साथ टूल इनपुट को वैलिडेट करें।2823. **एरर को सुचारू रूप से हैंडल करें**: स्टैक ट्रेस नहीं, सार्थक एरर मैसेज लौटाएं।2834. **रीड-ओनली डेटा के लिए रिसोर्सेस का उपयोग करें**: यदि AI को केवल डेटा पढ़ना है, तो इसे टूल के बजाय रिसोर्स के रूप में एक्सपोज़ करें।2845. **उचित विवरण जोड़ें**: अच्छे टूल और पैरामीटर विवरण AI को समझने में मदद करते हैं कि प्रत्येक टूल का कब और कैसे उपयोग करना है।2856. **MCP Inspector से टेस्ट करें**: अपने सर्वर को इंटरैक्टिव रूप से टेस्ट करने के लिए `npx @modelcontextprotocol/inspector` का उपयोग करें।286287## शुरू करें288289```bash290# Create a new MCP server from template291npx @modelcontextprotocol/create-server my-server292293# Test with the MCP Inspector294npx @modelcontextprotocol/inspector npx tsx ./src/index.ts295```296297## निष्कर्ष298299MCP 2026 में AI टूल उपयोग के लिए वास्तविक मानक बन गया है। चाहे आप कस्टम AI एजेंट बना रहे हों, Claude Code का विस्तार कर रहे हों, या मौजूदा प्लेटफ़ॉर्म के लिए इंटीग्रेशन बना रहे हों, MCP को समझना आवश्यक है। यह प्रोटोकॉल एक दोपहर में सीखने के लिए पर्याप्त सरल है लेकिन प्रोडक्शन-ग्रेड AI वर्कफ़्लो बनाने के लिए पर्याप्त शक्तिशाली है।300301**अगले कदम:**302- [MCP स्पेसिफिकेशन](https://spec.modelcontextprotocol.io/) एक्सप्लोर करें303- प्रेरणा के लिए [मौजूदा MCP सर्वर](https://github.com/modelcontextprotocol/servers) ब्राउज़ करें304- TypeScript या Python SDK के साथ अपना पहला सर्वर बनाएं305- Claude Desktop या MCP Inspector से टेस्ट करें306
:MCP (Model Context Protocol): डेवलपर्स के लिए संपूर्ण गाइडlines 1-306 (END) — press q to close