در دنیای هوش مصنوعی و مدل‌های زبانی(LLM)ها، یکی از چالش‌های اصلی ادغام این مدل‌ها با داده‌ها، ابزارها و سرویس‌های بیرونی است. هر بار که بخواهیم مدل را به یک API، پایگاه داده، فایل‌سیستم یا ابزار دیگری وصل کنیم، باید کُد ویژه و متفرقه بنویسیم. وقتی تعداد مدل‌ها زیاد باشد و تعداد ابزارها هم زیاد، تعداد ترکیب‌ها (integrations) به‌شدت زیاد می‌شود؛ این مشکل را بعضی‌ها «مسئله (M x N)» می‌نامند.

Model Context Protocol (MCP) یک پروتکل باز و استاندارد است که هدفش این است که این نوارۀ پیچیده را ساده کند MCP  . رابطی استاندارد بین مدل‌های زبانی و منابع داده و ابزارهای بیرونی فراهم می‌کند؛ به مدل اجازه می‌دهد درخواست‌های ساختاریافته بفرستد، اطلاعات لازم را بگیرد، عملیات لازم را انجام دهد و آن‌ها را برگرداند ؛ بدون اینکه برای هر ابزار یک پل (connector) اختصاصی نوشته شود.

به تعبیر خود MCP، می‌توان آن را مثل USB-C  برای هوش مصنوعی دانست: همان‌طور که USB-C به عنوان یک پورت استاندارد برای اتصال دستگاه‌ها به لوازم جانبی استفاده می‌شود، MCP به عنوان یک رابط عمومی برای اتصال مدل به ابزارها است.

اجزای اکوسیستم MCP (Model Context Protocol)

برای درک کامل MCP و اینکه چطور مدل‌های زبانی می‌تونن به ابزارها و داده‌های خارجی متصل بشن، باید بخش‌های مختلف اکوسیستم MCP رو بشناسیم. در ادامه به تفصیل این اجزا رو شرح می‌دم:

۱. سرورها (MCP Servers)

  • نقش و وظیفه
    سرورها نقش «عرضه‌کننده» ابزارها (tools)، منابع داده (resources) و قالب‌های پیش‌تعریف‌شده (prompts) رو دارن. وقتی یک مدل یا کلاینت می‌خواد به کار خاصی رسیدگی کنه (مثلاً کوئری پایگاه داده، ارسال درخواست API یا خواندن فایل)، این درخواست به سمت سرور MCP فرستاده می‌شه. سرور هم آن درخواست رو اجرا می‌کنه و پاسخ برمی‌گردونه.
    به عبارتی، سرور پل بین محیط خارجی کد، API، پایگاه داده، سرویس‌ها و مدل زبانی هست.
  • ویژگی‌ها و عملکردهای اصلی
    • افشای ابزارها (Tools Exposure): سرور باید فهرست ابزارهایی که ارائه می‌ده رو در اختیار کلاینت بذاره تا مدل بتونه بررسی کنه چه عملیات‌هایی امکان‌پذیره.
    • مدیریت منابع (Resources): علاوه بر ابزارها، سرور می‌تونه داده‌هایی که حالت دارند یا نیاز به آپدیت دارند را به صورت منابع معرفی کنه، مثلاً فایل‌ها، اسناد، جداول پایگاه داده.
    • قالب‌های پرامپت (Prompt Templates): بعضی سرورها امکان ارائه قالب‌های راهنما برای استفاده بهتر از ابزارها را دارند (یعنی قالبی که مدل می‌تونه بر اساسش عمل کنه).  
    • مذاکره قابلیت‌ها (Capability Negotiation): وقتی کلاینت اتصال برقرار می‌کنه، باید نسخه پروتکل، امکانات سرور، و آنچه سرور پشتیبانی می‌کنه تعیین بشه.
    • همزمانی و مدیریت چند کلاینت: سرورها باید توانایی سرویس‌دهی به چند کلاینت همزمان و مدیریت وضعیت را داشته باشند.
  • انواع ترنسپورت (انتقال پیام)
    • stdio  ورودی/خروجی : استاندارد :وقتی سرور و کلاینت روی همان ماشین اجرا می‌شوند، استفاده از stdio یک گزینه ساده و سبک است.
    • HTTP / SSE (Server-Sent Events): برای حالت‌های توزیع‌شده (remote) یا ارتباط شبکه‌ای بین کلاینت و سرور، معمولاً از HTTP + SSE استفاده می‌کنند تا بتوان پیام‌های رویدادیevent- driven  ارسال کرد.
  • نمونه‌ها و سرورهای مرجع
    پروژه رسمی MCP شامل سرورهایی است که کار با Google Drive، Slack، GitHub، پایگاه داده‌ها و ابزارهای دیگر را پوشش می‌دهند
    مخزن مرجع سرورهای MCP شامل پیاده‌سازی‌هایی به زبان‌های مختلف مانند Python، TypeScript،  Java و… است.



