الـ Model Context Protocol (MCP) بيخلّي Claude يقرا من Notion، يكتب في GitHub، ويستعلم من Postgres بدون ما تكتب integration مخصص لكل أداة. 30 سطر بايثون بيوفروا أسبوع شغل كامل.
المستوى المطلوب: متوسط — تحتاج تعرف بايثون أساسي، فاهم async/await، واستخدمت Claude API على الأقل مرة واحدة. لو لسه ما جرّبتش الـ API، ابدأ بمقال "RAG للمبتدئين" قبل ما تكمل هنا.
Model Context Protocol: ليه ظهر أصلاً
المشكلة باختصار
قبل نوفمبر 2024، لو عايز Claude يقرا من Notion ويكتب في Linear ويستعلم من Postgres، كنت محتاج تكتب 3 integrations منفصلة. كل واحد فيه: REST client، طبقة auth، تحويل schema، error handling. الحساب التقريبي: 200 إلى 400 سطر بايثون لكل أداة.
المشكلة الأكبر مش الكود. المشكلة إن لو غيّرت من Claude لـ GPT-4، الكود ده كله بيتعاد كتابة من الأول لأن كل LLM ليه format مختلف للـ tool calling. ده اللي MCP اتعمل عشانه: بروتوكول واحد، أي LLM يدعمه يقدر يكلّم أي أداة تدعمه.
تخيّل الموضوع كده لو لسه في الأول
تخيّل عندك لاب توب فيه فتحة USB-C واحدة بس. أي حاجة تيجي توصّلها — كيبورد، شاشة، شاحن، هارد خارجي — كل أداة جايبة كابلها الخاص بشكل مختلف. كل مرة شركة تطلع منتج جديد، انت محتاج adapter جديد عشان يدخل في اللاب توب.
ده كان حال LLMs قبل MCP. لكل أداة كنت محتاج "adapter" مخصص. MCP بقى زي معيار USB-C نفسه: شكل واحد، أي حاجة بتدعمه بتشتغل من غير ما تفكّر في التفاصيل تحت. الأهم: المعيار مفتوح، فأي شركة (مش بس Anthropic) تقدر تبني عليه.
التعريف الدقيق لـ MCP
MCP بروتوكول مفتوح من Anthropic، أُعلن عنه نوفمبر 2024، بيستخدم JSON-RPC 2.0 فوق نقل من اتنين: stdio (للسيرفرات اللي بتشتغل محليًا) أو HTTP/SSE (للبعيد). فيه طرفين: MCP Server بيقدّم القدرات، و MCP Client (زي Claude Desktop أو Claude Code) بيستهلكها.
السيرفر بيعرض 3 أنواع primitives:
- Tools: دوال قابلة للاستدعاء بـ inputSchema بصيغة JSON Schema. الموديل بيقرر يستدعيها امتى.
- Resources: بيانات للقراءة بـ URI ثابت (مثلاً
file:///logs/today.log). - Prompts: قوالب prompt جاهزة المستخدم بيختارها بنفسه من الـ UI.
مثال تنفيذي: MCP server بيقرا من Postgres
الكود ده سيرفر MCP كامل بيستقبل استعلام عن المستخدمين من Claude Desktop. ثبّت pip install mcp asyncpg الأول.