MCP یا Model Context Protocol یک استاندارد باز برای اتصال مدلهای هوش مصنوعی به ابزارها و دادههاست. پیش از MCP، اتصال هر دستیار هوش مصنوعی به هر سرویس، کد اختصاصی جداگانهای میخواست. با MCP، یک ابزار یک بار بهصورت MCP Server نوشته میشود و هر برنامه سازگاری میتواند از آن استفاده کند. در این مقاله توضیح میدهیم MCP Server چیست، از چه اجزایی تشکیل شده، چطور کار میکند و چه کاربردهایی دارد.
فهرست مطالب
MCP چه مشکلی را حل میکند؟
فرض کنید سه برنامه هوش مصنوعی (یک دستیار دسکتاپ، یک ویرایشگر کد و یک چتبات سازمانی) دارید و میخواهید هرکدام به چهار سرویس (دیتابیس، سیستم تیکت، گیتهاب و فایلها) وصل شوند. بدون استاندارد، باید ۱۲ اتصال جداگانه بنویسید. MCP این مسئله را به «یک بار نوشتن، همهجا استفاده کردن» تبدیل میکند: هر سرویس یک MCP Server دارد و هر برنامه سازگار با MCP میتواند به همه آنها وصل شود؛ شبیه کاری که USB برای اتصال دستگاهها انجام داد.
MCP در اواخر ۲۰۲۴ توسط Anthropic بهصورت استاندارد باز منتشر شد و خیلی زود توسط ابزارها و شرکتهای مختلف پذیرفته شد.
معماری: Host، Client و Server
- Host: برنامهای که کاربر با آن کار میکند و مدل زبانی را در خود دارد؛ مثل یک دستیار دسکتاپ، یک IDE یا یک پلتفرم ایجنت.
- Client: بخشی درون Host که با یک MCP Server ارتباط برقرار میکند. برای هر سرور، یک Client جداگانه وجود دارد.
- Server: برنامهای مستقل که ابزارها و دادههای یک سرویس مشخص را با فرمت استاندارد در اختیار قرار میدهد؛ مثلاً MCP Server دیتابیس PostgreSQL یا سیستم فایل.
پیامها بین Client و Server با فرمت JSON-RPC ۲.۰ رد و بدل میشوند.
قابلیتهای MCP Server: Tools، Resources و Prompts
| قابلیت | کنترلکننده | نمونه |
|---|---|---|
| Tools (ابزارها) | مدل تصمیم میگیرد کی صدا بزند | اجرای کوئری، ساخت تیکت، ارسال پیام |
| Resources (منابع) | برنامه یا کاربر انتخاب میکند | محتوای فایل، مستندات، لاگها |
| Prompts (قالبها) | کاربر انتخاب میکند | قالب آماده «بررسی کد» یا «خلاصه تیکتهای امروز» |
هر ابزار یک نام، توضیح و طرح ورودی (JSON Schema) دارد. مدل بر اساس توضیح تصمیم میگیرد چه زمانی و با چه ورودی ابزار را صدا بزند؛ پس کیفیت توضیح ابزارها مستقیماً روی رفتار ایجنت اثر دارد.
روشهای ارتباط: stdio و HTTP
- stdio: Host سرور را بهصورت یک فرایند محلی اجرا میکند و پیامها از ورودی و خروجی استاندارد رد و بدل میشوند. ساده و مناسب ابزارهایی که روی همان کامپیوتر اجرا میشوند.
- Streamable HTTP: سرور بهصورت سرویس شبکه روی یک سرور مجازی اجرا میشود و چند کاربر یا برنامه از راه دور به آن وصل میشوند. این روش در نسخههای جدید مشخصات MCP جایگزین روش قدیمیتر HTTP+SSE شده است و برای احراز هویت از OAuth پشتیبانی میکند.
یک درخواست از ابتدا تا انتها
- Host هنگام شروع به MCP Serverها وصل میشود و فهرست ابزارهای هرکدام را دریافت میکند.
- کاربر میپرسد: «تیکتهای باز مشتری X چیست؟»
- مدل، با دیدن فهرست ابزارها، تصمیم میگیرد ابزار
search_ticketsرا با ورودی مشتری X صدا بزند. - Host، معمولاً پس از تأیید کاربر، درخواست را از طریق Client به MCP Server میفرستد.
- Server کوئری را اجرا و نتیجه را برمیگرداند.
- مدل نتیجه را میخواند و پاسخ نهایی را برای کاربر مینویسد.
نمونه ساده MCP Server با پایتون
با SDK رسمی پایتون، ساخت یک MCP Server چند خط کد است:
pip install "mcp[cli]"
import shutil
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("server-monitor")
@mcp.tool()
def disk_usage(path: str = "/") -> str:
"""فضای کل، استفادهشده و آزاد دیسک را برای مسیر دادهشده برمیگرداند."""
total, used, free = shutil.disk_usage(path)
gb = 1024 ** 3
return f"کل: {total // gb} GB، استفادهشده: {used // gb} GB، آزاد: {free // gb} GB"
if __name__ == "__main__":
mcp.run() # بهطور پیشفرض stdio؛ برای شبکه: transport="streamable-http"
این سرور یک ابزار فقطخواندنی دارد. راهاندازی MCP Server روی VPS برای دسترسی تیمی، همراه با احراز هویت و Reverse Proxy، در راهاندازی MCP Server شخصی روی VPS آمده است.
کاربردهای رایج
- توسعه نرمافزار: دسترسی دستیار کدنویسی به مخزن کد، Issueها، مستندات و دیتابیس توسعه.
- پشتیبانی و فروش: اتصال به CRM و سیستم تیکت برای پاسخ مبتنی بر اطلاعات واقعی مشتری.
- عملیات زیرساخت: مشاهده وضعیت سرورها، لاگها و هشدارهای مانیتورینگ.
- دانش سازمانی: جستجو در اسناد، ویکی و فایلهای داخلی.
- اتوماسیون: پلتفرمهایی مثل n8n میتوانند هم MCP Server را مصرف کنند و هم ورکفلوها را بهصورت MCP Server ارائه دهند. برای ساخت ایجنت با n8n، ساخت AI Agent با n8n و Ollama را ببینید.
تفاوت MCP با Function Calling
Function Calling قابلیت مدل است: مدل میتواند درخواست ساختاریافته برای اجرای یک تابع تولید کند. MCP یک لایه بالاتر است: استانداردی برای اینکه این توابع چطور تعریف، کشف و اجرا شوند. MCP از Function Calling مدل استفاده میکند و آن را قابل حمل میکند؛ ابزاری که یک بار بهصورت MCP Server نوشته شود، در هر Host سازگار و با هر مدلی که از Tool Calling پشتیبانی کند، قابل استفاده است.
نکات امنیتی
MCP Serverها به دادهها و سیستمهای واقعی دسترسی دارند و ایجنتی که فریب بخورد، با همان دسترسیها عمل میکند. مهمترین اصول:
- فقط ابزارهای لازم را فعال کنید و برای هر سرور توکن با کمترین دسترسی بسازید.
- اقدامات غیرقابل بازگشت را منوط به تأیید انسانی کنید.
- MCP Serverهای آماده را فقط از منابع معتبر نصب کنید و نسخه را ثابت نگه دارید.
- سرورهای راه دور را با HTTPS و احراز هویت محافظت کنید.
تهدیدها و راهکارها بهتفصیل در امنیت MCP Server و AI Agentها بررسی شده است.
سوالات متداول
آیا MCP مختص مدلهای Claude است؟
خیر. MCP یک استاندارد باز است و ابزارها و پلتفرمهای مختلف از آن پشتیبانی میکنند. با مدلهای متنباز مثل Qwen و Llama هم، از طریق Hostهایی که با Ollama یا vLLM کار میکنند، قابل استفاده است.
تفاوت MCP با یک REST API معمولی چیست؟
REST API برای برنامهنویس طراحی شده است. MCP برای مدل طراحی شده: ابزارها با توضیح و طرح ورودی قابل فهم برای مدل ارائه میشوند و Host میتواند آنها را بهصورت خودکار کشف کند. بسیاری از MCP Serverها در واقع لایهای روی یک REST API موجود هستند.
با چه زبانهایی میتوان MCP Server نوشت؟
SDKهای رسمی برای پایتون، TypeScript و چند زبان دیگر وجود دارد. پایتون با FastMCP و TypeScript رایجترین گزینهها هستند.
MCP Server را کجا اجرا کنم؟
ابزارهای شخصی را میتوان بهصورت محلی با stdio اجرا کرد. برای استفاده تیمی یا ایجنتهای همیشه فعال، اجرای آن روی یک VPS با HTTPS و احراز هویت مناسبتر است.
میزبانی MCP Server و ایجنتهای هوش مصنوعی
MCP Serverهای سازمانی خود را روی سرورهای مجازی لینوکس تراست هاست با IP ثابت و شبکه خصوصی برای اتصال امن به سیستمهای داخلی اجرا کنید.