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 بمقابلہ 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