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

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

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

MCP محاسبات را از M × N یکپارچه‌سازی به M + N تغییر می‌دهد.

  • نویسندگان ابزار، یک سرور MCP می‌نویسند.
  • نویسندگان اپلیکیشن، یک کلاینت MCP اضافه می‌کنند.
  • هر میزبان (Host) که از MCP پشتیبانی کند، می‌تواند از هر سروری استفاده کند.

این معماری دارای سه نقش است:

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

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

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

شما می‌توانید یک سرور را در Python با استفاده از FastMCP SDK بسازید. در اینجا یک مثال ساده آورده شده است:

from mcp.server.fastmcp import FastMCP

mcp = FastMCP("demo-tools")

@mcp.tool()
def word_count(text: str) -> int:
    """Count the 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 reviewing code."""
    return f"Review this {language} code: {code}"

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

هنگام ساخت سرورها، این قوانین را در نظر داشته باشید:

  • امنیت: برای ابزارهای مخرب از تایید کاربر استفاده کنید. تمام آرگومان‌ها را اعتبارسنجی کنید.
  • بافت (Context): توضیحات ابزار را کوتاه نگه دارید. توضیحات طولانی بودجه توکن شما را مصرف می‌کنند.
  • خطاها: پیام‌های واضحی برگردانید تا مدل بتواند اشتباهات خود را اصلاح کند.

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

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

Optional learning community: https://t.me/GyaanSetuAi