۲. کلاینت‌ها (MCP Clients / Hosts)

  • نقش و وظیفه
    کلاینت‌ها رابطی بین مدل زبانی یا عامل(agent) و سرور MCP هستند. آن‌ها مدیریت اتصال، کشف قابلیت‌ها، ارسال درخواست‌ها و دریافت پاسخ‌ها را برعهده دارند. کلاینت‌ها در داخل میزبان (host) یا اپلیکیشنی اجرا می‌شوند که تعامل کاربر یا عامل هوش مصنوعی را کنترل می‌کنند.

میزبان (Host) می‌تواند یک اپلیکیشن دسکتاپ مثلاً Claude Desktop، یک IDE هوشمند، یا سامانه‌ای باشد که مدل را اجرا می‌کند.

  • وظایف کلیدی کلاینت

کشف ابزارها و منابع: پس از اتصال، کلاینت از سرور می‌خواهد لیست ابزارها، منابع و قالب‌های پرامپت موجود را ارسال کند.

فرستادن درخواست به ابزار: وقتی مدل تصمیم می‌گیرد ابزاری را فراخواند، کلاینت می‌سازد درخواست (نام ابزار + پارامترها) و آن را به سرور می‌فرستد.

دریافت پاسخ و بازگردانی آن به مدل: پس از اجرا، سرور پاسخ می‌دهد و کلاینت آن را دریافت، تفسیر و آن را به مدل یا محیط اجرا می‌فرستد.

تبدیل پاسخ به قالبی قابل استفاده: پاسخ ممکنه شامل داده ساختاریافته، لینک به منبع (resource link) یا پیام خطاها باشد. کلاینت باید آن‌ها را مدیریت کند.

  • نمونه‌ها و کاربردها
    چند پروژه و فریم‌ورک کلاینت برای MCP وجود دارند که به توسعه‌دهنده‌ها اجازه می‌دهند در زبان‌های مختلف کلاینت بسازند یا از کلاینت آماده استفاده کنند.
    علاوه بر این، محیط‌هایی مثل Cursor از MCP پشتیبانی می‌کنند تا بتوانند به ابزارها و داده‌های خارجی متصل بشن.

۳. ابزارها (Tools) و منابع (Resources)

در MCP، مفهوم «ابزار» و «منبع» دو مؤلفه مجزای کلیدی‌اند که نقش‌های متفاوتی دارند:

ابزارها (Tools)

  • تعریف و نقش
    ابزارها تابع‌هایی هستند که مدل می‌تواند آن‌ها را فراخوانی کند تا عملیاتی انجام بشود — مثلاً ارسال پیام، کوئری API، پردازش داده یا هر عملیات خارجی دیگری.
  • ابزارها معمولاً می‌توانند تأثیر وضعیتی داشته باشند (stateful) یا تعامل خارجی انجام دهند (مثل نوشتن در پایگاه داده یا تغییر داده‌ها).
  • ویژگی‌ها و متادیتا
    هر ابزار دارای نام یکتا (unique name)، توضیح (description) و طرح ورودی و خروجی (input/output schema) است. این متادیتا به مدل کمک می‌کند بفهمد چه پارامترهایی لازم است و چه نوع داده‌ای برمی‌گردد.
    ابزارها از طریق endpointهایی مانند tools/list و tools/call فهرست می‌شوند و فراخوانی می‌شوند.
    برخی ابزارها ممکنه به منابع (resources) لینک دهند، به مثالی که یک ابزار اطلاعاتی را پردازش کرده و لینک به داده را برگرداند.
  • مثال‌ها
    ابزار “search_repositories” در سرور GitHub MCP برای جستجوی مخازن در GitHub یکی از مثال‌های رایجه که در مستندات Microsoft و ADK ذکر شده.
    ابزار “create_or_update_file” که امکان ایجاد یا بروزرسانی فایل در مخازن GitHub را فراهم می‌کنه، یکی از ابزارهایی است که در سرور GitHub MCP ارائه شده است.



