المستوى: متوسط — يُفترض إنك شغّلت Claude API أو OpenAI قبل كده، وفاهم function calling أو tool use بشكل أساسي، ولك خبرة بـ Python.
لو فريقك بنى 12 tool integration لـ Claude في آخر 6 شهور، وكل أداة جديدة بتاخد يومين ترميز، إنت بتدفع ضعف الوقت اللي مفروض. الـ Model Context Protocol (MCP) من Anthropic بيحل المشكلة دي بـ standard مفتوح: تكتب server واحد للأداة، وأي AI client (Claude Desktop, Cursor, Cline, Continue) يستخدمه فورًا بدون كود تكامل جديد.
Model Context Protocol: ليه الـ AI tooling محتاجة بروتوكول موحد
المشكلة باختصار
قبل MCP عندك مشكلة M×N: M models (Claude, GPT-4, Llama) × N أدوات (DB, Slack, Jira, GitHub). لو حبّيت كل model يقدر يستخدم كل أداة، محتاج M×N integrations مختلفة. شركة بـ 5 models و 20 أداة = 100 integration. كل واحد منهم فيه schema مختلف، error handling مختلف، authentication مختلف.
المثال البسيط: تخيّل إنك بتسافر لـ 5 دول، ولكل دولة برّيزة كهرباء مختلفة. عندك خياران: تشتري 5 محوّلات (M×N)، أو محوّل عالمي واحد. MCP هو المحوّل العالمي. الـ host بيلبس "اللاب توب" (الموديل)، الـ server بيلبس "البريزة" (الأداة)، و MCP بيلبس بينهم.
التعريف العلمي: MCP بروتوكول مفتوح أصدرته Anthropic في نوفمبر 2024 على شكل JSON-RPC 2.0 over stdio أو HTTP+SSE. بيعرّف ثلاث entities: Host (التطبيق اللي بيشغّل الموديل)، Client (محرك الاتصال داخل الـ host)، و Server (الأداة نفسها). الاتصال بين الـ client و الـ server بيمشي بـ messages من نوع initialize، tools/list، tools/call، resources/read، و prompts/get.
السبب الجذري: schema fragmentation
قبل MCP، كل provider عمل function calling بشكل مختلف. OpenAI بيستخدم JSON Schema داخل messages.tool_calls. Claude بيستخدم input_schema في tool_use blocks. Gemini بيستخدم FunctionDeclaration بصيغة مختلفة. اللي بيكتب tool لـ Slack مثلًا، بيكرّر نفس الكود ثلاث مرات بثلاث صياغات.
MCP بيحل ده عن طريق توحيد الـ schema في طرف الأداة، وكل client يقدر يحوّله لصياغته الخاصة قبل ما يبعته للموديل. النتيجة: integration واحد يخدم Claude Desktop, Cursor, Cline, Continue, Zed, Windsurf، و Goose في نفس الوقت.
بناء MCP server في 28 سطر Python
هنبني MCP server بسيط بيدّي الموديل صلاحية يقرأ تيكتس Jira للمستخدم. الافتراض: عندك Python 3.10+، حساب Atlassian Cloud، و pip install mcp atlassian-python-api.
- أنشئ ملف
jira_server.pyبالكود اللي تحت. - سجّل الـ server في إعدادات Claude Desktop (ملف
claude_desktop_config.json). - افتح Claude Desktop، اسأل: "إيه التيكتس المفتوحة عليّ في Jira؟" — Claude هيستدعي الأداة لوحده.
- نفس الـ server هيشتغل من غير تعديل في Cursor و Cline و Continue.
from mcp.server.fastmcp import FastMCP
from atlassian import Jira
import os
mcp = FastMCP("jira-helper")
client = Jira(
url=os.environ["JIRA_URL"],
username=os.environ["JIRA_USER"],
password=os.environ["JIRA_TOKEN"],
)
@mcp.tool()
def list_my_open_tickets(limit: int = 10) -> list[dict]:
"""يرجّع آخر التيكتس المفتوحة المعينة على المستخدم الحالي."""
jql = "assignee = currentUser() AND status != Done ORDER BY updated DESC"
issues = client.jql(jql, limit=limit)["issues"]
return [
{
"key": i["key"],
"summary": i["fields"]["summary"],
"status": i["fields"]["status"]["name"],
"priority": i["fields"]["priority"]["name"],
}
for i in issues
]
if __name__ == "__main__":
mcp.run(transport="stdio")
الكود ده 28 سطر فعليًا، وبيشتغل مع أي MCP host بدون تعديل. لو كنت بتكتبه integration تقليدي لـ OpenAI Assistants و Claude API و Gemini، كان هياخد ~150 سطر لكل واحد منهم، إجمالي 450 سطر يدوي بدل 28.
أرقام واقعية من إنتاج
قسم infrastructure في شركة fintech عربية كانوا بيكتبوا 14 tool integration لـ Claude API يدويًا. متوسط الكتابة: يومين/أداة. بعد التحويل لـ MCP في الربع الأول من 2026، متوسط أداة جديدة بقى 4 ساعات، وكلها بقت تشتغل في Cursor و Claude Desktop وفي الـ backend سوا. هذه الأرقام مبنية على فرضية إن الفريق فاهم Python كويس وعنده CI جاهز — لو الـ stack بتاعك مختلف، التوفير ممكن يقل.
الـ trade-offs الحقيقية
MCP مش حل سحري، وفيه ثمن واضح:
- التكلفة 1 — latency إضافي: الـ JSON-RPC over stdio بيضيف 5-15ms لكل tool call مقارنة بـ direct integration. لو شغلك real-time trading أو gaming AI، الفرق ده مهم.
- التكلفة 2 — security surface أكبر: أي MCP server بيقدر يقرأ نص الـ tool call. لو الأداة third-party، إنت بتعرّضلها بيانات ممكن تكون حساسة. باحثو الأمن وثّقوا ثغرات في MCP servers مفتوحة المصدر بين يناير ومارس 2026، أبرزها command injection في servers بتقبل shell args بدون sanitization.
- التكلفة 3 — نضوج الـ ecosystem: SDK رسمي في Python و TypeScript فقط. Go و Rust لسه community-maintained. لو stack بتاعك Java أو .NET، هتكتب client بنفسك أو تستنى.
- المكسب الأساسي: Integration واحد يخدم 8+ AI clients معروفين (Claude Desktop, Cursor, Cline, Continue, Zed, Windsurf, Goose, Replit). لو فريقك بيستخدم اتنين منهم، بتوفّر أسبوع شغل لكل أداة جديدة.
متى لا تستخدم MCP
تجاهل MCP في الحالات دي:
- عندك tool واحد فقط، و model واحد فقط — direct integration أسرع وأبسط.
- الـ latency أهم من المرونة (high-frequency trading، voice assistant بـ < 100ms).
- الأداة بتتعامل مع PII أو بيانات مالية حساسة جدًا، ومافيش security review للـ MCP server اللي هتستخدمه.
- فريقك على stack مش مدعوم رسميًا (Java EE، .NET Framework، Elixir) — التكلفة هتفوق المكسب.
الخطوة التالية
افتح أكبر مشروع عندك أكتر من 3 tools، حدّد أسهل أداة فيه (واحدة بتقرأ بس، مفيهاش writes)، وحوّلها لـ MCP server خلال يومين. لو الفريق استخدمها في Cursor و Claude Desktop ووفّرت ساعتين أسبوعيًا على الأقل، ده signal إنك تكمّل الباقي. لو محستش بفرق ملموس، الـ M×N عندك مش كبير وكافيك direct integration.
المصادر
- Anthropic Engineering, "Introducing the Model Context Protocol", November 25, 2024 — anthropic.com/news/model-context-protocol
- MCP Specification 2025-06-18 — modelcontextprotocol.io/specification
- Python SDK (v1.2+) — github.com/modelcontextprotocol/python-sdk
- Claude Desktop MCP configuration docs — docs.anthropic.com/claude/desktop/mcp
- JSON-RPC 2.0 Specification — jsonrpc.org/specification