Model Context Protocol (MCP)

راهنمای جامع ساخت سرورهای MCP: اتصال هوش مصنوعی به داده‌های شما

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

در این راهنما، ما پایه‌های معماری MCP، نحوه ساختاردهی یک سرور و یک مثال کد عملی با استفاده از پایتون را بررسی خواهیم کرد. چه در حال ارائه پایگاه‌های داده داخلی یا APIهای شخص ثالث به LLMها باشید، درک مکانیک‌های MCP برای مهندسی هوش مصنوعی مدرن ضروری است.

چرا MCP؟ تغییر در معماری LLM

به طور سنتی، اتصال یک LLM به ابزارهای خارجی نیاز به نوشتن کد یکپارچه‌سازی سفارشی برای هر مورد استفاده خاص داشت. این رویکرد شکننده، مقیاس‌پذیری دشواری دارد و به دلیل پیاده‌سازی ناسازگار احراز هویت و مدیریت خطاها، آسیب‌پذیری‌های امنیتی ایجاد می‌کند.

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

مفاهیم کلیدی: ابزارها، منابع و دستورات

قبل از نوشتن کد، درک سه اصل اولیه که یک سرور MCP ارائه می‌دهد، حیاتی است:

  • ابزارها (Tools): توابع اجرایی که LLM می‌تواند برای انجام اقدامات مانند «ایجاد فایل» یا «استعلام از پایگاه داده» فراخوانی کند.
  • منابع (Resources): داده‌های ایستا یا پویایی که LLM می‌تواند آن‌ها را بخواند، مشابه فایل‌ها در یک سیستم‌فایل. این برای ارائه مستندات یا پیکربندی ایده‌آل است.
  • دستورات (Prompts): قالب‌های از پیش تعریف شده‌ای که به ساختاردهی تعاملات کمک کرده و پیچیدگی دستورات ارسالی توسط مشتری را کاهش می‌دهند.

ساخت یک سرور MCP ساده با پایتون

بیایید یک سرور MCP پایه را با استفاده از SDK رسمی پایتون mcp بسازیم. این مثال یک ابزار واحد را ارائه می‌دهد که زمان فعلی سرور را دریافت می‌کند و ساختار پایه یک سرویس MCP را نشان می‌دهد.

ابتدا مطمئن شوید که وابستگی‌های لازم نصب شده‌اند:

pip install mcp

در اینجا پیاده‌سازی کامل یک سرور MCP ساده آورده شده است:

from mcp.server import Server
from mcp.types import Tool, Resource
from datetime import datetime
import json

# راه‌اندازی سرور
server = Server("time-server")

# تعریف یک ابزار
@server.tool()
def get_current_time() -> str:
    """
    زمان فعلی سرور را در قالب ISO برمی‌گرداند.
    این ابزار تعریف پایه ابزار در MCP را نشان می‌دهد.
    """
    return datetime.now().isoformat()

# تعریف یک منبع
@server.resource()
def system_info(uri: str) -> str:
    """
    اطلاعاتی درباره نمونه سرور در حال اجرا ارائه می‌دهد.
    """
    return json.dumps({
        "server_version": "1.0.0",
        "uptime": "stable"
    })

if __name__ == "__main__":
    # اجرای سرور با استفاده از انتقال stdio
    server.run(transport="stdio")

تحلیل کد

در مثال بالا، ما شیء Server را با یک نام منحصر به فرد ایجاد می‌کنیم. دکوراتور @server.tool() تابع get_current_time را به عنوان یک ابزار اجرایی ثبت می‌کند. وقتی یک LLM این ابزار را فراخوانی می‌کند، چارچوب به طور خودکار تجزیه و بازسازی (serialization/deserialization) آرگومان‌ها و نتایج را مدیریت می‌کند.

به طور مشابه، دکوراتور @server.resource() تابع system_info را ارائه می‌دهد. این به مشتریان اجازه می‌دهد متادیتای سرور را بخوانند، گویی که یک فایل ایستا است. فراخوانی server.run(transport="stdio") سرور را شروع می‌کند و منتظر پیام‌های JSON-RPC از طریق ورودی و خروجی استاندارد می‌ماند که روش ارتباطی استاندارد برای عامل‌های هوش مصنوعی محلی است.

بهترین شیوه‌ها برای سرورهای سطح تولید

در حالی که مثال بالا کاربردی است، محیط‌های تولید به ملاحظات اضافی نیاز دارند:

  1. امنیت در اولویت: همیشه ورودی‌ها را قبل از اجرای ابزارها اعتبارسنجی کنید. از بررسی نوع دقیق استفاده کنید و پارامترهای ارائه شده توسط کاربر را برای جلوگیری از حملات تزریق پاک‌سازی کنید.
  2. مدیریت خطا: پیام‌های خطای توصیفی برگردانید که به LLM کمک می‌کند بفهمد چرا فراخوانی ابزار شکست خورده است، به طوری که بتواند بازیابی کند یا از کاربر برای شفاف‌سازی سوال بپرسد.
  3. ثبت وقایع و قابلیت مشاهده: ثبت وقایع (Logging) قوی را برای ردیابی استفاده از ابزار، تأخیر و خطاها پیاده‌سازی کنید. این برای عیب‌یابی و بهینه‌سازی استراتژی‌های مهندسی دستور (Prompt Engineering) حیاتی است.
  4. مقیاس‌پذیری: برای سناریوهای با ترافیک بالا، در نظر بگیرید که سرور MCP خود را به عنوان یک میکروسرویس جداگانه با انتقال WebSocket یا HTTP به جای stdio اجرا کنید.

نتیجه‌گیری

ساخت سرورهای MCP راهی قدرتمند برای گسترش قابلیت‌های مدل‌های هوش مصنوعی بدون اختراع دوباره چرخ است. با پایبندی به استاندارد MCP، شما تضمین می‌کنید که یکپارچه‌سازی‌های شما قابل تعامل، امن و آینده‌نگر هستند. با بالغ‌تر شدن اکوسیستم، شاهد تکثیر سرورهای MCP تخصصی خواهیم بود که تعاملات داده‌ای پیچیده را به ابزارهای ساده و استاندارد تبدیل می‌کند. از امروز شروع به ساخت کنید و به تعریف نسل بعدی برنامه‌های هوش مصنوعی کمک کنید.

Share: