Model Context Protocol (MCP) Anthropic کی طرف سے بنایا گیا ایک اوپن سٹینڈرڈ ہے جو اس بات کی تعریف کرتا ہے کہ AI ماڈلز بیرونی ٹولز، ڈیٹا سورسز اور سروسز کے ساتھ کیسے بات چیت کرتے ہیں۔ اسے "AI کا USB-C" سمجھیں - ایک یونیورسل کنیکٹر جو کسی بھی AI ایجنٹ کو ایک معیاری انٹرفیس کے ذریعے کسی بھی ٹول سے بات کرنے دیتا ہے۔
اپنے لانچ سے اب تک، MCP نے ماہانہ 97 ملین SDK ڈاؤنلوڈز عبور کر لیے ہیں اور اسے ہر بڑے AI فراہم کنندہ نے اپنایا ہے: Anthropic، OpenAI، Google، Microsoft اور Amazon۔ اس گائیڈ میں، ہم MCP کے ساتھ تعمیر کرنے کے لیے درکار ہر چیز کا جائزہ لیں گے۔
MCP کیوں موجود ہے
MCP سے پہلے، ہر AI ایپلیکیشن کو ہر اس ٹول کے لیے کسٹم انٹیگریشن بنانا پڑتا تھا جسے وہ استعمال کرنا چاہتی تھی۔ اپنی AI سے فائلیں پڑھوانا چاہتے ہیں؟ کسٹم کوڈ لکھیں۔ ڈیٹابیس کیوری کرنا؟ مزید کسٹم کوڈ۔ Slack پر پوسٹ کرنا؟ ایک اور انٹیگریشن۔
اس نے ایک N×M مسئلہ پیدا کیا: N AI ایپلیکیشنز میں سے ہر ایک کو M کسٹم انٹیگریشنز کی ضرورت تھی، جس سے دوہری محنت اور بکھرے ہوئے ایکوسسٹمز بنے۔
MCP اسے ایک واحد پروٹوکول سے حل کرتا ہے جسے کوئی بھی AI کلائنٹ کسی بھی MCP سرور کے ساتھ بات چیت کرنے کے لیے استعمال کر سکتا ہے:
بنیادی تصورات
MCP کے تین بنیادی پرائمیٹوز ہیں:
1. ٹولز (Tools)
ٹولز وہ فنکشنز ہیں جنہیں AI کال کر سکتا ہے۔ یہ "فائل بنائیں"، "ڈیٹابیس کیوری کریں"، یا "پیغام بھیجیں" جیسے اعمال کی نمائندگی کرتے ہیں۔ ہر ٹول کا ایک نام، تفصیل اور اپنے پیرامیٹرز کے لیے ایک JSON Schema ہوتا ہے۔
{ name: "create_issue", description: "Create a new GitHub issue", inputSchema: { type: "object", properties: { title: { type: "string", description: "Issue title" }, body: { type: "string", description: "Issue body" }, repo: { type: "string", description: "Repository name" } }, required: ["title", "repo"] } }
2. ریسورسز (Resources)
ریسورسز وہ ڈیٹا ہے جسے AI پڑھ سکتا ہے۔ یہ فائلز، ڈیٹابیس ریکارڈز، API ریسپانسز یا کوئی بھی دوسرا ڈیٹا سورس ہو سکتے ہیں۔ ریسورسز کی شناخت URIs سے ہوتی ہے۔
{ uri: "file:///Users/dev/project/README.md", name: "Project README", mimeType: "text/markdown" }
3. پرامپٹس (Prompts)
پرامپٹس دوبارہ قابل استعمال ٹیمپلیٹس ہیں جو تعاملات کو ترتیب دینے میں مدد کرتے ہیں۔ ان میں ڈائنامک پیرامیٹرز شامل ہو سکتے ہیں اور عام ورک فلوز کو معیاری بنانے کے لیے مفید ہیں۔
{ name: "code_review", description: "Review code changes for quality and security", arguments: [ { name: "diff", description: "The code diff to review", required: true } ] }
فن تعمیر
MCP ایک کلائنٹ-سرور فن تعمیر کی پیروی کرتا ہے:
- ہوسٹ: AI ایپلیکیشن (Claude Desktop، Cursor، آپ کی کسٹم ایپ)
- کلائنٹ: ایک MCP سرور کے ساتھ 1:1 کنکشن برقرار رکھتا ہے
- سرور: کلائنٹ کو ٹولز، ریسورسز اور پرامپٹس دستیاب کراتا ہے
- ٹرانسپورٹ: مواصلات stdio (لوکل) یا Server-Sent Events (ریموٹ) پر JSON-RPC 2.0 کے ذریعے ہوتی ہے
MCP سرور بنانا
آئیے ایک عملی MCP سرور بنائیں جو JSON فائل میں محفوظ ٹاسک لسٹ کے ساتھ تعامل کرتا ہے۔
سیٹ اپ
mkdir mcp-todo-server && cd mcp-todo-server npm init -y npm install @modelcontextprotocol/sdk zod
سرور کا نفاذ
// src/index.ts import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { z } from "zod"; import fs from "fs"; const TODO_FILE = "./todos.json"; function readTodos(): { id: number; text: string; done: boolean }[] { if (!fs.existsSync(TODO_FILE)) return []; return JSON.parse(fs.readFileSync(TODO_FILE, "utf-8")); } function writeTodos(todos: { id: number; text: string; done: boolean }[]) { fs.writeFileSync(TODO_FILE, JSON.stringify(todos, null, 2)); } const server = new McpServer({ name: "todo-server", version: "1.0.0", }); // Tool: Add a todo server.tool( "add_todo", "Add a new todo item", { text: z.string().describe("The todo text") }, async ({ text }) => { const todos = readTodos(); const newTodo = { id: Date.now(), text, done: false }; todos.push(newTodo); writeTodos(todos); return { content: [{ type: "text", text: `Added: "${text}"` }] }; } ); // Tool: List todos server.tool( "list_todos", "List all todo items", {}, async () => { const todos = readTodos(); const list = todos .map((t) => `${t.done ? "✅" : "⬜"} [${t.id}] ${t.text}`) .join("\n"); return { content: [{ type: "text", text: list || "No todos yet." }] }; } ); // Tool: Complete a todo server.tool( "complete_todo", "Mark a todo as completed", { id: z.number().describe("The todo ID to complete") }, async ({ id }) => { const todos = readTodos(); const todo = todos.find((t) => t.id === id); if (!todo) return { content: [{ type: "text", text: "Todo not found." }] }; todo.done = true; writeTodos(todos); return { content: [{ type: "text", text: `Completed: "${todo.text}"` }] }; } ); // Resource: Current todos as a readable resource server.resource( "todos://list", "Current todo list", async () => ({ contents: [{ uri: "todos://list", mimeType: "application/json", text: JSON.stringify(readTodos(), null, 2), }], }) ); // Start the server const transport = new StdioServerTransport(); await server.connect(transport);
ترتیب
اس سرور کو Claude Desktop کے ساتھ استعمال کرنے کے لیے، اسے اپنی ترتیب میں شامل کریں:
{ "mcpServers": { "todo": { "command": "npx", "args": ["tsx", "/path/to/mcp-todo-server/src/index.ts"] } } }
MCP کلائنٹ بنانا
آپ ایک کسٹم کلائنٹ بھی بنا سکتے ہیں جو کسی بھی MCP سرور سے جڑتا ہے:
import { Client } from "@modelcontextprotocol/sdk/client/index.js"; import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js"; const transport = new StdioClientTransport({ command: "npx", args: ["tsx", "./src/index.ts"], }); const client = new Client({ name: "my-client", version: "1.0.0" }); await client.connect(transport); // List available tools const { tools } = await client.listTools(); console.log("Available tools:", tools.map((t) => t.name)); // Call a tool const result = await client.callTool({ name: "add_todo", arguments: { text: "Write MCP blog post" }, }); console.log(result);
مقبول MCP سرورز
MCP ایکوسسٹم تیزی سے بڑھا ہے۔ یہاں کچھ مقبول ترین سرورز ہیں:
| سرور | تفصیل | استعمال کا معاملہ |
|---|---|---|
| GitHub | Issues، PRs بنائیں، repos کا انتظام | ڈویلپمنٹ ورک فلوز |
| Slack | پیغامات بھیجیں، چینلز کا انتظام | ٹیم مواصلات |
| PostgreSQL | ڈیٹابیس کیوری اور انتظام | ڈیٹا تک رسائی |
| Filesystem | فائلیں پڑھیں، لکھیں اور تلاش کریں | لوکل ڈویلپمنٹ |
| Puppeteer | براؤزر آٹومیشن اور سکریپنگ | ویب ٹیسٹنگ |
| Sentry | ایرر مانیٹرنگ اور ڈیبگنگ | پروڈکشن سپورٹ |
| Supabase | ڈیٹابیس، auth، سٹوریج | بیک اینڈ آپریشنز |
MCP بمقابلہ A2A (Agent-to-Agent)
جبکہ MCP ایجنٹ-ٹو-ٹول مواصلات کو سنبھالتا ہے، Google کا A2A (Agent-to-Agent) پروٹوکول ایجنٹ-ٹو-ایجنٹ مواصلات کو سنبھالتا ہے۔ یہ دونوں تکمیلی ہیں:
- MCP: AI ایجنٹ ٹولز کیسے استعمال کرتا ہے (عمودی انٹیگریشن)
- A2A: AI ایجنٹس ایک دوسرے کے ساتھ کیسے تعاون کرتے ہیں (افقی انٹیگریشن)
بہترین طریقے
- سرورز کو مرکوز رکھیں: ہر ڈومین کے لیے ایک سرور (GitHub سرور، Slack سرور، وغیرہ)۔ یکپارچہ سرورز نہ بنائیں۔
- Zod سے ان پٹ کی توثیق کریں: ہمیشہ مناسب سکیماز کے ساتھ ٹول ان پٹ کی توثیق کریں۔
- غلطیوں کو خوبصورتی سے سنبھالیں: بامعنی غلطی کے پیغامات واپس کریں، اسٹیک ٹریسز نہیں۔
- صرف پڑھنے والے ڈیٹا کے لیے ریسورسز استعمال کریں: اگر AI کو صرف ڈیٹا پڑھنا ہے، تو اسے ٹول کے بجائے ریسورس کے طور پر دستیاب کریں۔
- مناسب تفصیلات شامل کریں: اچھی ٹول اور پیرامیٹر تفصیلات AI کو سمجھنے میں مدد کرتی ہیں کہ ہر ٹول کب اور کیسے استعمال کرنا ہے۔
- MCP Inspector سے ٹیسٹ کریں: اپنے سرور کو انٹرایکٹو طور پر ٹیسٹ کرنے کے لیے
npx @modelcontextprotocol/inspectorاستعمال کریں۔
شروع کریں
# Create a new MCP server from template npx @modelcontextprotocol/create-server my-server # Test with the MCP Inspector npx @modelcontextprotocol/inspector npx tsx ./src/index.ts
نتیجہ
MCP 2026 میں AI ٹول استعمال کا ڈی فیکٹو معیار بن گیا ہے۔ چاہے آپ کسٹم AI ایجنٹس بنا رہے ہوں، Claude Code کو بڑھا رہے ہوں، یا موجودہ پلیٹ فارمز کے لیے انٹیگریشنز بنا رہے ہوں، MCP کو سمجھنا ضروری ہے۔ پروٹوکول ایک دوپہر میں سیکھنے کے لیے کافی آسان ہے لیکن پروڈکشن گریڈ AI ورک فلوز بنانے کے لیے کافی طاقتور ہے۔
اگلے اقدامات:
- MCP سپیسیفیکیشن دریافت کریں
- تحریک کے لیے موجودہ MCP سرورز دیکھیں
- TypeScript یا Python SDK کے ساتھ اپنا پہلا سرور بنائیں
- Claude Desktop یا MCP Inspector سے ٹیسٹ کریں