دليل MCP: من الصفر إلى خادم الإنتاج مع مواصفات 2026-07-28
النقاط الرئيسية
- أكثر من 97 مليون تحميل شهري لـ MCP SDK، لكن 8.5% فقط من الخوادم تستخدم OAuth — اعتماد البروتوكول يتجاوز موقفه الأمني، مما يجعل خطوات تعزيز الإنتاج في هذا الدليل غير اختيارية لأي نشر B2B.
- MCP SDK v2 قلص حجم الحزمة بنسبة 83% وحسّن السرعة بنسبة 25% — مواصفات 2026-07-28 صدرت مع SDKs معاد تصميمها لـ TypeScript وPython وGo وC#، مع أدلة ترحيل لكل منها.
- مواصفات 2026-07-28 أزالت الجلسات ومصافحة التهيئة — كل طلب الآن مستقل بذاته، يصل إلى أي مثيل خادم خلف موازن حمل round-robin عادي دون حالة مشتركة.
- خارطة طريق MCP في 22 أغسطس تحدد خمسة مجالات ذات أولوية — هوية الوكلاء، توحيد نقل HTTP، بدائل المراسلة الوكلائية، بدائل الأدوات المحسّنة، وتجربة مطوري SDK — كل منها مغطى في مسار الإنتاج في هذا الدليل.
- 82% من خوادم MCP عرضة لاجتياز المسار (وفقاً لـ Practical DevSecOps) — خطوات العزل والتحقق من المدخلات هنا هي الفرق بين عرض تجريبي ونشر إنتاجي.
تجاوز Model Context Protocol 97 مليون تحميل شهري لـ SDK في 2026، مع تجاوز SDKs الخاصة بـ TypeScript وPython لمليار تحميل إجمالي لكل منهما. أصدرت مواصفات 2026-07-28 أكبر مراجعة منذ الإطلاق: نواة بروتوكول عديمة الحالة، وامتدادات من الدرجة الأولى، وثلاث إزالات تبسيطية لسطح النشر. بعد ثلاثة أسابيع، في 22 أغسطس، نشر مشرفو MCP خارطة طريق جديدة تحدد خمسة مجالات ذات أولوية لدورة المواصفات التالية — هوية الوكلاء، توحيد نقل HTTP، بدائل المراسلة الوكلائية، بدائل الأدوات المحسّنة، وتجربة مطوري SDK.
يغطي هذا الدليل مسار الإنتاج: بناء خادم MCP عديم الحالة، قابل للتوسع أفقياً، واعٍ بالهوية، وجاهز لأولويات المؤسسات في خارطة الطريق. يأخذ الدليل السريع الرسمي المستخدم عبر خادم طقس متصل بـ Claude Desktop. يبدأ هذا المقال حيث ينتهي ذلك الدليل السريع — الخطوات بين عرض تجريبي يعمل وخادم ستضعه خلف نظام وكلاء B2B في الإنتاج.
الخطوة 1 — إعداد المشروع مع SDK v2
صدرت مواصفات 2026-07-28 مع SDKs معاد تصميمها. قلص TypeScript SDK v2 حجم الحزمة بنحو 83% وحسّن الأداء بنسبة 25% من خلال فصل جديد للعميل والخادم. يتحدث Python SDK 2.0+ وGo SDK وC# SDK v2.0 جميعاً نسخة بروتوكول 2026-07-28 اعتباراً من يوم النشر، مع ملاحظات ترحيل مفصلة للتغييرات الجذرية.
لهذا الدليل، نستخدم Python 3.10+ مع uv:
uv init mcp-server
cd mcp-server
uv venv
source .venv/bin/activate
uv add "mcp[cli]"الحزمة الإضافية mcp[cli] تجلب أدوات CLI لتشغيل وفحص الخوادم. يستخدم SDK تلميحات نوع Python وdocstrings لتوليد تعريفات الأدوات تلقائياً — تعرّف دالة، تزيّنها، وتُشتق بيانات البروتوكول الوصفية من التوقيع.
الخطوة 2 — عرّف أدواتك الأولى
يكشف خادم MCP ثلاثة أنواع من القدرات: tools (دوال يستدعيها النموذج)، وresources (بيانات يقرأها النموذج)، وprompts (تدفقات عمل قالبية). لخادم B2B، tools هي السطح الرئيسي — كيف يبحث الوكيل في كتالوج، أو يولّد عرض سعر، أو يحجز مخزون.
from mcp.server import MCPServer
mcp = MCPServer("catalog-server")
@mcp.tool()
async def search_catalog(query: str, supplier_id: str | None = None) -> str:
"""Search the supplier catalog by keyword, optionally filtered by supplier.
Args:
query: Search keyword (SKU, product name, or category)
supplier_id: Optional supplier filter (e.g., "s-12")
"""
results = await catalog.search(query=query, supplier_id=supplier_id)
return format_results(results)
@mcp.tool()
async def get_pricing(sku: str, quantity: int) -> str:
"""Get tiered pricing for a SKU at a given quantity.
Args:
sku: Supplier product identifier
quantity: Order quantity (determines pricing tier)
"""
price = await pricing_engine.get(sku=sku, quantity=quantity)
return f"SKU {sku}: ${price.unit_price:.2f} (tier: {price.tier_name})"يصبح docstring كل أداة هو الوصف الذي يراه النموذج في قائمة أدواته. تلميحات النوع تصبح مخطط الإدخال. هذا هو نمط MCP Module Code Standard: كل أداة لها مخطط مُنمّط، وdocstring واضح، ومسؤولية واحدة.
فخ تسجيل STDIO: للخوادم المعتمدة على STDIO، لا تكتب أبداً إلى stdout — فهو يفسد تدفق رسائل JSON-RPC. استخدم وحدة logging القياسية، التي تكتب إلى stderr:
import logging
logger = logging.getLogger(__name__)
logger.info("Catalog search: query=%s", query) # stderr, safeالخطوة 3 — النقل: STDIO مقابل Streamable HTTP
تجعل مواصفات 2026-07-28 خوادم MCP البعيدة "لا تختلف عن أي عبء HTTP آخر" (سجل تغييرات المواصفات). مجال الأولوية الثاني في خارطة الطريق — توحيد نقل HTTP الأصلي — يوسع هذا ليشمل الخوادم المحلية التي تتحدث Streamable HTTP عبر stdio، موحدةً على نموذج نقل واحد.
للتطوير المحلي وعملاء سطح المكتب، STDIO هو الافتراضي:
if __name__ == "__main__":
mcp.run(transport="stdio")لنشر B2B الإنتاجي — حيث يعمل الوكيل كعبء سحابي، وليس تطبيق سطح مكتب — Streamable HTTP هو نقل الإنتاج. يعمل الخادم خلف موازن حمل، يقبل طلبات HTTP POST مع ترويسات Mcp-Method وMcp-Name، ويستجيب بـ JSON-RPC عبر HTTP:
if __name__ == "__main__":
mcp.run(transport="http", host="0.0.0.0", port=8080)ميزة التوجيه المعتمد على الترويسات تعني أن بوابتك أو محدد سرعتك أو WAF يمكنه التوجيه والقياس مباشرة على ترويسات Mcp-Method وMcp-Name — لا حاجة لتحليل جسم JSON لقرارات التوجيه. هذا هو شكل النشر الذي صُمم له البروتوكول عديم الحالة: مجموعة من مثيلات الخادم عديمة الحالة خلف موازن حمل round-robin، بدون طبقة جلسة مشتركة.
الخطوة 4 — مقابض صريحة لتدفقات العمل ذات الحالة
عديم الحالة لا يعني أن الحالة تختفي. تستبدل مواصفات 2026-07-28 حالة الجلسة المخفية بـ نمط المقبض الصريح: تنشئ أداة مقبضاً (order_id، أو quote_id، أو basket_id) ويمرره النموذج كحجة عادية في الاستدعاءات اللاحقة. هذا مغطى بالتفصيل في MCP 2026-07-28: ماذا يعني البروتوكول عديم الحالة لنشر وكلاء B2B.
لتدفق عمل عرض سعر يمتد عبر خمسة استدعاءات أدوات — إنشاء طلب، بحث الكتالوج، توليد عرض سعر، حجز التوفر، تطبيق مستوى التسعير — تمر المقابض عبر كل استدعاء:
@mcp.tool()
async def create_request(buyer_id: str, line_items: list[dict]) -> str:
"""Create an RFQ request and return a request_id handle."""
request = await rfq_engine.create(buyer_id, line_items)
return f"request_id={request.id}"
@mcp.tool()
async def generate_quote(request_id: str, supplier_ids: list[str]) -> str:
"""Generate a quote from specified suppliers. Returns quote_id."""
quote = await rfq_engine.quote(request_id, supplier_ids)
return f"quote_id={quote.id}"كل استدعاء يحمل المقبض الذي يحتاجه. لا يتذكر أي خادم أي شيء بين الاستدعاءات. إذا وجّه موازن الحمل الاستدعاء 4 إلى مثيل مختلف عن الاستدعاء 3، فلا يزال يعمل — المقبض في الطلب. إذا احتاج فريق التدقيق إلى إعادة بناء تدفق العمل هذا بعد أسبوع، فإن المقابض في حجج الطلب تروي القصة الكاملة.
الخطوة 5 — هوية الوكلاء: الفجوة المؤسسية
مجال الأولوية الثالث في خارطة الطريق — هوية الوكلاء والأمن المؤسسي — هو الأكثر أهمية لنشر B2B. خارطة الطريق صريحة: تفويض MCP اليوم "مبني حول شخص يوافق على الوصول في متصفح"، لكن "المزيد والمزيد من المستدعين هم وكلاء يعملون كأحمال سحابية بهويتهم الخاصة، يتصرفون نيابة عن مستخدم غير موجود، أو يفوضون صلاحيات أضيق لوكلاء فرعيين."
المسار المستقبلي، كما تحدده خارطة الطريق:
- DPoP (RFC 9449) — Demonstrating Proof of Possession يربط رمز OAuth بمفتاح يحمله العميل. الرمز المسروق وحده لا يمكنه إعادة تشغيل الطلبات من عملية أخرى. DPoP لا يقرر ما يُسمح للوكيل بفعله؛ بل يجعل الاعتمادية أصعب في إعادة الاستخدام خارج حاملها المقصود.
- Workload Identity Federation — مجموعة عمل IETF WIMSE تطور بنية لهوية عبء العمل في بيئات متعددة الأنظمة. الوكيل هو عبء عمل، لذا يحصل على هوية عبء عمل: مسمى بـ SPIFFE ID، مصدق باعتماديات قصيرة العمر، وليس مفتاح API مشترك.
- Enterprise-Managed Authorization (EMA) — امتداد EMA ينقل قرار الوصول إلى مزود الهوية في المؤسسة. يستبدل عميل MCP تأكيد هوية المستخدم بـ Identity Assertion JWT Authorization Grant (ID-JAG)، ثم يستبدل ذلك برمز وصول خاص بالخادم. هذا يدعم التخصيص المركزي والإلغاء.
لخادم الإنتاج في هذا الدليل، الحد الأدنى الأساسي هو:
- لا مفاتيح API مشتركة. كل وكيل يحصل على رمز قصير العمر، مرتبط بجمهور.
- OAuth مع DPoP. وجد تقرير Practical DevSecOps MCP Security Statistics 2026 أن 8.5% فقط من خوادم MCP تستخدم OAuth — الـ 91.5% المتبقية تعتمد على مفاتيح API أو لا مصادقة على الإطلاق.
- تبادل الرموز عند كل حد ثقة. معيار تبادل الرموز CoSAI (المنشور في 18 أغسطس) يؤسس تبادل الرموز كتحكم أساسي لتدفقات العمل الوكلائية. كل نقطة دخول
register_tools()يجب أن تقبل رمزاً محدد النطاق بالمهمة، وليس اعتمادية دائمة.
راجع MCP Security Hardening Checklist للضوابط الـ 12 التي تتحقق من هذه المعايير قبل الإنتاج، وMCP Module Code Standard للموقف الدفاعي على مستوى الوحدة.
الخطوة 6 — الاكتشاف التدريجي للأدوات: حل مشكلة المئة أداة
مجال الأولوية الرابع في خارطة الطريق — البدائل المحسّنة — يعالج مشكلة إنتاج ملموسة: "الاتصال بخادم به مئة أداة يعني أن النموذج يدفع مقابل ذلك السطح بالكامل قبل أن يطرح المستخدم سؤالاً واحداً، ويميل اختيار الأداة إلى التدهور مع نمو القائمة."
إجابة خارطة الطريق هي الاكتشاف التدريجي: يقدم الخادم نقطة دخول صغيرة ويكشف المزيد من كتالوجه مع تضييق المحادثة. بدلاً من تفريغ 100 مخطط أداة في نافذة سياق النموذج عند الاتصال، يكشف الخادم عن حفنة من الأدوات عالية المستوى ويوسع السطح ديناميكياً بناءً على ما يفعله الوكيل.
توفر مواصفات 2026-07-28 بالفعل اللبنات الأساسية:
server/discoverRPC — يمكن للعميل تعلم قدرات الخادم قبل فعل أي شيء آخر، دون مصافحة جلسة.tools/listمعttlMsوcacheScope— استجابات القائمة تحمل تلميحات تخزين مؤقت، لذا يخزن العملاء كتالوجات الأدوات مؤقتاً ويتجنبون إعادة الجلب عند كل اتصال._metaفي كل طلب — نسخة البروتوكول، معلومات العميل، والقدرات تنتقل لكل طلب، وليس في جلسة متفاوض عليها.
لخادم به أكثر من 50 أداة، يبدو نمط الاكتشاف التدريجي كالتالي:
@mcp.tool()
async def discover_tools(category: str) -> str:
"""Discover available tools in a category. Start here for a guided tour.
Args:
category: Tool category — 'catalog', 'pricing', 'inventory', 'orders'
"""
available = tool_registry.by_category(category)
return format_tool_list(available)يستدعي الوكيل discover_tools("catalog") أولاً، يحصل على مجموعة مركزة من 5-8 أدوات، ولا يتوسع إلى فئات أخرى إلا عندما يتطلب تدفق العمل ذلك. هذا يحافظ على نافذة السياق خفيفة واختيار الأداة دقيقاً — نفس المبدأ وراء تصميم الأدوات ذات المسؤولية الواحدة في MCP Module Code Standard.
الخطوة 7 — النشر: عديم الحالة، أفقي، خلف موازن حمل
شكل النشر الذي صُممت له مواصفات 2026-07-28:
┌──────────────────┐
│ Load Balancer │
│ (round-robin) │
└────────┬─────────┘
│
┌──────────────┼──────────────┐
│ │ │
┌────────┴────┐ ┌───────┴────┐ ┌───────┴────┐
│ MCP Server │ │ MCP Server │ │ MCP Server │
│ Instance 1 │ │ Instance 2 │ │ Instance 3 │
│ (stateless) │ │ (stateless) │ │ (stateless) │
└─────────────┘ └─────────────┘ └─────────────┘
│ │ │
└──────────────┼──────────────┘
│
┌────────┴─────────┐
│ Upstream Systems │
│ (NetSuite, etc.) │
└──────────────────┘لا مخزن جلسة مشترك. لا موازن حمل مع جلسات لاصقة. لا بنية تحتية لإعادة تشغيل الجلسة. كل طلب يحمل ما يحتاجه — نسخة البروتوكول، معلومات العميل، القدرات، والمقابض — في جسم الطلب وترويساته، وليس في حالة الخادم.
لتعزيز الإنتاج:
- عزل كل مثيل خادم. يتطلب MCP Project Sandboxing Baseline (المنشور في 16 أغسطس) عزلاً على مستوى OS للعمليات المُولّدة. استخدم Landlock (Linux) أو Seatbelt (macOS) أو Windows ACLs لتقييد الوصول إلى نظام الملفات والشبكة. معدل ثغرة اجتياز المسار البالغ 82% (وفقاً لـ Practical DevSecOps) هو دليل على أن التحقق من المدخلات وحده غير كافٍ.
- تحديد سرعة كل أداة. يتطلب MCP Module Code Standard حدود سرعة لكل أداة. ثغرة DoS في MCP Ruby SDK (المكشوفة في 16 أغسطس) تؤكد أن هجمات استنزاف الموارد هي سطح هجوم حقيقي.
- التسجيل إلى OpenTelemetry، وليس قناة تسجيل MCP. أهملت مواصفات 2026-07-28 ميزة التسجيل لصالح stderr وOpenTelemetry. تتكامل سجلات خادم MCP مع خطوط المراقبة الحالية (Datadog، CloudWatch، Honeycomb) دون نقل مخصص.
- استخدم التوجيه المعتمد على الترويسات لـ WAF وتحديد السرعة. ترويسات
Mcp-MethodوMcp-Nameتتيح لبوابتك التوجيه والتفويض دون تحليل أجسام JSON.
خارطة الطريق المستقبلية: خمسة مجالات ذات أولوية
تحدد خارطة طريق 22 أغسطس الاتجاه لدورة المواصفات التالية. يغطي هذا الدليل الأجزاء الجاهزة للإنتاج؛ وتحدد خارطة الطريق ما سيأتي:
| مجال الأولوية | الحالة | تغطية الدليل |
|---|---|---|
| هوية الوكلاء والأمن المؤسسي | قيد التقدم (DPoP, WIMSE, EMA) | الخطوة 5 — تأسست الخط الأساسي؛ التنفيذ الكامل بانتظار نهائية المواصفات |
| توحيد نقل HTTP الأصلي | تم النشر (بعيد)، قيد التقدم (محلي) | الخطوة 3 — HTTP البعيد هو الإنتاج؛ Streamable HTTP المحلي عبر stdio هو هدف خارطة الطريق |
| بدائل المراسلة الوكلائية | امتدادات تُنشر (Tasks، اشتراكات) | غير مغطى — الأحداث التي يبدأها الخادم (webhooks، قنوات) هي الحدود التالية |
| البدائل المحسّنة (الاكتشاف التدريجي) | مرحلة التصميم | الخطوة 6 — النمط قابل للتنفيذ اليوم باستخدام discover_tools؛ دعم مستوى المواصفات قادم |
| تجربة مطوري SDK المحسّنة | تم النشر (SDK v2، اختبارات المطابقة) | الخطوة 1 — SDK v2 هو الخط الأساسي للإنتاج الحالي |
خارطة الطريق هي اتجاه، وليست وعد توافق. سلمت مواصفات 28 يوليو بالفعل نواة HTTP عديمة الحالة وامتداد Tasks. الأحداث الدفعية، الاكتشاف الموحد، التفويض، ومطابقة SDKs المشتركة لا تزال بحاجة إلى عمل تنفيذي. لنشر B2B، أولوية هوية الوكلاء هي ما يجب مراقبته — فهي تعالج الفجوة بالضبط (مفاتيح API والرموز طويلة العمر) التي أشارت إليها مقالات أمان MCP وقائمة التحقق من الحوكمة.
يغطي مسار الإنتاج في الدليل قائمة فحص الإنتاج من خمس خطوات:
قراءة ذات صلة
- MCP 2026-07-28: ماذا يعني البروتوكول عديم الحالة لنشر وكلاء B2B — التحليل المرافق الذي يغطي البروتوكول عديم الحالة، ونمط المقبض الصريح، والإزالات بعمق
- MCP Module Code Standard — النمط الهيكلي الذي يجعل كل وحدة جاهزة للإنتاج: هيكل الدليل، تسجيل الأدوات، معالجة الأخطاء، حدود السرعة، وتسجيل التدقيق
- MCP Security Hardening Checklist: 1,467 خادم مكشوف والضوابط التي تغلقها — الضوابط الـ 12 التي تتحقق من خادم قبل الإنتاج، تعالج فجوات اجتياز المسار بنسبة 82% وOAuth بنسبة 8.5%
قصة بناء
أراد موزع متوسط الحجم يستخدم NetSuite منح فريق المبيعات مساعد ذكاء اصطناعي يمكنه البحث في كتالوجات الموردين، وتوليد عروض الأسعار، والتحقق من مستويات المخزون دون مغادرة CRM. استخدمت المحاولة الأولى مفتاح API مشتركاً واحداً عبر جميع مثيلات الوكيل — الـ 91.5% من خوادم MCP التي تتخطى OAuth. كشف تحديث قائمة أسعار المورد عن المفتاح في ملف سجل، وقضى الفريق يومين في تدوير الاعتماديات عبر 15 خدمة.
اتبع إعادة البناء مسار الإنتاج في هذا الدليل: SDK v2 مع مخططات أدوات مُنمّطة، نقل Streamable HTTP خلف موازن حمل round-robin، رموز OAuth مرتبطة بـ DPoP بصلاحية 15 دقيقة، مقابض صريحة لتدفق عمل عرض السعر من خمس خطوات، وعزل على مستوى OS لكل مثيل خادم. يتصل الوكيل بـ NetSuite عبر وحدة MCP تتبع معيار الكود، مع اكتشاف تدريجي يكشف 8 أدوات كتالوج أولاً ولا يتوسع إلى التسعير والمخزون إلا عندما يتطلب تدفق العمل ذلك. ستة مثيلات خادم تعمل عديمة الحالة خلف موازن الحمل. لا مخزن جلسة مشترك. لا جلسات لاصقة. كل طلب يحمل مقبضه، ورمزه، وإصدار بروتوكوله.
اطلب بناءً محدد النطاق
اكتشاف أسبوع واحد. تحصل على جرد نظام، وخريطة تدفق عمل، ونطاق ثابت — سواء بنيت معنا أم لا.
هل تريد هذا مبنياً لأنظمتك؟
كل وثيقة هنا من عمل إنتاجي حقيقي. إذا كان لديك نظام مُستهدَف وسير عمل في الذهن، نستطيع تحديد نطاق بناء في أسبوع واحد.
اطلب بناءً محدد النطاقاكتشاف مدته أسبوع واحد. تحصل على جرد للأنظمة وخريطة لسير العمل ونطاق ثابت — سواء بنيت معنا أم لا.