منابع (Resources)

  • تعریف و نقش
    منابع داده‌هایی هستند که سرور می‌تونه آن‌ها را ارائه بدهد تا مدل بتواند در جریان سوالات یا تصمیم‌گیری‌ها از آن‌ها استفاده کنه. برخلاف ابزار، معمولاً منابع عملیات اجرایی انجام نمی‌دهند؛ بلکه صرفاً داده یا وضعیت را نمایش میدن.
    منابع با یک شناسه URI مانند resource://… معرفی می‌شوند و مدل یا کلاینت می‌تونه درخواست فهرست منابع کند.
  • قابلیت‌ها و ویژگی‌ها
    سرورهایی که منابع را پشتیبانی می‌کنند باید قابلیت زیر را اعلام کنند:
    subscribe:  امکان اشتراک تغییرات منابع به کلاینت
    listChanged:  اطلاع‌رسانی به کلاینت وقتی فهرست منابع تغییر کنه
    این دو ویژگی اختیاری‌اند و سرور ممکن است یکی یا هیچ کدوم‌شونو پشتیبانی نکنه
    کلاینت‌ها می‌توانند با متد resources/list  منابع موجود را بگیرند، و اگر پشتیبانی وجود داشته باشه، می‌تونن به منابع مشترک شنونده هم بشن تا وقتی تغییرات داده شد، آگاه بشن.
  • نقش در جریان کاری مدل
    منابع می‌تونن به عنوان بخشی از زمینه (context) به مدل وارد بشن، به خصوص زمانی که مدل نیاز دارد درباره داده‌های موجود تصمیم بگیره.
    مثال: سند متنی، جدول پایگاه داده، لاگ‌ها، فایل پیکربندی یا وضعیت جاری سرویس به عنوان منبع عرضه شود، سپس مدل ممکن است بر اساس اون‌ها تصمیم بگیره ابزار مناسب رو فراخوانی کنه.

چگونگی تعامل بین اجزا: جریان کار کلی

برای اینکه تصویر کلی داشته باشی، روند تعامل بین این اجزا به این شکله:

  1. شروع اتصال و کشف قابلیت‌ها
    کلاینت وقتی به سرور متصل می‌شه، درخواست می‌ده که ابزارها، منابع و قالب‌های پرامپت را فهرست کند.
  2. انتخاب و تصمیم مدل
    مدل بررسی می‌کنه که با توجه به سوال یا فرمانی که کاربر داده، به کدام ابزار یا منبع نیاز داره.
  3. فراخوانی ابزار
    مدل با استفاده از کلاینت، درخواست برای ابزار مناسب رو ارسال می‌کنه (نام ابزار + ورودی‌ها).
  4. اجرای ابزار در سرور و بازگردانی پاسخ
    سرور ابزار رو اجرا می‌کنه، ممکنه از منابع داده یا APIها استفاده کنه، و پاسخ را می‌فرسته.
  5. پردازش پاسخ و ادامه تعامل
    کلاینت پاسخ را به مدل می‌ده، مدل آن را در زمینه گفتگو اضافه می‌کنه و تصمیم می‌گیره مرحله بعد چی باشه  یا ابزار دیگه‌ای فراخوانی کند، یا جواب نهایی دهد.

مزایا و ارزش افزوده MCP

استفاده از MCP در توسعه سیستم‌ها و پروژه‌های مبتنی بر هوش مصنوعی مزایای چشمگیری دارد. در ادامه به مهم‌ترینشان می‌پردازم:

1. یکپارچگی ساده و استاندارد

بدون اینکه هر بار کد جداگانه برای اتصال به یک ابزار بنویسیم، می‌توان با استانداردی واحد ابزارها را به مدل متصل کرد. این باعث کاهش پیچیدگی و هزینه نگهداری می‌شود

2. مستقل بودن از مدل

MCP طوری طراحی شده که به مدل خاصی وابسته نباشد؛ یعنی می‌توان آن را با GPT، Claude، مدل‌های باز متن یا مدل‌های آتی به کار گرفت.

