در اواخر سال ۲۰۲۴، آنتروپیک یک مشخصهی فنی به ظاهر ساده منتشر کرد که امروز، در سال ۲۰۲۶، پایهی معماری اکثر سیستمهای هوش مصنوعی عاملی (Agentic AI) در جهان شده است: پروتکل MCP یا Model Context Protocol. تا پیش از MCP، مدلهای زبانی بزرگ مانند کلود، جیپیتی یا جمینی در یک «قفس دیجیتال» زندانی بودند؛ آنها میتوانستند با متن صحبت کنند اما نمیتوانستند به دنیای واقعی دست بزنند. MCP این قفس را شکست. امروز در تکنّاو، به صورت فنی و عمیق بررسی میکنیم که MCP دقیقاً چیست، چگونه کار میکند، چرا اکوسیستم توسعهدهندگان جهان بر آن شرطبندی کرده، و چه تهدیدات امنیتی پنهانی با خود به همراه آورده است.
۱. زندانی در جزیرهی متن: چرا هوش مصنوعی بدون MCP کور بود
مدلهای زبانی بزرگ (LLM) تا همین اواخر، اساساً موجوداتی «اطلاعاتی» بودند؛ آنها بر اساس دادههای آموزشی خود پاسخ میدادند، اما دسترسی بهروزی به دنیای بیرون از خود نداشتند. برای رفع این محدودیت، روشهای مختلفی امتحان شد: تزریق متن از منابع خارجی، ابزارهای اختصاصی هر شرکت، و Function Calling که در API مدلهای مختلف اضافه شد. اما مشکل اینجا بود که هر شرکت، هر فریمورک، و هر ابزار، «زبان» خود را داشت.
اگر میخواستید کلود را به پایگاهدادهی PostgreSQL شرکتتان وصل کنید، باید یک کانکتور اختصاصی مینوشتید. اگر فردا به Salesforce هم نیاز پیدا میکردید، کانکتور دیگری. اگر میخواستید همان سیستم را روی Claude 4.6 بعد GPT-5 هم تست کنید، همهچیز را از صفر مینوشتید. این مشکل، که در تکنّاو آن را «جزیرهایسازی ابزارها» مینامیم، باعث شد که هزینهی ساخت سیستمهای هوشمند واقعی، چندین برابر ارزش خود مدلهای زبانی باشد. MCP برای حل دقیقاً همین مشکل طراحی شده است.
۲. آناتومی MCP: پروتکل، نه محصول
MCP یک پروتکل ارتباطی استاندارد و متنباز است، نه یک محصول یا کتابخانهی اختصاصی. این تمایز بنیادی را در نظر بگیرید: درست مانند اینکه HTTP یک پروتکل استاندارد برای انتقال داده در وب است و هر وبسروری میتواند آن را پیادهسازی کند، MCP استانداردی تعریف میکند که مدلهای زبانی میتوانند از طریق آن با «ابزارها» (Tools)، «منابع» (Resources) و «پرامپتها» (Prompts) ارتباط برقرار کنند.
مشخصهی فنی MCP بر پایهی JSON-RPC 2.0 ساخته شده است. تمام ارتباطات بین مدل و سرور ابزار، از طریق پیامهای JSON استاندارد انجام میشود. این انتخاب هوشمندانهای است: JSON-RPC بسیار ساده، قابل فهم برای همهی زبانهای برنامهنویسی، و بهخوبی آزمونشده است. مکانیزم انتقال میتواند stdio (برای کانکشنهای لوکال) یا SSE روی HTTP (برای سرویسهای ریموت) باشد.
Client (Claude) ←→ MCP Protocol (JSON-RPC 2.0) ←→ MCP Server (Tool/DB/API)
نکتهی کلیدی این است که MCP یک پروتکل دو طرفه است. نهتنها مدل میتواند ابزارها را فراخوانی کند، بلکه سرور MCP میتواند در صورت نیاز «اعلان» (Notification) ارسال کند؛ یعنی اگر دادهای در پایگاهداده تغییر کند، سرور MCP میتواند مدل را از آن آگاه کند. این ویژگی در طراحی سیستمهای واکنشی (Reactive Systems) با هوش مصنوعی اهمیت زیادی دارد.
۳. سه ستون MCP: ابزارها، منابع، و پرامپتهای از پیشساخته
معماری MCP بر سه پایهی اصلی استوار است که هر کدام نقش مشخصی در توانمندسازی مدل دارند:
▸ ابزارها (Tools): اعمالی که مدل میتواند فراخوانی کند. مثلاً «جستجو در پایگاهداده»، «ارسال ایمیل»، «اجرای کد پایتون» یا «بارگذاری فایل». هر ابزار دارای یک شِما JSON است که پارامترهای ورودی را مشخص میکند، و مدل قبل از فراخوانی، این شِما را میخواند. مهمترین ویژگی ابزارها این است که مدل تصمیم میگیرد چه زمانی از آنها استفاده کند؛ این تفاوت بنیادینی با APIهای کلاسیک است که انسان کنترل جریان را داشت.
▸ منابع (Resources): دادههایی که سرور MCP در اختیار مدل میگذارد. برخلاف ابزارها که عملگرا هستند، منابع صرفاً داده هستند. یک منبع میتواند یک فایل، یک رکورد پایگاهداده، یک صفحهی وب، یا هر نوع دادهای باشد. مدل میتواند فهرست منابع را ببیند و آنها را «بخواند». این مکانیزم پایهی اتصال LLMها به سیستمهای RAG (Retrieval-Augmented Generation) است.
▸ پرامپتهای از پیشساخته (Prompts): قالبهای آمادهای که سرور MCP تعریف میکند. این ویژگی کمتر شناختهشده است اما در سازمانها بسیار ارزشمند است. مثلاً یک سرور MCP برای سیستم CRM شرکت، میتواند پرامپت استاندارد «گزارش هفتگی فروش» را از پیش تعریف کند تا همهی کاربران از یک قالب یکسان استفاده کنند.
۴. معماری کلاینت-سرور: جریان داده در یک تراکنش واقعی
برای فهم عمیقتر، بیایید یک سناریوی واقعی را دنبال کنیم. فرض کنید یک توسعهدهنده از Claude Desktop استفاده میکند و یک سرور MCP برای پایگاهدادهی PostgreSQL شرکتش نصب کرده است:
مرحلهی ۱ — کشف (Discovery): وقتی Claude Desktop راهاندازی میشود، از سرور MCP میخواهد که فهرست ابزارها، منابع و پرامپتهای موجود را ارسال کند. سرور با یک پیام JSON پاسخ میدهد که شامل توضیح هر ابزار و شِمای ورودی آن است.
مرحلهی ۲ — درخواست کاربر: کاربر مینویسد: «چند تا از سفارشهای ناقص این هفته رو بهم بده.» مدل کلود با تحلیل درخواست، تشخیص میدهد که باید از ابزار «query_database» استفاده کند.
مرحلهی ۳ — فراخوانی ابزار: کلود یک پیام JSON-RPC میفرستد:
{"method": "tools/call", "params": {"name": "query_database", "arguments": {"sql": "SELECT * FROM orders WHERE status='pending' AND created_at >= NOW() - INTERVAL '7 days' LIMIT 5"}}}
مرحلهی ۴ — اجرا و بازگشت: سرور MCP این کوئری را روی PostgreSQL اجرا میکند، نتیجه را به JSON تبدیل کرده و برمیگرداند. کلود این داده را دریافت کرده، تحلیل میکند و به فارسی توضیح میدهد.
کل این چرخه میتواند چند صد میلیثانیه طول بکشد. از منظر کاربر، کلود «جادو» کرد و مستقیم به پایگاهداده دسترسی پیدا کرد. از منظر معماری، یک پروتکل استاندارد، یک مدل زبانی را به یک سیستم واقعی متصل کرد.
۵. اکوسیستم ۲۰۲۶: MCP چقدر بزرگ شده است؟
در ژانویهی ۲۰۲۵، MCP تنها چند صد سرور عمومی داشت. تا اوایل ۲۰۲۶، این تعداد از مرز ۱۰۰,۰۰۰ سرور MCP عمومی عبور کرده است. اما اعداد مهمتر آن است که چه شرکتهایی این پروتکل را بهعنوان استاندارد پذیرفتند:
Anthropic (Claude): خالق اصلی MCP؛ Claude Desktop و API کلود بهطور کامل از MCP پشتیبانی میکنند. سرور MCP اکنون بخش جداییناپذیر Claude.ai Pro و Teams است.
Cursor IDE: این ویرایشگر کد که برای توسعهدهندگان ساخته شده، یکی از اولین پذیرندگان بزرگ MCP بود. بیش از ۳۰۰ سرور MCP اختصاصی برای Cursor ساخته شده که شامل اتصال به GitHub، Jira، Linear، Slack و ابزارهای CI/CD میشود.
OpenAI: در ابتدا با احتیاط، اما در اوایل ۲۰۲۶ رسماً اعلام کرد که GPT-4o و GPT-5 از MCP پشتیبانی میکنند. این اعتراف رقیب اصلی، قویترین نشانهی پیروزی MCP بهعنوان استاندارد صنعت است.
Microsoft: GitHub Copilot یکپارچهسازی MCP را در بهار ۲۰۲۶ اعلام کرد. این یعنی ۱۵۰ میلیون توسعهدهندهی GitHub به یک اکوسیستم MCP غنی دسترسی پیدا میکنند.
Google DeepMind: حتی گوگل، با وجود اینکه پروتکل رقیبپسند خود را داشت، در Q1 2026 اعلام کرد که Gemini 2.0 از MCP پشتیبانی میکند.
در تکنّاو این را «لحظهی HTTP شدن MCP» مینامیم: درست مانند اینکه در دههی ۹۰ همهی مرورگرها HTTP را پذیرفتند و وب به وجود آمد، حالا همهی مدلهای بزرگ MCP را پذیرفتند و «اینترنت عاملی» (Agentic Internet) در حال شکل گرفتن است.
۶. MCP در برابر Function Calling: تفاوتهای بنیادی
سوالی که بسیاری از توسعهدهندگان میپرسند این است: «Function Calling که در OpenAI API وجود دارد چه فرقی با MCP دارد؟» این سوال مهمی است و پاسخ آن معماری سیستمهای شما را تعیین میکند.
Function Calling: یک ویژگی درونAPI است. شما در درخواست API خود، تعریف توابع را اضافه میکنید. مدل تصمیم میگیرد کدام تابع را فراخوانی کند و پارامترها را برمیگرداند. اما شما باید آن تابع را اجرا کنید و نتیجه را دوباره به API ارسال کنید. هر فراخوانی یک رفتوبرگشت کامل API است.
MCP: یک لایهی جداگانه است. سرور MCP بهعنوان یک موجودیت مستقل اجرا میشود. مدل میتواند بدون نیاز به رفتوبرگشت API با سرور MCP ارتباط داشته باشد. این معماری چند مزیت حیاتی دارد:
۱. تفکیک مسئولیت: سرور MCP منطق اتصال به ابزار را مدیریت میکند. مدل هیچچیزی دربارهی جزئیات اتصال نمیداند.
۲. قابلیت استفادهی مجدد: یک سرور MCP که به Slack متصل است، با کلود، GPT-5 و جمینی هم کار میکند. هیچ کدی دوبارهنویسی نمیشود.
۳. Stateful Sessions: سرور MCP میتواند حالت (State) را نگهدارد. اگر مدل ۱۰ تا ابزار را در یک جلسه فراخوانی کند، سرور MCP میتواند زمینه را حفظ کند.
۴. اعلانهای Push: سرور MCP میتواند بدون درخواست مدل، اطلاعات جدید ارسال کند. این در Function Calling ممکن نیست.
Function Calling = مدل + کد شما | MCP = مدل + پروتکل + سرور مستقل
۷. امنیت در MCP: تهدیداتی که کمتر دربارهشان صحبت میشود
اتصال هوش مصنوعی به ابزارهای واقعی، سطح حمله (Attack Surface) را به شکل چشمگیری افزایش میدهد. در تکنّاو چند تهدید امنیتی جدی را که با MCP مرتبط هستند شناسایی کردهایم که توسعهدهندگان باید از آنها آگاه باشند:
◈ تزریق پرامپت غیرمستقیم (Indirect Prompt Injection): این خطرناکترین تهدید برای سیستمهای MCP است. یک مهاجم میتواند در دادهای که مدل میخواند (مثلاً یک ایمیل، یک فایل یا یک صفحهی وب) دستوراتی پنهان کند. وقتی مدل آن داده را میخواند، دستورات مخرب را «اطاعت» میکند. در سیستمهای بدون MCP این تهدید وجود داشت، اما با MCP، مدل میتواند بر اساس این دستورات، ابزارهای واقعی را فراخوانی کند؛ مثلاً ایمیلها را حذف کند یا فایلها را ارسال کند.
◈ اصل حداقل دسترسی (Principle of Least Privilege): یک سرور MCP نباید به همهچیز دسترسی داشته باشد. اگر سرور MCP برای خواندن ایمیل طراحی شده، نباید توانایی ارسال ایمیل را هم داشته باشد. بسیاری از پیادهسازیهای فعلی این اصل را نقض میکنند.
◈ توکنهای مسموم (Token Pollution): در مکالمات طولانی با MCP، نتایج ابزارها وارد پنجرهی زمینه میشوند. یک مهاجم میتواند نتایج ابزار را طوری طراحی کند که رفتار مدل در استفاده از ابزارهای بعدی را تغییر دهد.
◈ سرورهای MCP مخرب (Malicious MCP Servers): با رشد سریع اکوسیستم، سرورهای MCP جعلی وجود دارند که ادعا میکنند به ابزاری متصل میشوند اما در واقع دادههای حساس را جمعآوری میکنند. برای سازمانها، تنها باید از سرورهای MCP تأییدشده و بررسیشده استفاده شود.
راهحلهای فنی شامل sandboxing سرورهای MCP، اعتبارسنجی دقیق ورودیها، محدود کردن دامنهی هر ابزار، و لاگبرداری کامل از تمام فراخوانیها میشود. سازمانهایی که MCP را در محیطهای حساس استقرار میدهند باید این چکلیست امنیتی را جدی بگیرند.
۸. ساخت اولین سرور MCP: از مفهوم به عمل
برای درک عملی، بیایید ببینیم یک سرور MCP ساده در Node.js چگونه دیده میشود. کتابخانهی رسمی @modelcontextprotocol/sdk این کار را بسیار ساده کرده است:
import { Server } from "@modelcontextprotocol/sdk/server/index.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; const server = new Server({ name: "teknav-db", version: "1.0.0" }); server.setRequestHandler("tools/list", async () => ({ tools: [{ name: "get_articles", description: "جستجو در مقالههای تکناو", inputSchema: { type: "object", properties: { query: { type: "string", description: "کلیدواژه جستجو" }, limit: { type: "number", default: 5 } } } }] })); server.setRequestHandler("tools/call", async (req) => { if (req.params.name === "get_articles") { const results = await searchDatabase(req.params.arguments.query); return { content: [{ type: "text", text: JSON.stringify(results) }] }; } }); const transport = new StdioServerTransport(); await server.connect(transport);
این تمام چیزی است که برای یک سرور MCP کارکردی نیاز دارید. کمتر از ۳۰ خط کد، یک مدل زبانی را به پایگاهدادهی شما وصل میکند. برای استقرار در محیطهای سازمانی، طبیعتاً باید احراز هویت، لاگبرداری، مدیریت خطا، و کنترل دسترسی را اضافه کنید.
۹. افق ۲۰۲۷: اینترنت عاملی و پروتکلهای نسل بعد
MCP در حال تبدیل شدن به زیرساختی است که توسعهدهندگان و شرکتها روی آن «عاملها» (Agents) میسازند. اما چه چیزی بعد از MCP میآید؟ در تکنّاو سه روند را رصد میکنیم:
▸ MCP و A2A Protocol (Agent-to-Agent): گوگل یک پروتکل تکمیلی به نام A2A منتشر کرده که نه برای ارتباط مدل با ابزار، بلکه برای ارتباط عامل با عامل طراحی شده است. MCP + A2A، یک معماری کامل برای سیستمهای چندعاملی پیچیده فراهم میکند.
▸ MCP Registries: همانطور که npm.js یک رجیستری برای پکیجهای Node است، چندین پروژه در حال ساخت رجیستری مرکزی برای سرورهای MCP هستند. این رجیستریها شامل رتبهبندی امنیتی، نظرات توسعهدهندگان، و تضمین نسخه هستند.
▸ MCP در لبهی شبکه (Edge MCP): شرکتهایی مانند Cloudflare در حال اضافه کردن پشتیبانی MCP به CDN و Edge Workers خود هستند. این یعنی سرورهای MCP میتوانند در نزدیکترین نقطه به کاربر اجرا شوند و تأخیر (Latency) را به حداقل برسانند.
ما در تکنّاو پیشبینی میکنیم که تا پایان ۲۰۲۷، هر سرویس SaaS بزرگ، یک سرور MCP رسمی خواهد داشت. این لحظهای است که هوش مصنوعی از یک «ابزار جداگانه» به یک «لایهی هوشمند» در بالای هر نرمافزاری تبدیل خواهد شد.
مقایسه MCP با روشهای پیشین اتصال ابزار
برای درک بهتر جایگاه MCP، مقایسه آن با دو رویکرد پیشین — Function Calling اختصاصی و پلاگینهای بسته — روشنکننده است. تفاوت اصلی در یک کلمه خلاصه میشود: استاندارد. چیزی که HTTP برای وب کرد، MCP برای ابزارهای هوش مصنوعی میکند.
| معیار | MCP | Function Calling | پلاگین اختصاصی |
|---|---|---|---|
| قابلیت حمل بین مدلها | کامل — یک سرور برای همه مدلها | وابسته به API هر ارائهدهنده | قفل به یک پلتفرم |
| اکوسیستم ۲۰۲۶ | بیش از ۱۰۰ هزار سرور عمومی | توابع درونسازمانی پراکنده | فروشگاههای بسته و روبهافول |
| ارتباط دوطرفه (اعلان از سمت ابزار) | دارد | ندارد | بهندرت |
| مدل امنیتی | دسترسی صریح و قابلممیزی به هر ابزار | در سطح کد فراخوان | اعتماد کامل به فروشنده |
این مقایسه توضیح میدهد چرا مهاجرت به MCP در سازمانها اینقدر سریع بود: هزینه یکبارِ ساخت سرور MCP، در برابر هزینه تکراری نگهداری کانکتور برای هر مدل، عملاً تصمیم را بدیهی میکند.
نتیجهگیری: MCP، زبان مشترک ماشینهای هوشمند
MCP در تاریخ هوش مصنوعی جایگاهی شبیه به TCP/IP در تاریخ اینترنت خواهد داشت: یک پروتکل خستهکننده، فنی، و پیچیده که هیچکس اسمش را به یاد نمیآورد؛ اما اگر نبود، همهچیز از هم میپاشید. قبل از TCP/IP، شبکههای کامپیوتری در «جزیرههای» جدا از هم زندگی میکردند. قبل از MCP، مدلهای هوش مصنوعی در «جزیرهی متن» زندانی بودند.
در تکنّاو، ما توسعهدهندگان و تیمهای فناوری ایرانی را تشویق میکنیم که همین امروز با MCP آشنا شوند. SDK رسمی در پایتون و Node.js موجود است. مستندات آنتروپیک بهروز است. اکوسیستم در حال انفجار است. و مهمتر از همه: این یک استاندارد باز و رایگان است که هیچ کمپانی خاصی آن را کنترل نمیکند. آیندهی سیستمهای هوشمند، بر شانهی این پروتکل ساخته خواهد شد.
پرسشهای پرتکرار
MCP چیست؟
MCP (پروتکل Model Context Protocol) یک استاندارد باز است که مدلهای هوش مصنوعی را به ابزارها، پایگاههای داده و سرویسهای بیرونی متصل میکند — مانند درگاه USB-C برای هوش مصنوعی. مدل از طریق پیامهای JSON-RPC با «سرورهای MCP» ارتباط میگیرد و دسترسی کنترلشده به داده و ابزار پیدا میکند.
سرور MCP چیست؟
سرور MCP برنامهای است که ابزارها (Tools)، منابع (Resources) و پرامپتهای آماده را از طریق پروتکل MCP در اختیار مدل هوش مصنوعی میگذارد. مثلاً یک سرور MCP میتواند دسترسی امن به PostgreSQL، فایلسیستم یا API شرکت را برای مدل فراهم کند.
تفاوت MCP با Function Calling چیست؟
Function Calling قابلیتی اختصاصی در API هر مدل است و برای هر ارائهدهنده جداگانه پیادهسازی میشود؛ اما MCP یک پروتکل استاندارد و مستقل از مدل است: یک سرور MCP بدون تغییر کد با Claude، GPT و Gemini کار میکند.
آیا MCP فقط مخصوص Claude است؟
خیر. MCP را آنتروپیک ساخت اما بهعنوان استاندارد باز منتشر شد و تا ۲۰۲۶ اکثر بازیگران بزرگ از جمله OpenAI و Google آن را پذیرفتهاند و بیش از صد هزار سرور MCP عمومی وجود دارد.