بناء خوادم MCP

أساسيات خادم MCP

5 دقيقة للقراءة

الآن بعد أن فهمت هندسة MCP، دعنا نبني خادم MCP كامل يكشف أدوات مفيدة.

دورة حياة الخادم

كل خادم MCP يتبع هذه الدورة:

  1. التهيئة: يبدأ الخادم ويسجل القدرات
  2. الاتصال: يتصل العميل عبر stdio أو SSE
  3. تبادل القدرات: يعلن الخادم عن الأدوات/الموارد المتاحة
  4. التشغيل: يتعامل الخادم مع الطلبات
  5. الإغلاق: فصل الاتصال النظيف

إنشاء نسخة الخادم

from mcp.server import Server
from mcp.types import Tool, TextContent

# إنشاء خادم باسم فريد
server = Server(name="my-awesome-server")

اسم الخادم يظهر في السجلات ويساعد في تحديد خادمك عند تكوين عدة خوادم MCP.

تسجيل الأدوات

الأدوات هي الطريقة الأساسية للتفاعل بين الذكاء الاصطناعي وخادمك. كل أداة تحتاج:

المكون الغرض
name معرف فريد (snake_case)
description ماذا تفعل الأداة (الذكاء الاصطناعي يقرأ هذا!)
inputSchema مخطط JSON للمعلمات
@server.list_tools()
async def list_tools():
    return [
        Tool(
            name="get_weather",
            description="الحصول على الطقس الحالي لمدينة",
            inputSchema={
                "type": "object",
                "properties": {
                    "city": {
                        "type": "string",
                        "description": "اسم المدينة (مثل 'لندن'، 'طوكيو')"
                    },
                    "units": {
                        "type": "string",
                        "enum": ["celsius", "fahrenheit"],
                        "default": "celsius"
                    }
                },
                "required": ["city"]
            }
        )
    ]

التعامل مع استدعاءات الأدوات

عندما يستدعي الذكاء الاصطناعي أداة، يستقبل معالجك الاسم والوسائط:

@server.call_tool()
async def call_tool(name: str, arguments: dict):
    if name == "get_weather":
        city = arguments["city"]
        units = arguments.get("units", "celsius")

        # منطقك هنا (مثل استدعاء API الطقس)
        weather = fetch_weather(city, units)

        return [TextContent(
            type="text",
            text=f"الطقس في {city}: {weather}"
        )]

    raise ValueError(f"أداة غير معروفة: {name}")

أوصاف الأدوات مهمة

نصيحة احترافية: اكتب أوصاف الأدوات كما لو كنت تشرح لإنسان. يستخدم الذكاء الاصطناعي هذه الأوصاف لتقرير متى وكيف يستخدم أداتك.

وصف جيد:

"البحث في قاعدة معرفة الشركة عن المستندات ذات الصلة.
يُرجع أفضل 5 تطابقات مع العناوين والمقتطفات."

وصف سيء:

"بحث KB"

في القسم التالي، سنضيف موارد لكشف البيانات التي يمكن للذكاء الاصطناعي قراءتها. :::

اختبار

اختبار الوحدة 2: بناء خوادم MCP

خذ الاختبار