3. پشتیبانی از جریان‌های با چند مرحله (Multi-step Workflows)

چون MCP از نگهداری وضعیت و تعامل چند مرحله‌ای پشتیبانی می‌کند، مدل می‌تواند در جریان گفتگو یا جریان کاری، مراحل مختلف را طی کند، داده‌ها را بگیرد، پردازش کند و به ابزار دیگری ارجاع دهد.

4. امنیت و کنترل بیشتر (اگر پیاده‌سازی درست باشد)

چون سرورها جداگانه‌اند و مدل مستقیماً به داده دسترسی ندارد، می‌توان دسترسی‌ها، احراز هویت و سیاست‌های امنیتی را دقیق‌تر تنظیم کرد. البته این بخش بسیار حساس است و اگر پیاده‌سازی ضعیف باشد، خطرات امنیتی جدی ایجاد می‌شود.

5. گسترش‌پذیری (Scalability) و معماری ماژولار

می‌شود سرورهای زیادی ایجاد کرد که هر کدام ابزارهای خاصی دارند و مدل یا کلاینت می‌تواند به‌صورت ماژولار به آن‌ها وصل شود. مثلاً Multi-Server MCP برای مدیریت ابزارهای متنوع در پروژه‌های بزرگ طراحی شده است.

چالش‌ها و ملاحظات امنیتی

هیچ تکنولوژی بی‌نقص نیست، و MCP هم از این قاعده مستثنی نیست. در اینجا برخی از چالش‌ها و ریسک‌هایی که باید در هنگام طراحی و استفاده از MCP به آن‌ها توجه کرد:

  • حملات تزریق پرامپت / ابزار (Tool Prompt Injection)

    اگر یک سرور یا ابزار ناسالم معرفی شود، ممکن است مدل را فریب دهد تا کاری ناخواسته انجام دهد.

  • دستکاری اولویت ابزارها (Preference Manipulation Attack / MPMA)

    حمله‌ای وجود دارد که در آن یک سرور MCP مخرب می‌تواند خودش را به عنوان ابزاری با اولویت بالاتر معرفی کند تا مدل بیشتر از آن استفاده کند.

  • اشکالات امنیتی عمومی و ترکیبی (Hybrid Vulnerabilities)

    مطالعاتی نشان داده‌اند که تعدادی از سرورهای MCP متن‌باز آسیب‌پذیری‌هایی دارند (مثل حملات تزریق ابزار، مدیریت نادرست وضعیت، ضعف در کنترل دسترسی).

  • چالش هویت و تفکیک هویت (Identity Fragmentation)

    در محیط پیچیده سازمانی، کنترل اینکه کدام موجودیت (کاربر، سرویس، مدل) چه دسترسی دارد، دشوار است. اگر سیستم هویت ضعیف باشد، MCP می‌تواند دروازه‌ای برای دسترسی ناخواسته باشد.

  • نگهداری وضعیت و همزمانی (State / Concurrency Issues)

    وقتی ابزارها و منابع حالت‌دار هستند، مدیریت همزمانی و وضعیت بین درخواست‌ها چالش‌برانگیز می‌شود. باید فکر شود که مدل با چند درخواست موازی چه رفتاری دارد.

  • مسائل مقیاس و کارایی (Latency, Throughput)

    چون مدل باید با سرورها تعامل کند، تأخیر شبکه، بار سرور و مقیاس‌پذیری می‌تواند تأثیر بگذارد بر سرعت پاسخ‌ها و عملکرد کلی سیستم.

 

وضعیت کنونی و پذیرش در صنعت

  • MCP اولین‌بار در نوامبر ۲۰۲۴ توسط شرکت Anthropic معرفی شد.
  • طی ماه‌های بعد، MCP آرام آرام در جامعه توسعه‌دهندگان و شرکت‌های فعال در حوزه هوش مصنوعی مورد توجه قرار گرفت و برخی پلتفرم‌ها شروع به پشتیبانی از آن کردند.
  • OpenAI در پروژه‌ی Agents SDK پشتیبانی از سرورهای MCP را اضافه کرده است — یعنی توسعه‌دهندگان می‌توانند مدل‌های تحت پلتفرم OpenAI را به ابزارهای مبتنی بر MCP متصل کنند.
  • در API جدید OpenAI به نام Responses API نیز امکان استفاده از سرورهای MCP راه دور اضافه شده است.
  • در محیط‌هایی مانند Azure، پروژه‌هایی وجود دارند که به معماری Multi-Server MCP می‌پردازند تا ابزارهای مختلف را در یک پلتفرم منسجم ترکیب کنند.

