توضیح پروتکل بافت مدل (Model Context Protocol)

از نوشتن مکرر کدهای یکسان برای یکپارچه‌سازی دست بردارید.

اگر یک LLM را به یک پایگاه داده یا یک API متصل کنید، اغلب برای هر مدل جدید، کدهای واسط (glue code) سفارشی می‌نویسید. این کار باعث ایجاد آشفتگی می‌شود. در نهایت مجبور می‌شوید اتصالات زیادی را برای ابزارهای مختلف مدیریت کنید.

پروتکل بافت مدل (MCP) این مشکل را حل می‌کند. این پروتکل مانند یک درگاه USB-C برای هوش مصنوعی عمل می‌کند. شما یک ابزار را یک‌بار می‌سازید و هر مدلی می‌تواند از آن استفاده کند.

معماری آن از سه بخش تشکیل شده است:

• میزبان (Host): اپلیکیشنی که استفاده می‌کنید، مانند Claude Code یا یک IDE. • کلاینت (Client): رابط متصل‌کننده در داخل میزبان. • سرور (Server): برنامه‌ای که برای ارائه داده‌ها یا ابزارها می‌سازید.

شما می‌توانید یک سرور MCP را با استفاده از سه عنصر اصلی بسازید:

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

در اینجا نحوه ساخت یک سرور پایه در پایتون با استفاده از FastMCP SDK آورده شده است:

from mcp.server.fastmcp import FastMCP

mcp = FastMCP("demo-tools")

@mcp.tool()
def word_count(text: str) -> int:
    """Count words in a text."""
    return len(text.split())

@mcp.resource("notes://team")
def team_notes() -> str:
    """Expose team notes."""
    return "Release freeze starts Friday."

@mcp.prompt()
def code_review(language: str, code: str) -> str:
    """Template for code reviews."""
    return f"Review this {language} code: {code}"

if __name__ == "__main__":
    mcp.run()

این کد ارتباطات پیچیده را برای شما مدیریت می‌کند. رشته‌های مستندسازی (docstrings) شما به دستورالعمل‌هایی برای مدل تبدیل می‌شوند.

سه نکته برای محیط عملیاتی (Production):

  1. امنیت: همیشه قبل از اجرای ابزاری که داده‌ها را تغییر می‌دهد، از کاربر تاییدیه بگیرید.
  2. بافت (Context): توضیحات ابزار را کوتاه نگه دارید. توضیحات طولانی باعث هدر رفتن توکن‌ها می‌شود.
  3. خطاها: پیام‌های واضح برگردانید. یک مدل می‌تواند خطای "User not found" را اصلاح کند، اما نمی‌تواند یک کرش (crash) خام در کد را برطرف کند.

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

منبع: https://dev.to/galian/model-context-protocol-explained-build-your-first-mcp-server-in-python-ian