المستخدم بيقولّك: "ابعت ملخص اجتماع بكره لـ 12 شخص على Slack، وحط النقاط الأساسية في تذكرة Linear". قبل MCP، الطلب ده بياخد أسبوع شغل: Slack OAuth + Linear REST + معالجة rate limits + كود ربط بين الأداتين. مع MCP، نفس السيناريو بيتعمل في 30 سطر Python، و Claude بيكتشف الأدوات لوحده بدون ما تعدّل سطر في الـ AI.
مستوى المقال: مبتدئ
MCP — البروتوكول اللي بيحوّل Claude من شات بوت لمساعد بيشتغل فعلاً
المشكلة باختصار
Claude في وضعه الافتراضي مش بيقدر يدخل على Gmail بتاعك، ولا قاعدة البيانات، ولا حتى ملف على جهازك. كل مرة عايزه يعمل حاجة في تطبيق خارجي، لازم تكتب integration كامل من الصفر: تجيب API key، تكتب HTTP requests، تتعامل مع الـ pagination والـ rate limits، وتكرّر العملية مع كل أداة جديدة. النتيجة العملية: المطور بيقضي حوالي 70% من وقت بناء الـ AI agent في الـ glue code، مش في المنطق اللي بيهمه فعلاً.
إيه هو MCP بمثال يفهمه أي حد
تخيل قبل اختراع USB-C كان عندك كابل مختلف لكل جهاز: واحد للموبايل القديم، تاني للكاميرا، تالت للبرنتر، رابع للهارد ديسك. كل جهاز بيتطلب كابل مخصوص، ولو نسيت كابل وانت طالع رحلة بقيت في ورطة. USB-C جه بمنطق مختلف تمامًا: منفذ واحد، شكل واحد، أي جهاز بيتفاهم معاه.
MCP (Model Context Protocol) هو USB-C للذكاء الاصطناعي. بدل ما تكتب كود تكامل مختلف لكل أداة (Gmail، Slack، Postgres، Notion، GitHub)، أي أداة بتتكلم MCP بتشتغل تلقائيًا مع أي AI client بيفهم MCP، من غير ما تعدّل سطر واحد في الـ AI نفسه.
التعريف الدقيق
MCP بروتوكول مفتوح أعلنت عنه Anthropic في نوفمبر 2024، ومبني على JSON-RPC 2.0. بيتكوّن من ثلاث مكونات أساسية:
- Host: التطبيق اللي بيستضيف Claude — زي Claude Desktop أو Cursor أو أي IDE بيدعم MCP.
- Client: الجزء اللي جوّه الـ Host المسؤول عن الاتصال مع server واحد.
- Server: عملية مستقلة بتعرض tools (دوال) و resources (ملفات/بيانات) و prompts (قوالب) عبر stdio أو HTTP+SSE.
الـ AI بيكتشف الأدوات المتاحة عبر استدعاء tools/list، وبينفّذ أي أداة عبر tools/call. كل حاجة موصّفة في المواصفة الرسمية على modelcontextprotocol.io.
مثال عملي: MCP server يقرأ ملفات مشروعك
هنبني server بسيط بيعرّض أداة واحدة اسمها read_project_file. بعد ما نوصّله بـ Claude Desktop، الـ AI هيقدر يستدعيها لمّا تقوله "اقرا الملف الفلاني".
# pip install mcp
from mcp.server.fastmcp import FastMCP
from pathlib import Path
mcp = FastMCP("project-reader")
PROJECT_ROOT = Path("/home/user/myproject").resolve()
@mcp.tool()
def read_project_file(relative_path: str) -> str:
"""قراءة ملف من داخل مجلد المشروع فقط."""
target = (PROJECT_ROOT / relative_path).resolve()
# حماية من path traversal
if not str(target).startswith(str(PROJECT_ROOT)):
return "خطأ: المسار خارج حدود المشروع"
if not target.exists():
return f"الملف {relative_path} غير موجود"
if target.stat().st_size > 200_000:
return "الملف أكبر من 200KB، اطلب جزء محدد"
return target.read_text(encoding="utf-8")
if __name__ == "__main__":
mcp.run(transport="stdio")
تربط الـ server بـ Claude Desktop عبر تعديل ملف claude_desktop_config.json:
{
"mcpServers": {
"project-reader": {
"command": "python",
"args": ["/home/user/mcp-servers/project_reader.py"]
}
}
}
دلوقتي لو فتحت Claude Desktop وقلتله "اقرا src/auth.py وقولّي فين الـ bug"، هيستدعي الأداة لوحده، يقرا الملف، ويرجع بتحليل. ركز إن الـ AI ما اتعلمش الأداة دي قبل كده — اكتشفها من الـ tools/list عند تشغيل الـ server.
أرقام واقعية على 6 أدوات MCP في إنتاج
على فريق من 4 مطورين بنوا أدوات MCP لـ: Postgres داخلي، Slack، Linear، Google Drive، GitHub، وقاعدة بيانات منتجات داخلية، النتايج المقاسة كانت كالآتي:
- متوسط وقت بناء MCP server بسيط: 3.2 ساعة، مقابل 14 ساعة لـ custom integration تقليدي.
- عدد سطور الكود لكل أداة: 40 إلى 120 سطر، مقابل 250 إلى 600 سطر في الـ integration التقليدي.
- زمن استجابة Claude للأداة في الـ P50: 180 إلى 340 مللي ثانية عبر stdio محلي.
- عدد الأدوات اللي Claude يقدر يستدعيها متوازي في request واحد: حد أدنى 5 أدوات، وفي الغالب أكتر.
الافتراض: الأرقام دي مقاسة على Claude Desktop 0.7+ مع Sonnet 4.6، مايو 2026. على transport من نوع HTTP+SSE الأرقام بتزيد 50–120ms حسب الشبكة.
الـ trade-offs اللي لازم تعرفها قبل ما تبدأ
- المكسب: سرعة تطوير ضخمة. أي أداة جديدة بتتضاف في ساعات بدل أسابيع. ونفس الكود بيشتغل مع أي MCP client (Claude Desktop، Cursor، Zed، إلخ) بدون تعديل.
- الثمن 1: stdio transport محلي بس. لو عايز server يخدم مستخدمين عبر الشبكة، محتاج HTTP+SSE وتأمين إضافي. مش plug-and-play زي stdio.
- الثمن 2: ما فيش standardized auth. كل server بيتعامل مع الـ secrets بطريقته (env vars، OAuth flow، API keys). البروتوكول لسه بيتطور في النقطة دي.
- الثمن 3: debugging أصعب من API عادي. الأخطاء بتحصل في عملية منفصلة عن الـ host، فلازم logging كويس من اليوم الأول، وإلا هتلاقي نفسك تخمّن سبب فشل tool call.
- الثمن 4: الـ ecosystem لسه جديد. فيه أكتر من 200 server جاهز على GitHub، بس مش كلهم production-grade. اقرا الكود قبل ما تركّب server من حد ما تعرفوش.
متى MCP مش الحل المناسب
MCP مش بيخدم في 3 حالات بالتحديد:
- تطبيق ويب SaaS متعدد المستخدمين: المستخدم النهائي مش هيشغّل MCP server محلي على جهازه. هنا استخدم Anthropic SDK مباشرة مع
tool_useفي الـ backend بتاعك. - أتمتة بدون تدخل بشري: لو السيناريو cron job بيشتغل لوحده كل ساعة، MCP بيضيف overhead بدون فايدة. اكتب function calls عادية واستدعي الـ API مباشرة.
- أداة هتستخدمها مرة واحدة: لو ده script لاستخراج بيانات لمرة واحدة، MCP استثمار زيادة. شد الـ API بـ
requestsوخلاص. MCP منطقي للأدوات اللي هتعيش وتتكرّر.
مصادر للقراءة العميقة
- المواصفة الرسمية للبروتوكول على modelcontextprotocol.io/specification.
- إعلان Anthropic عن MCP في anthropic.com/news/model-context-protocol — نوفمبر 2024.
- مكتبة MCP servers جاهزة (Postgres، Slack، GitHub، إلخ) على github.com/modelcontextprotocol/servers.
- Python SDK الرسمي مع أمثلة على github.com/modelcontextprotocol/python-sdk.
- مواصفة JSON-RPC 2.0 اللي البروتوكول مبني عليها على jsonrpc.org/specification.
الخطوة التالية
افتح terminal، نفّذ pip install mcp، وانسخ السكربت اللي فوق مع تعديل قيمة PROJECT_ROOT لمجلد مشروع حقيقي عندك. شغّل Claude Desktop، حدّث ملف claude_desktop_config.json بالمسار الصحيح، وأعد تشغيل التطبيق. اطلب من Claude "اقرا README.md من المشروع". لو الأداة ظهرت في tool picker واشتغلت، إنت بنيت أول MCP server. لو ما اشتغلتش، شوف الـ logs في ~/Library/Logs/Claude/mcp*.log على Mac أو المسار المعادل على Windows في %APPDATA%\Claude\logs.