تصور کنید تفاوت بین یک دوشاخه برق اختصاصی و استاندارد USB-C را بررسی کنید: یکی برای هر دستگاه نیاز به یک تطبیق خاص دارد، در حالی که دیگری اجازه میدهد هر دستگاه سازگاری بهطور یکپارچه متصل شود. این دقیقا تفاوت بنیادین میان «فراخوانی تابع» (Function Calling) و «پروتکل زمینهٔ مدل» (MCP) است که توسط شرکت انتروپیک (Anthropic) در اواخر سال ۲۰۲۴ معرفی شد. در حالی که بسیاری از توسعهدهندگان در ابتدا MCP را صرفاً یک ارتقای ساده برای فراخوانی تابع میدیدند، اما این پروتکل در واقع نشاندهنده تغییری اساسی در نحوه تعامل مدلهای زبانی بزرگ (LLMs) با دادهها و ابزارهای خارجی است. برای درک این موضوع، باید بین «قابلیت مدل» و «استاندارد ارتباطی» تفکیک قائل شد. فراخوانی تابع یک قابلیت مدل است که در آن LLM یک شیء JSON تولید میکند تا اپلیکیشن آن را اجرا کند. در مقابل، MCP یک لایه پروتکل است؛ یک سیستم استاندارد شده که تعریف میکند ابزارها چگونه شناسایی، توصیف، فراخوانی و از ثبت خارج (deregister) شوند و بهطور مؤثر پیادهسازی ابزار را از مدل خاص مورد استفاده جدا میکند.
طبق مستندات فنی Anthropic، این سیستم در هسته خود بر سه رکن یا Primitive اصلی استوار است:
- ابزارها (Tools): توابع اجرایی هستند که یک LLM میتواند برای انجام اقدامات خاص آنها را تحریک و اجرا کند.
- منابع (Resources): منابع دادهای فقط-خواندنی هستند که زمینه (Context) لازم را برای مدل فراهم میکنند تا پاسخهای دقیقتری بدهد.
- پرامپتها (Prompts): قالبهای بازاستفادهشوندهای هستند که رفتار مدل را هدایت کرده و ساختار ورودیها را استاندارد میکنند.
این سه المان از طریق یک «سرور MCP» در معرض دسترسی قرار میگیرند. برخلاف ادغامهای سختافزاری و کدگذاریشده (hard-coded) قدیمی، یک کلاینت این قابلیتها را در لحظه اجرا (runtime) و بهصورت پویا با استفاده از متدهایی مانند listTools ،listResources و listPrompts کشف میکند. این مکانیسم کشف پویا امکان ایجاد یک معماری بسیار منعطف را فراهم میکند که در آن ابزارها میتوانند بدون تغییر در کد اصلی اپلیکیشن، اضافه یا بهروزرسانی شوند. همانطور که در تحلیلهای قبلی ما دربارهی امنیت مدلهای بازمتن اشاره کردیم، انعطافپذیری در لایه ارتباطی، ریسکهای امنیتی را کاهش و سرعت توسعه را بالا میبرد.
لایه انتقال MCP بر پایه استاندارد JSON-RPC 2.0 بنا شده و از دو حالت ارتباطی اصلی پشتیبانی میکند. حالت اول stdio است که در آن کلاینت، سرور را به عنوان یک فرآیند فرزند (child process) اجرا کرده و پیامها را از طریق ورودی و خروجی استاندارد مبادله میکند. حالت دوم HTTP+SSE (رویدادهای ارسالی سرور) است که امکان اتصال به سرورهای راه دور را فراهم میکند و در این حالت کلاینت اعلانهای Push را از طریق SSE دریافت میکند. یک ویژگی طراحی حیاتی در MCP، ماهیت دوطرفه (bidirectional) آن است. در حالی که فراخوانیهای تابع سنتی یکطرفه هستند (از کلاینت به سرور)، MCP به سرورها اجازه میدهد اعلانها یا بهروزرسانیهای مربوط به پیشرفت عملیات را به کلاینت بازگردانند. علاوه بر این، کلاینتها میتوانند «نمونهبرداری» (sampling) را آغاز کنند و از LLM سمت سرور بخواهند تا محتوا تولید کند. این قابلیت دوطرفه، MCP را از یک Wrapper ساده برای API به یک پروتکل ارتباطی قدرتمند برای عاملهای هوش مصنوعی (AI Agents) تبدیل میکند.
مقایسه MCP با روشهای پیشین و فراخوانی تابع سنتی، برتری آن را در چهار محور اصلی نشان میدهد:
۱. استانداردسازی: فراخوانی تابع معمولاً وابسته به فروشنده (vendor-specific) است، اما MCP یک استاندارد مستقل از مدل (model-agnostic) ارائه میدهد.
۲. کشف (Discovery): در روشهای قدیمی، تعریف ابزارها در زمان شروع برنامه سختافزاری است، اما در MCP کشف ابزارها در زمان اجرا صورت میگیرد.
۳. لایه انتقال: انتقال از فراخوانی توابع درون-فرآیندی (in-process) به ارتباطات بین-فرآیندی یا بین-ماشینی از طریق stdio یا HTTP تغییر یافته است.
۴. قابلیت بازاستفاده: این مورد بیشترین بهبود را داشته است. یک توسعهدهنده میتواند یک سرور MCP واحد برای یک وظیفه خاص — مانند پرسوجو درباره Issueهای گیتهاب — بسازد و هر کلاینت سازگار با MCP، از جمله Claude Desktop، Cursor یا پیادهسازیهای سفارشی مانند IHUI-AI، میتواند بدون نیاز به تغییر حتی یک خط کد از آن سرور استفاده کند.
در کاربردهای عملی، پروژه IHUI-AI یک پیادهسازی کامل (full-stack) از هر دو بخش کلاینت و سرور MCP را به نمایش میگذارد. در سمت کلاینت که در یک عامل ارکستره شده توسط LangGraph ادغام شده است، لیستی از سرورهای MCP فعال در یک پایگاهداده PostgreSQL مدیریت میشود. هنگام شروع یک گفتگو، کلاینت اتصالات JSON-RPC را با این سرورها برقرار کرده، طرحوارههای (schemas) ابزارهای آنها را تجمیع میکند و آنها را به LLM ارائه میدهد. هنگامی که LLM تصمیم به فراخوانی یک ابزار میگیرد، کلاینت درخواست را به سرور مربوطه ارسال کرده و نتیجه را به زمینه گفتگو بازمیگرداند. بهطور همزمان، IHUI-AI به عنوان یک سرور MCP نیز عمل کرده و قابلیتهای داخلی خود را برای سایر کلاینتهای هوش مصنوعی خارجی به اشتراک میگذارد. این پیادهسازی دوگانه، مقیاسپذیری پروتکل را برجسته میکند و اکوسیستم مدولاری را میسازد که در آن قابلیتهای هوش مصنوعی میتوانند بهراحتی در پلتفرمهای مختلف به اشتراک گذاشته و مصرف شوند.
گام بعدی شما
- اگر توسعهدهنده هستید، بررسی کنید که آیا ابزارهای فعلی شما قابلیت تبدیل به یک سرور MCP را دارند تا در کلاینتهای مختلف قابل استفاده باشند.
- برای تجربه عملی، سرورهای MCP متنباز را در Claude Desktop تست کنید تا سرعت اتوماسیون دادههای محلی خود را ببینید.
- معماری JSON-RPC 2.0 را مطالعه کنید تا درک بهتری از نحوه مدیریت پیامها در سیستمهای توزیعشده داشته باشید.
اما این استانداردسازی تنها بخشی از پازل است؛ تأثیر این پروتکل بر ظهور عاملهای خودمختار (Autonomous Agents) را در گزارش بعدی بررسی خواهیم کرد.




گفتگو