MCP چیست؟ راهنمای جامع Model Context Protocol و معماری آن
در این مقاله از گردو کلاد، به صورت عمیق بررسی میکنیم که MCP چیست و چگونه کار میکند، چه تفاوتی با APIهای سنتی دارد و چطور میتوانید اولین سرور خود را بسازید.

در دنیای پرشتاب هوش مصنوعی، Model Context Protocol یا MCP استانداردی متنباز است که برای اتصال مدلهای زبانی به ابزارها، دیتابیسها و سرویسهای خارجی طراحی شده است.
تا پیش از معرفی این استاندارد توسط Anthropic، مدلهای هوش مصنوعی (LLMs) در محیطی ایزوله کار میکردند. برای اینکه یک مدل بتواند فایلی را از سیستم شما بخواند یا در گیتهاب کدی را بررسی کند، توسعهدهندگان مجبور بودند کدهای یکپارچهساز (Integration) اختصاصی بنویسند. اما با ورود [پروتکل MCP](#)، این فرآیند استانداردسازی شد؛ به طوری که اکنون میتوان آن را به پورت USB تشبیه کرد: یک استاندارد واحد که اجازه میدهد هر مدل هوش مصنوعی به هر منبع دادهای متصل شود.
مشکل اساسی: چرا دنیا به Model Context Protocol نیاز داشت؟
اگر با مفاهیمی مثلAPI آشنا باشید، میدانید که سیستمهای نرمافزاری سالهاست از طریق API با هم صحبت میکنند. پس مشکل کجا بود؟
هر سرویس (مثل Slack، PostgreSQL یا GitHub) API مخصوص به خود را دارد. اگر میخواستید دستیار هوش مصنوعی شما به این سه سرویس وصل شود، باید سه رابط جداگانه توسعه میدادید. با تغییر هر API، کدهای شما از کار میافتاد. این رویکرد سفارشیسازی برای مقیاسپذیری هوش مصنوعی یک بنبست بزرگ محسوب میشد.
Model Context Protocol این مشکل را حل کرد. این پروتکل یک لایه انتزاعی ایجاد میکند. شما یک بار سرور میسازید و پس از آن، هر کلاینت هوش مصنوعی (مثل Claude یا Cursor) که از این پروتکل پشتیبانی کند، میتواند بدون نیاز به کدهای اضافی، با سرویس شما ارتباط برقرار کند. این موضوع در بسیاری از پروژهها میتواند مقدار زیادی از کدهای اتصال (Glue Code) را حذف کرده و زمان توسعه را به شدت کاهش دهد.
کالبدشکافی فنی معماری MCP
معماری MCP از یک ساختار کلاینت-سرور بسیار دقیق و امن پیروی میکند. این ارتباط معمولاً بر بستر JSON-RPC استوار است. بیایید اجزای این سیستم را زیر ذرهبین ببریم.
۱. نقش MCP Client و MCP Server
- MCP Client: اپلیکیشنی است که کاربر با آن تعامل دارد (مثل یک IDE برنامهنویسی یا محیط چت Claude). کلاینت درخواستهای مدل هوش مصنوعی را دریافت کرده و آنها را بر اساس پروتکل، به سرور ارسال میکند.
- MCP Server: برنامهای سبک است که به دادهها یا APIهای هدف (مثلاً پایگاه داده شرکت شما) دسترسی دارد. سرور این دادهها را به قالبی که پروتکل میفهمد ترجمه کرده و در اختیار کلاینت قرار میدهد.
نکته فنی: هوش مصنوعی هرگز مستقیماً دیتابیس شما را نمیخواند. هوش مصنوعی فقط درخواست (Tool Call) تولید میکند. کلاینت این درخواست را به سرور میدهد و این سرور است که دیتابیس را خوانده و نتیجه را برمیگرداند.
۲. مفاهیم سهگانه: Resources, Tools, Prompts
وقتی کلاینت و سرور به هم متصل میشوند، سرور سه قابلیت اصلی را ارائه میدهد:
- منابع (Resources): دادههایی که مدل میتواند بخواند (مثل محتوای یک فایل لاگ، یک صفحه ویکی یا ساختار یک دیتابیس).
- ابزارها (Tools): اکشنهایی که مدل میتواند انجام دهد. (مثلاً اجرای یک کوئری SQL، جستجو در وب، یا ثبت یک ایشو در جیرا).
- پرامپتها (Prompts): الگوهای آمادهای که کاربر میتواند انتخاب کند تا دستورات پیچیده بهینهسازی شوند.
۳. مذاکره قابلیتها (Capability Negotiation)
یکی از مهمترین بخشهای این پروتکل، فرآیند Negotiation یا مذاکره است. وقتی کلاینت برای اولین بار به سرور وصل میشود، پیام initialize را ارسال میکند. در این مرحله کلاینت میپرسد: "تو چه ابزارها و منابعی داری؟"
سرور لیست توانمندیهای خود (Capabilities) را برمیگرداند و کلاینت این لیست را در اختیار مدل زبانی قرار میدهد تا مدل بداند چه کارهایی میتواند انجام دهد.
۴. لایههای انتقال (Transport Layers)
ارتباطات در این معماری به روشهای مختلفی انجام میشود:
- stdio: برای ارتباطات محلی (Local). سرور به عنوان یک سابپروسس (Subprocess) در سیستم کاربر اجرا میشود.
- HTTP / SSE (Server-Sent Events): برای ارتباطات راه دور (Remote). بسیار مناسب برای زمانی که سرور شما در فضای ابری (Cloud) قرار دارد.
- WebSocket:در برخی پیادهسازیها برای ارتباطات دوطرفه سریع استفاده میشود.
مفاهیم پیشرفته: Roots, Sampling و Notifications
برای توسعهدهندگان حرفهای، MCP امکانات پیشرفتهتری نیز دارد:
- Roots: کلاینت میتواند محدودههایی (مثل یک پوشه خاص در سیستمعامل) را به عنوان "Root" تعریف کند. سرور متوجه میشود که فقط اجازه دارد در این محدوده فعالیت کند (آگاهی از مرزهای کلاینت).
- Sampling: سرورها همیشه فقط پاسخگو نیستند. با قابلیت Sampling، سرور میتواند از کلاینت بخواهد که یک درخواست را به LLM بفرستد و نتیجه را بگیرد (مثلاً سرور فایلی را میخواند و از LLM میخواهد آن را قبل از ارسال به کاربر، خلاصه کند).
- Notifications: این پروتکل فقط Request/Response نیست. سرور میتواند پیامهای یکطرفه (مانند
notifications/resources/updated) بفرستد تا به کلاینت اطلاع دهد دادهای تغییر کرده است.
اشتباهات رایج درباره Model Context Protocol
با معرفی هر تکنولوژی جدید، سوءتفاهمهایی نیز شکل میگیرد. در اینجا به سه اشتباه رایج میپردازیم:
اشتباه اول: "MCP جایگزین APIهای سنتی میشود"
واقعیت این است که این استاندارد روی APIها سوار میشود. به عنوان مثال، سرور گیتهاب در پشت صحنه همچنان از GitHub REST API استفاده میکند. این پروتکل جایگزین API نیست، بلکه لایه استاندارد مترجم برای هوش مصنوعی است.
اشتباه دوم: "MCP همان AI Agent است"
اگر میخواهید بدانید AI Agent چیست، باید بدانید که ایجنتها به برنامهریزی (Planning)، حافظه (Memory)، و اجرای گردشکار (Workflow) نیاز دارند. این پروتکل تنها "استاندارد ارتباطی" ایجنت با دنیای بیرون است و به تنهایی سیستم را خودمختار نمیکند.
اشتباه سوم: "این پروتکل ۱۰۰٪ امن است و نشت اطلاعات ندارد"
هیچ سیستمی در دنیای نرمافزار مطلقاً امن نیست. با این حال، اگر این معماری درست پیکربندی شود، سطح حمله (Attack Surface) را به شدت کاهش میدهد. مدل هوش مصنوعی کدی را روی سیستم شما اجرا نمیکند؛ مدل درخواست میدهد، کلاینت تاییدیه کاربر را میگیرد (User Approval)، و سرور با دسترسیهای محدودشده (Sandbox) آن را اجرا میکند.
بهترین ابزارهای MCP: معرفی سرورهای پرکاربرد
جامعه متنباز با سرعت بالایی در حال توسعه ابزارهای MCP است. در جدول زیر چند مورد از پرکاربردترین سرورهای موجود در ریپازیتوری رسمی گیتهاب آورده شده است:
کاربرد اصلی برای هوش مصنوعینوع ارتباطنام سروربررسی کدها، ایجاد PR، جستجو در مخازن و مدیریت Issues.RemoteGitHub Serverکاوش در اسکیماها، اجرای کوئریهای SQL برای تحلیل دادهها.
| کاربرد اصلی برای هوش مصنوعی | نوع ارتباط | نام سرور |
|---|---|---|
| بررسی کدها، ایجاد PR، جستجو در مخازن و مدیریت Issues | Remote | GitHub Server |
| کاوش در اسکیماها، اجرای کوئریهای SQL برای تحلیل دادهها | Local/Remote | PostgreSQL / SQLite |
| خواندن، نوشتن و جستجو در فایلهای سیستم (محدود شده به مسیرهای مجاز) | Local | Filesystem |
| باز کردن مرورگر واقعی، کلیک روی دکمهها و استخراج اطلاعات سایتها | Local | Puppeteer |
| خواندن پیامهای سازمانی، جستجو در مستندات و ارسال نوتیفیکیشن | Remote | Slack / Notion |
آموزش MCP: ساخت اولین سرور با پایتون
در این بخش از آموزش MCP، قصد داریم با استفاده از مستندات Python SDK، یک سرور ساده بنویسیم. ما از پکیج mcp و کلاس FastMCP (که کار را بسیار ساده میکند) استفاده میکنیم.
پیشنیازها
ابتدا پکیج رسمی را نصب کنید:
pip install mcpنوشتن کد سرور
ما سروری مینویسیم که یک ابزار (Tool) هواشناسی ارائه میدهد. در یک پروژه واقعی، شما اینجا به API سازمان هواشناسی درخواست (HTTP Request) میفرستید، اما برای سادگی، دادهها را شبیهسازی کردهایم.
from mcp.server.fastmcp import FastMCP
# مقداردهی اولیه سرور
mcp = FastMCP("Weather_Server")
# استفاده از دکوراتور برای تعریف یک Tool استاندارد
@mcp.tool()
def get_weather(city: str) -> str:
"""
دریافت وضعیت آب و هوای فعلی برای یک شهر مشخص.
مدل هوش مصنوعی از این توضیحات (Docstring) برای فهمیدن کاربرد ابزار استفاده میکند.
"""
# شبیهسازی فراخوانی یک API خارجی
weather_data = {
"تهران": "صاف و آفتابی، ۲۵ درجه سانتیگراد",
"لندن": "ابری و بارانی، ۱۲ درجه سانتیگراد",
"تورنتو": "برفی، منفی ۵ درجه سانتیگراد"
}
return weather_data.get(city, f"متاسفانه اطلاعات آب و هوایی برای {city} یافت نشد.")
if __name__ == "__main__":
# اجرای سرور بر بستر stdio برای ارتباط محلی با کلاینت
mcp.run(transport='stdio')چه اتفاقی میافتد؟
وقتی این سرور را در کلاینت خود (مثلاً تنظیمات Claude Desktop) معرفی کنید، کلاینت هنگام Negotiation متوجه ابزار get_weather میشود. توضیحات تابع (Docstring) مستقیماً به هوش مصنوعی داده میشود. اگر از کلاینت بپرسید "هوای تهران چطور است؟", LLM درخواست فراخوانی تابع get_weather("تهران") را میدهد و سرور نتیجه را بازمیگرداند.
نتیجه گیری
استاندارد Model Context Protocol پاسخ صنعت به یکی از بزرگترین چالشهای توسعه نرمافزار در عصر هوش مصنوعی است: "پراکندگی ارتباطات". با استفاده از این معماری، استارتاپها و توسعهدهندگان میتوانند به جای نوشتن کدهای تکراری برای ادغام سرویسها، بر روی منطق اصلی نرمافزار خود تمرکز کنند. گردو کلاد به عنوان ارائهدهنده زیرساختهای نوین، معتقد است که درک و پیادهسازی این معماری، تفاوت بین سیستمهای سنتی و هوش مصنوعیهای پیشرفته فردا را رقم خواهد زد.