Model Context Protocol (MCP)

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

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

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

چرا باید سرور ساخت؟

قبل از غرق شدن در کد، درک مزایای معماری حیاتی است. ادغام‌های سنتی اغلب نیاز به آداپتورهای کد-ثابت (hard-coded) برای هر ارائه‌دهنده هوش مصنوعی دارند که منجر به قفل شدن در اکوسیستم یک فروشنده و کابوس‌های نگهداری می‌شود. یک سرور MCP داده‌ها و منطق شما را از مشتری جدا می‌کند. چه به کلاد (Claude)، یک مدل زبانی بزرگ محلی یا یک سیستم RAG سفارشی متصل شوید، سرور به عنوان تنها منبع حقیقت باقی می‌ماند. این ماژولاریت با اجازه دادن به شما برای کنترل دقیق اینکه کدام ابزارها و تحت چه مجوزهایی در دسترس قرار می‌گیرند، امنیت را افزایش می‌دهد، به جای اینکه به مدل دسترسی نامحدود به زیرساخت شما بدهید.

راه‌اندازی محیط

ما از پایتون، یکی از محبوب‌ترین زبان‌ها برای توسعه هوش مصنوعی، به همراه SDK رسمی python-mcp استفاده خواهیم کرد. اطمینان حاصل کنید که پایتون ۳.۱۰ یا بالاتر نصب شده است. ابتدا، یک محیط مجازی برای جداسازی وابستگی‌های خود ایجاد کنید:

python -m venv mcp_env
source mcp_env/bin/activate  # On Windows: mcp_env\Scripts\activate

سپس، بسته‌های ضروری را نصب کنید. شما به SDK اصلی و یک کتابخانه برای مدیریت چرخه عمر سرور نیاز دارید:

pip install mcp

ساخت اولین سرور شما

بیایید یک سرور ساده بسازیم که یک ابزار واحد را در دسترس قرار دهد: تولیدکننده عدد تصادفی. این مثال مفاهیم اصلی تعریف ابزارها، مدیریت ورودی و بازگرداندن خروجی ساختاریافته را نشان می‌دهد.

import asyncio
from mcp.server import Server
from mcp.types import Tool, TextContent
from mcp.server.stdio import stdio_server

# Initialize the server
app = Server("random-number-server")

@app.tool()
async def generate_random_number(min_val: int, max_val: int) -> list[TextContent]:
    """Generate a random number within a specified range.
    
    Args:
        min_val: The minimum value for the random number.
        max_val: The maximum value for the random number.
        
    Returns:
        A text content object containing the generated number.
    """
    import random
    result = random.randint(min_val, max_val)
    return [TextContent(type="text", text=f"The random number is: {result}")]

async def main():
    async with stdio_server() as (read, write):
        await app.run(read, write, app.create_initialization_options())

if __name__ == "__main__":
    asyncio.run(main())

در این قطعه کد، ما یک تابع را با @app.tool() تزیین (decorate) می‌کنیم. این دکوراتور تابع را به عنوان یک ابزار قابل دسترسی در پروتکل MCP ثبت می‌کند. سرور از stdio_server() برای ارتباط از طریق جریان‌های ورودی و خروجی استاندارد استفاده می‌کند که روش انتقال استاندارد برای توسعه محلی و ادغام با IDEهایی مانند Cursor یا Windsurf است.

آزمایش و ادغام

پس از آماده بودن اسکریپت سرور شما، می‌توانید آن را به صورت محلی با اجرای فایل پایتون آزمایش کنید. برای ادغام آن با یک مشتری MCP، معمولاً مشتری را پیکربندی می‌کنید تا این اسکریپت را به عنوان یک فرآیند فرزند (subprocess) اجرا کند. به عنوان مثال، در یک فایل mcp-config.json، ممکن است مشخص کنید:

{
  "mcpServers": {
    "random-numbers": {
      "command": "python",
      "args": ["server.py"]
    }
  }
}

این پیکربندی به مشتری می‌گوید که اسکریپت پایتون شما را اجرا کند و یک کانال ارتباطی دوطرفه ایجاد نماید. سپس مشتری می‌تواند ابزارهای موجود را از طریق درخواست tools/list کشف کرده و tools/call را فراخوانی کند تا عدد تولید شده را دریافت نماید.

نتیجه‌گیری

ساخت سرورهای MCP گامی توانمندساز برای ایجاد برنامه‌های کاربردی هوش مصنوعی هوشمندتر و آگاه از زمینه است. با استانداردسازی نحوه دسترسی به داده‌ها و ابزارهای شما، نه تنها ادغام‌های خود را برای آینده ایمن می‌کنید، بلکه امنیت و ماژولاریت را نیز افزایش می‌دهید. با رشد اکوسیستم، انتظار داشته باشید سرورهای پیچیده‌تری را ببینید که پرس‌وجوهای پایگاه داده، تعاملات سیستم فایل و حتی گردش‌های کاری عامل چندمرحله‌ای را مدیریت می‌کنند. از کوچک شروع کنید، با SDK پایتون آزمایش کنید و بررسی کنید که چگونه در دسترس قرار دادن دارایی‌های داده منحصر به فرد خود برای LLMها می‌تواند امکانات جدیدی را برای پروژه‌های شما باز کند.

Share: