فهم بروتوكول سياق النموذج
إعداد بيئة تطوير MCP الخاصة بك
عشر دقائق من الإعداد، وبعدها تقضي بقية الدورة في كتابة كود الخادم بدل مصارعة بيئتك.
المتطلبات المسبقة
- بيئة تشغيل Python أو Node.js. كل SDK يحدد إصداره الأدنى بنفسه، وهذه الأرقام تتغير — راجع توثيق MCP SDK لمعرفة المتطلب الحالي بدل الاعتماد على رقم مكتوب في دورة.
- Claude Desktop، وهو ما ستختبر عليه.
- محرر كود. أي محرر يفي بالغرض.
تثبيت MCP SDK
تغطي الـ SDKs الرسمية لغات Python وTypeScript وC# وJava وKotlin وSwift، إضافة إلى SDKs من المجتمع للغات Rust وGo وغيرها. تستخدم هذه الدورة Python في الأمثلة، وTypeScript حيثما اختلف الأمر بشكل جوهري — فالبروتوكول واحد تحت السطح، والمفاهيم تنتقل إلى أي لغة تختارها.
تثبيت الـ SDK
# اعزل المشروع حتى لا تكسر ترقيات الـ SDK أعمالك الأخرى
python -m venv mcp-env
source mcp-env/bin/activate # على Windows: mcp-env\Scripts\activate
pip install mcp
# تأكد من نجاح الاستيراد قبل كتابة أي كود للخادم
python -c "import mcp; print('mcp ready')"أول خادم MCP لك (Python)
أنشئ ملفاً باسم server.py:
from mcp.server import Server
from mcp.server.stdio import stdio_server
from mcp.types import Tool, TextContent
# إنشاء نسخة الخادم
server = Server(name="hello-mcp")
# تعريف أداة بسيطة
@server.list_tools()
async def list_tools():
return [
Tool(
name="greet",
description="تحية شخص بالاسم",
inputSchema={
"type": "object",
"properties": {
"name": {"type": "string", "description": "الاسم للتحية"}
},
"required": ["name"]
}
)
]
@server.call_tool()
async def call_tool(name: str, arguments: dict):
if name == "greet":
return [TextContent(type="text", text=f"مرحباً، {arguments['name']}!")]
raise ValueError(f"أداة غير معروفة: {name}")
# تشغيل الخادم
async def main():
async with stdio_server() as (read, write):
await server.run(read, write)
if __name__ == "__main__":
import asyncio
asyncio.run(main())
تكوين Claude Desktop
أضف خادمك إلى ملف تكوين Claude Desktop:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"hello-mcp": {
"command": "python",
"args": ["/path/to/server.py"]
}
}
}
اختبار خادمك
- أعد تشغيل Claude Desktop
- افتح محادثة جديدة
- اسأل كلود: "استخدم أداة التحية لقول مرحباً لأليس"
- سيستدعي كلود خادم MCP الخاص بك!
حين لا يعمل الأمر
تقريباً كل إخفاق في التشغيل الأول يعود إلى أحد أربعة أسباب، ويمكن تمييزها في أقل من دقيقة. اتبع المسار:
خادمي لا يظهر في Claude Desktop
هل أغلقت Claude Desktop إغلاقاً كاملاً وأعدت فتحه بعد تعديل ملف التكوين؟
الخطأ الذي يقع فيه الجميع: في خادم يعمل عبر stdio، المخرج القياسي هو قناة البروتوكول نفسها. أي
print()شارد يحقن نصاً في مجرى JSON-RPC فينقطع الاتصال دون رسالة خطأ مفيدة. سجّل إلى ملف أو إلى مخرج الأخطاء، ولا تسجّل أبداً إلى المخرج القياسي.
التالي: بناء خادم حقيقي بأدوات وموارد. :::
سجّل الدخول للتقييم