المستوى: متوسط. المقال بيفترض إنك تعرف أساسيات الـ LLM واستدعاء الـ API. لو لسه مبتدئ تمامًا، في أمثلة مبسّطة جوه المقال هتمشّيك خطوة بخطوة.
بروتوكول MCP: اربط الذكاء الاصطناعي بأدواتك عبر معيار واحد
لو بتكتب كود تكامل مخصص كل مرة عشان تخلّي نموذج الذكاء الاصطناعي يقرا من قاعدة بياناتك أو ينفّذ إجراء في نظامك، انت بتضاعف الشغل بلا داعي. بروتوكول MCP بيحوّل الربط ده لمعيار واحد، فبدل ما تبني تكامل لكل زوج (نموذج، أداة)، بتبني السيرفر مرة وتستخدمه من أي عميل.
المشكلة باختصار
عندك أكتر من تطبيق AI (شات بوت، مساعد داخلي، إضافة في الـ IDE)، وعندك أكتر من مصدر بيانات (GitHub، Postgres، Slack). كل ما تربط تطبيق بأداة، بتكتب تكامل جديد. النتيجة: عدد التكاملات بيكبر بمعادلة الضرب M×N، وكل واحد فيهم كود لازم تصونه.
يعني إيه MCP بالظبط؟
خلينا نبدأ بمثال بسيط. افتكر أيام ما كان كل جهاز ليه شاحن بشكل مختلف: كابل للموبايل، وكابل تاني للكاميرا، وتالت للّابتوب. كل جهاز جديد = كابل جديد في الدرج. جه كابل USB-C ووحّد الموضوع: منفذ واحد يوصّل أي حاجة بأي حاجة.
MCP هو USB-C بتاع الذكاء الاصطناعي. بدل ما كل تطبيق AI يتكلم مع كل أداة بطريقتها الخاصة، الكل بيتكلم بنفس اللغة المعيارية.
بالتعريف الدقيق: Model Context Protocol هو بروتوكول مفتوح، أطلقته Anthropic في نوفمبر 2024، بيوحّد طريقة توصيل تطبيقات الـ LLM بالأدوات ومصادر البيانات الخارجية. الاتصال بيتم عبر JSON-RPC 2.0 بين طرفين: عميل داخل التطبيق (MCP Client) وخادم بيعرض القدرات (MCP Server).
الفرق في الأرقام واضح: لو عندك 4 تطبيقات و5 أدوات، الطريقة القديمة محتاجة 4×5 = 20 تكامل. مع MCP بتبني 4 عملاء + 5 خوادم = 9 قطع بس، وكل قطعة قابلة لإعادة الاستخدام.
المكوّنات الثلاثة اللي لازم تعرفها
كل MCP Server بيقدر يعرض 3 أنواع من القدرات. خليني أشرحها بمثال الموظف الجديد الأول: تخيّل موظف عندك، ممكن (1) ينفّذ مهمة لما تطلب، (2) يرجعلك ملف تقرأه، (3) يستخدم قالب رسالة جاهز. دول بالظبط الأنواع التلاتة:
- Tools (أدوات): إجراءات قابلة للتنفيذ يطلبها النموذج، زي "هات حالة الطلب رقم كذا" أو "افتح تذكرة". النموذج بيقرر ينده الأداة، السيرفر بينفّذها.
- Resources (موارد): بيانات للقراءة فقط، زي محتوى ملف أو صف من جدول، بيتحقن في سياق النموذج.
- Prompts (قوالب): قوالب جاهزة قابلة لإعادة الاستخدام بيختارها المستخدم أو التطبيق.
مثال تنفيذي: أبسط MCP Server
ده سيرفر فيه أداة واحدة بترجّع حالة الطلب من قاعدة بيانات حقيقية، بالـ Python SDK الرسمي:
# server.py
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("orders")
@mcp.tool()
def get_order_status(order_id):
row = db.query("SELECT status FROM orders WHERE id = %s", order_id)
return row["status"] if row else "not found"
if __name__ == "__main__":
mcp.run()
وعشان تربطه بعميل زي Claude Desktop، بتضيف الإعداد ده وخلاص:
{
"mcpServers": {
"orders": { "command": "python", "args": ["server.py"] }
}
}
دلوقتي أي سؤال زي "حالة الطلب 5123 إيه؟" النموذج هيقرر ينده get_order_status بدل ما يخمّن رقم من دماغه.
ليه الموضوع بقى مهم دلوقتي؟
MCP مبقاش تجربة. في مارس 2025 OpenAI تبنّته رسميًا في الـ Agents SDK وتطبيق ChatGPT، وبكده بقى معيار مشترك بين اللاعبين الكبار مش حكر على Anthropic. وبحلول ديسمبر 2025 وصلت تنزيلات SDK الخاصة به لأكتر من 97 مليون تنزيل شهريًا عبر كل اللغات، واتبرّعت Anthropic بالمشروع لمؤسسة تحت مظلة Linux Foundation. يعني الرهان على المعيار ده بقى أأمن من بناء تكاملاتك الخاصة من الصفر.
الـ trade-offs: بتكسب إيه وبتخسر إيه
الـ trade-off هنا مباشر. بتكسب توحيد وإعادة استخدام حقيقية: تبني السيرفر مرة، تستخدمه من أي عميل يدعم MCP. بتخسر حاجتين: طبقة تجريد زيادة (أوفرهيد بسيط في الإعداد والصيانة)، والأهم سطح هجوم أمني جديد. لما تدّي النموذج القدرة يستدعي أدوات، بقى في احتمالية prompt injection عبر بيانات داخلة من برّه. في أبريل 2025 نشر باحثون تحليل لأسطح الهجوم دي، وفي يونيو 2025 اتصلحت ثغرة تنفيذ كود عن بُعد حرجة (CVE-2025-49596) في أداة MCP Inspector.
الافتراض اللي المقال مبني عليه: إنك بتوصّل أكتر من عميل أو أكتر من أداة، أو محتاج تشارك السيرفرات بين فرق. لو ده مش وضعك، المكسب بيقل.
متى لا تستخدم MCP
لو عندك تطبيق واحد بيتكلم مع أداة واحدة ثابتة مش هتتغير، الاتصال المباشر أبسط وأسرع، والـ MCP هيبقى تعقيد بلا عائد. وكمان لو أنت في مسار حسّاس للـ latency لأقصى درجة، الطبقة الزيادة ممكن متبقاش مستحقة. ابدأ بيه لما يبقى عندك تعدد فعلي في العملاء أو الأدوات.
الخطوة التالية
نزّل الـ SDK الرسمي (pip install mcp)، اكتب أداة واحدة بس زي مثال get_order_status فوق، اربطها بـ Claude Desktop عن طريق ملف الإعداد، واسأل النموذج سؤال بيحتاج الأداة دي. لو النموذج نداها بدل ما خمّن الإجابة، يبقى السيرفر شغّال صح.
المصادر
- مواصفة البروتوكول الرسمية (إصدار 2025-11-25): modelcontextprotocol.io/specification/2025-11-25
- إعلان Anthropic الأصلي للبروتوكول: anthropic.com/news/model-context-protocol
- ملخص أول سنة من MCP وإصدار نوفمبر 2025: blog.modelcontextprotocol.io
- تحديثات مواصفة 2025-06-18: forgecode.dev/blog/mcp-spec-updates
- نظرة عامة وتبنّي OpenAI والأرقام: en.wikipedia.org/wiki/Model_Context_Protocol