المستوى: محترف
MCP للمحترف: ابني سيرفر Model Context Protocol إنتاجي في 60 سطر Python
الـ MCP حلّ مشكلة قديمة كانت بتاكل أسبوع شغل في كل تكامل جديد: ربط LLM بأي أداة خارجية بدون ما تكتب glue code مخصّص لكل تطبيق. في المقال ده هتبني سيرفر MCP حقيقي بيقرأ من PostgreSQL، تركّبه على Claude Desktop أو Claude Code في أقل من 10 دقايق، وتفهم القرارات الهندسية اللي مش موجودة في الـ docs.
المشكلة باختصار
قبل MCP، لو شركتك عندها 5 تطبيقات LLM (شات بوت دعم، RAG داخلي، code reviewer، Slack bot، CRM assistant)، كل تطبيق منهم بيكتب client مخصّص لـ Jira و GitHub و PostgreSQL و internal API. في شركة بـ 12 مطور و 8 أدوات داخلية، ده بيوصل لـ 96 client implementation متفرقة، كل واحد منهم بيتعطّل لما الأداة الأصلية تغيّر field واحد.
MCP بيقلب المعادلة: تكتب server واحد للأداة، وأي MCP client (Claude Desktop، Claude Code، Cline، Cursor، تطبيقك المخصّص) بيستخدمه بدون كود إضافي.
مثال بسيط قبل الشرح العلمي
تخيّل إن عندك 6 موظفين في الشركة، كل واحد بيتكلم لغة مختلفة، ومحتاجين كلهم يستخدموا 4 أدوات: طابعة، تليفون، فاكس، نظام ERP. الحل القديم: تعلّم كل موظف يستخدم كل أداة بطريقتها = 24 دورة تدريب، وكل ما أداة تتغيّر بتعيد التدريب 6 مرات.
الحل الذكي: تركّب interface موحّد (لوحة أزرار مثلًا) قدام كل أداة، والـ interface هو اللي بيترجم للأداة. الموظف الجديد بيتعلم 1 interface فقط = 4 دورات. وأي تغيير في الأداة بيتعدّل في الـ interface مرة واحدة.
MCP بالظبط كده. الـ LLM (الموظف) بيكلم MCP client بلغة موحّدة (JSON-RPC 2.0)، والـ MCP server (الـ interface) بيترجم للأداة الفعلية. عميل LLM جديد = صفر شغل إضافي.
التعريف الدقيق علميًا
MCP (Model Context Protocol) هو بروتوكول مفتوح طرحته Anthropic في نوفمبر 2024، مبني على JSON-RPC 2.0، بيعرّف 3 primitives رئيسية:
- Tools: دوال قابلة للاستدعاء بمدخلات typed عبر JSON Schema. الـ LLM بيقرر يستدعيها كجزء من tool use.
- Resources: ملفات أو endpoints قابلة للقراءة عبر URI. الـ client بيقرّر يضمّها للـ context.
- Prompts: قوالب جاهزة بمتغيرات. المستخدم بيختارها صراحةً من واجهة الـ client.
Transports المدعومة: stdio (process محلي)، SSE/HTTP (سيرفر بعيد)، و WebSocket تجريبي. اللي مش واضح في الـ docs: stdio هو الـ default للأدوات الإنتاجية لأنه isolation كامل + معدوم الـ latency، بينما SSE/HTTP للأدوات المركزية المشتركة بين فريق كامل.
بناء السيرفر خطوة بخطوة
- ثبّت SDK الرسمي:
pip install "mcp[cli]" psycopg2-binary - اعمل ملف
company_db_server.py - عرّف tools مع schema validation صريح، مش relying على inference
- سجّل السيرفر في Claude Desktop config