پس می‌توان گفت که MCP در حال تبدیل شدن به یکی از استانداردهای مهم برای ساخت سیستم‌های عامل‌دار و عامل‌محور در AI است.

 

یک مثال ساده: گزارش‌گیری از مخازن GitHub با MCP

برای روشن کردن موضوع، فرض کن بخوای یک عامل (agent) بسازی که به‌صورت خودکار گزارش هفتگی از pull requestهای یک مخزن GitHub می‌سازد:

  1. یک سرور MCP برای GitHub راه‌اندازی می‌کنی که ابزارهایی مانند «لیست PRها»، «تعداد merge شده‌ها»، «فیلتر بر اساس شاخه‌ها» را عرضه می‌کند.
  2. عامل (مدل) از کلاینت MCP استفاده می‌کند و دستور می‌دهد: «گزارش هفتگی PRهای merger شده را بیاور».
  3. عامل درخواست می‌فرستد به ابزار «لیست PR»، پاسخ دریافت می‌کند (لیستی از PRها با وضعیت merge).
  4. عامل ممکن است درخواست‌های فیلتر یا مرتب‌سازی دیگری بفرستد، یا ابزار دیگری مثل «گزارش‌ساز» را فراخوانی کند.
  5. در نهایت، گزارش را به کاربر ارائه می‌دهد.

در این حالت، عامل نیازی ندارد بداند جزئیات API GitHub چیه یا چطور باید از توکن استفاده کنه؛ سرور MCP این جزئیات را پوشانده است، و عامل فقط با ابزارها (Tools) سروکار دارد.

 

توصیه‌هایی برای پیاده‌سازی امن و مؤثر MCP

  • همیشه از احراز هویت قوی (مانند توکن‌های کوتاه‌مدت، OAuth، RBAC) استفاده کن.
  • ابزارها و منابعی که به سرور MCP عرضه می‌شوند باید کمترین دسترسی لازم را داشته باشند (اصل حداقل امتیاز).
  • ورودی‌ها (inputs) را معتبرسنجی کن؛ مخصوصاً اگر ابزارهایی هستند که کد اجرا می‌کنند یا تغییر در منابع ایجاد می‌کنند.
  • برای امنیت، از ممیزی (audit logs) استفاده کن تا ببینی دقیقاً چه ابزاری از چه درخواستی استفاده کرده.
  • قبل از استفاده در تولید، سرورهای MCP را با ابزارهای امنیتی بررسی کن (مثلاً بررسی تزریق پرامپت، ابزارهای مخرب، چک وضعیت concurrency).
  • در پروژه‌های بزرگ، استفاده از معماری چند سروری (Multi-Server MCP) را بررسی کن تا لود تقسیم شود و هر سرور مسئول مجموعه محدودی از ابزارها باشد.
  • مانیتورینگ و قابلیت مقیاس (scaling) را جدی بگیری؛ اگر ترافیک زیاد شود، سرورها باید قابل مقیاس عمودی یا افقی باشند.

 

جمع‌بندی و آینده MCP

Model Context Protocol (MCP) یکی از پیشرفت‌های مهم در مسیر تبدیل مدل‌های زبانی ساده به عامل‌های هوشمند واقعی است. با فراهم کردن یک استاندارد واحد برای ارتباط مدل‌ها با ابزارها و منابع خارجی، MCP می‌تواند هزینه پیاده‌سازی، پیچیدگی و خطاهای ناشی از ادغام‌های غیرمنسجم را کاهش دهد.

با این حال، چالش‌های امنیتی، طراحی وضعیت، کنترل دسترسی و کارایی هنوز باید به دقت حل شوند. روند فعلی نشان می‌دهد که شرکت‌هایی مثل OpenAI و پلتفرم‌های دیگر به پذیرش MCP می‌پردازند؛ بنابراین اگر پروژه‌ای در زمینه عوامل هوش مصنوعی داری، یادگیری و استفاده اصولی از MCP می‌تواند یک مزیت رقابتی بزرگ باشد.

 

دسته بندی شده در: