يحتوي هذا المستودع على تنفيذ لبروتوكول سياق النموذج (MCP) باستخدام بايثون، يوضح كيفية إنشاء تطبيق خادم وعميل يتواصلان باستخدام معيار MCP.
يتكون تنفيذ MCP من مكونين رئيسيين:
-
خادم MCP (
server.py) - خادم يعرض:- الأدوات: دوال يمكن استدعاؤها عن بُعد
- الموارد: بيانات يمكن استرجاعها
- النماذج: قوالب لإنشاء مطالبات لنماذج اللغة
-
عميل MCP (
client.py) - تطبيق عميل يتصل بالخادم ويستخدم ميزاته
يعرض هذا التنفيذ عدة ميزات رئيسية في MCP:
completion- يولد تكملات نصية من نماذج الذكاء الاصطناعي (محاكاة)add- آلة حاسبة بسيطة تجمع رقمين
models://- يعيد معلومات عن نماذج الذكاء الاصطناعي المتاحةgreeting://{name}- يعيد تحية مخصصة لاسم معين
review_code- يولد مطالبة لمراجعة الكود
لاستخدام هذا التنفيذ لـ MCP، قم بتثبيت الحزم المطلوبة:
pip install mcp-server mcp-clientشغّل الخادم في نافذة طرفية واحدة:
python server.pyيمكن أيضًا تشغيل الخادم في وضع التطوير باستخدام MCP CLI:
mcp dev server.pyأو تثبيته في Claude Desktop (إذا كان متاحًا):
mcp install server.pyشغّل العميل في نافذة طرفية أخرى:
python client.pyسيتم الاتصال بالخادم وعرض جميع الميزات المتاحة.
يعرض العميل (client.py) جميع قدرات MCP:
python client.pyسيتم الاتصال بالخادم واستخدام جميع الميزات بما في ذلك الأدوات والموارد والنماذج. ستظهر النتائج:
- نتيجة أداة الآلة الحاسبة (5 + 7 = 12)
- استجابة أداة التكملة للسؤال "ما معنى الحياة؟"
- قائمة نماذج الذكاء الاصطناعي المتاحة
- تحية مخصصة لـ "MCP Explorer"
- قالب مطالبة مراجعة الكود
تم تنفيذ الخادم باستخدام واجهة برمجة التطبيقات FastMCP، التي توفر تجريدات عالية المستوى لتعريف خدمات MCP. إليك مثال مبسط لكيفية تعريف الأدوات:
@mcp.tool()
def add(a: int, b: int) -> int:
"""Add two numbers together
Args:
a: First number
b: Second number
Returns:
The sum of the two numbers
"""
logger.info(f"Adding {a} and {b}")
return a + bيستخدم العميل مكتبة عميل MCP للاتصال بالخادم واستدعائه:
async with stdio_client(server_params) as (reader, writer):
async with ClientSession(reader, writer) as session:
await session.initialize()
result = await session.call_tool("add", arguments={"a": 5, "b": 7})لمزيد من المعلومات عن MCP، قم بزيارة: https://modelcontextprotocol.io/
إخلاء المسؤولية:
تمت ترجمة هذا المستند باستخدام خدمة الترجمة الآلية Co-op Translator. بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الموثوق به. للمعلومات الهامة، يُنصح بالترجمة البشرية المهنية. نحن غير مسؤولين عن أي سوء فهم أو تفسير ناتج عن استخدام هذه الترجمة.