لماذا تستضيف خادم MCP الخاص بك
تُدخل خدمات MCP المستضافة لدى طرف ثالث تبعيةً خارجية: تمر بياناتك ومحادثاتك وسياقاتك عبر بنية تحتية لا تتحكم فيها. على VPS، يعمل خادم MCP داخل شبكتك بقواعد وصولك وسلسلة الثقة الخاصة بك. هذا نفس منطق الاستضافة الذاتية لمستودع Git أو سجل Docker: الاستقلالية تسبق الراحة.
ما تكسبه من الاستضافة الذاتية
- سرية البيانات: لا يغادر أي سياق بنيتك التحتية.
- لا توجد رحلة ذهاب وإياب لطرف ثالث: يعمل خادم MCP وتطبيقك على الشبكة ذاتها أو على VPS مجاورة.
- تخصيص كامل: أدوات داخلية وموصلات خاصة وبيئة تشغيل مصممة حسب الطلب.
- تكلفة قابلة للتنبؤ: اشتراك VPS ثابت بدون فوترة لكل طلب.
- التحكم في الإصدارات: أنت من يحدد موعد تحديث الخادم وتبعياته.
المتطلبات الأساسية قبل البدء
تحتاج إلى VPS مع وصول root، وتوزيعة Linux حديثة (يُنصح بـ Ubuntu 22.04 LTS أو Debian 12)، وNode.js 18+ أو Python 3.11+ حسب التنفيذ المختار، واسم نطاق يشير إلى عنوان IP الخادم. خطة بـ 1 vCPU و2 GB RAM كافية لخادم MCP متوسط الاستخدام. للأحمال الثقيلة أو خوادم MCP متعددة بالتوازي، خطط لـ 2 vCPU و4 GB.
نشر خادم MCP في 10 خطوات
تحديث النظام وتثبيت Node.js
اتصل بـ SSH باستخدام مفتاحك ونفذ الأمر:
apt update && apt upgrade -y. ثبّت Node.js من المستودع الرسمي NodeSource:curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && apt install -y nodejs. تحقق باستخدامnode -vوnpm -v.إنشاء مستخدم مخصص
لا تشغّل خادم MCP أبداً بصلاحية root. أنشئ مستخدماً خاصاً بالتطبيق:
useradd -m -s /bin/bash mcp && su - mcp. تُنفَّذ جميع الأوامر التالية تحت هذا المستخدم.تثبيت خادم MCP
اختر التنفيذ المناسب (راجع قسم «خوادم MCP مفتوحة المصدر الموصى بها» أدناه). لتثبيت
@modelcontextprotocol/server-filesystem:npm install -g @modelcontextprotocol/server-filesystem. اختبر محلياً:npx @modelcontextprotocol/server-filesystem /tmp/test.إنشاء ملف خدمة systemd
أنشئ
/etc/systemd/system/mcp-server.serviceمع التوجيهات التالية:User=mcp،ExecStart=/usr/bin/npx @modelcontextprotocol/server-filesystem /home/mcp/data،Restart=always، وEnvironment=NODE_ENV=production. فعّل وابدأ:systemctl enable --now mcp-server.تثبيت nginx
يعمل nginx كـ reverse proxy أمام خادم MCP الخاص بك.
apt install -y nginx. أنشئ ملف vhost في/etc/nginx/sites-available/mcpمع قسمlocation /يحتوي علىproxy_pass http://127.0.0.1:3000;. فعّل:ln -s /etc/nginx/sites-available/mcp /etc/nginx/sites-enabled/ && nginx -t && systemctl reload nginx.الحصول على شهادة TLS باستخدام Certbot
apt install -y certbot python3-certbot-nginx && certbot --nginx -d your-domain.com. يعدّل Certbot تلقائياً ملف vhost الخاص بـ nginx لإعادة التوجيه من HTTP إلى HTTPS ويضبط التجديد التلقائي. تحقق من التجديد:certbot renew --dry-run.تفعيل مصادقة Bearer
عدّل ملف vhost الخاص بـ nginx لطلب رمز في رأس HTTP:
if ($http_authorization != 'Bearer YOUR_SECRET_TOKEN') { return 401; }. أنشئ رمزاً قوياً:openssl rand -hex 32. احتفظ بهذا الرمز لأنه سيُستخدم في إعداد عميل AI الخاص بك.إعداد جدار الحماية
أغلق جميع المنافذ باستثناء 22 و80 و443:
ufw allow 22/tcp && ufw allow 80/tcp && ufw allow 443/tcp && ufw enable. يجب عدم كشف المنفذ الداخلي لخادم MCP (3000 افتراضياً) مباشرة.اختبار نقطة النهاية باستخدام curl
curl -H 'Authorization: Bearer YOUR_SECRET_TOKEN' https://your-domain.com/health. يجب أن تحصل على JSON للحالة. الاستجابة 401 تشير إلى رمز غير صحيح؛ الاستجابة 502 تشير إلى أن خدمة systemd لا تعمل.تفعيل سجلات وصول nginx
أضف إلى ملف vhost:
access_log /var/log/nginx/mcp_access.log; error_log /var/log/nginx/mcp_error.log warn;. هذه السجلات ضرورية لاكتشاف الاتصالات غير المصرح بها.
فعّل دائماً سجلات وصول nginx لخادمك
يتلقى خادم MCP اتصالات من آلة إلى آلة: بدون سجلات، لن تتمكن من اكتشاف محاولات الوصول غير المصرح بها أو أخطاء التكامل.
خوادم MCP مفتوحة المصدر الموصى بها
-
@modelcontextprotocol/server-filesystem — وصول محكوم إلى نظام الملفات. مثالي لمنح الوكيل وصولاً إلى دليل عمل. -
@modelcontextprotocol/server-git — استنساخ وسجل وفروق والتزامات عبر مستودع محلي. -
@modelcontextprotocol/server-fetch — تفويض طلبات HTTP الصادرة إلى خادم MCP. -
@modelcontextprotocol/server-postgres — اتصال بقاعدة بيانات PostgreSQL: استعلامات SELECT والمخطط. -
@modelcontextprotocol/server-playwright — التحكم في متصفح Chromium بدون واجهة رسومية من الوكيل. -
mcp-server-sqlite (مجتمعي) — بديل خفيف لقواعد بيانات SQLite المحلية. -
mcp-obsidian (مجتمعي) — الوصول إلى قاعدة معرفة Obsidian بصيغة Markdown.
تأمين خادم MCP في بيئة الإنتاج
خادم MCP المكشوف على الإنترنت هو سطح هجوم. أربعة إجراءات غير قابلة للتفاوض قبل ربط عميل AI بهذا الخادم في الإنتاج.
مصادقة Bearer token. أدخل رمزاً فريداً لكل عميل في رأس Authorization. أبطل الرمز المخترق فوراً وأنشئ رمزاً جديداً باستخدام openssl rand -hex 32.
تحديد معدل الطلبات في nginx. أضف في ملف vhost: limit_req_zone $binary_remote_addr zone=mcp:10m rate=30r/m; limit_req zone=mcp burst=10 nodelay;.
HTTPS إلزامي وHSTS. بعد تثبيت Certbot، أضف في كتلة HTTPS server: add_header Strict-Transport-Security "max-age=31536000" always;.
تدوير الرموز. جدول تدويراً كل 90 يوماً عبر cron أو أداة إدارة الأسرار.
ربط Claude Desktop و Cursor بخادم MCP
بمجرد أن يكون الخادم متصلاً بالإنترنت ومؤمناً، يستغرق الاتصال من عميل AI أقل من دقيقتين.
Claude Desktop. افتح ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) أو %APPDATA%\Claude\claude_desktop_config.json (Windows). أضف إدخالاً في مفتاح mcpServers:
{
"mcpServers": {
"my-vps": {
"url": "https://your-domain.com",
"headers": {
"Authorization": "Bearer YOUR_SECRET_TOKEN"
}
}
}
}أعد تشغيل Claude Desktop. يظهر الخادم في قائمة الأدوات المتاحة.
Cursor. في الإعدادات (Cursor > Settings > MCP)، انقر على «إضافة خادم»، اختر نوع HTTP، أدخل عنوان URL وأضف رأس Authorization.
MCP مقابل REST API مقابل WebSocket لوكلاء الذكاء الاصطناعي
مرّر الجدول أفقيًا
| المعيار | MCP | REST API | WebSocket |
|---|---|---|---|
| نموذج التواصل | استدعاءات أدوات مكتوبة، اكتشاف ديناميكي للمخطط | طلب/استجابة HTTP عديمة الحالة، عقد OpenAPI | قناة ثنائية الاتجاه مستمرة، أحداث في الوقت الفعلي |
| التكامل الأصلي مع LLM | أصلي: Claude وCursor وCline وContinue تقرأ مخطط MCP مباشرة | يتطلب غلافاً لـ function-calling أو مكوناً إضافياً | يتطلب محولاً على جانب الوكيل |
| تعقيد النشر | منخفض: عملية Node/Python واحدة، vhost nginx واحد | منخفض إلى متوسط: إطار REST قياسي | متوسط إلى مرتفع: إدارة الاتصالات وإعادة الاتصال والحالة |
| مناسب لـ | الأدوات المحلية والوصول للملفات وقواعد البيانات وأتمتة الوكيل | تكاملات الطرف الثالث والـ webhooks والميكروسيرفيسز الموجودة | إشعارات Push والتعاون الفوري والبث |
| الإصدار والتطور | المخطط معلن في الخادم، يكتشفه العميل تلقائياً | إصدار صريح في URL أو الرأس | بروتوكول تطبيق يُدار يدوياً |
استكشاف الأخطاء: 4 أخطاء شائعة
1. MCP transport error: Failed to fetch
يظهر هذا الخطأ في Claude Desktop أو Cursor عندما لا يستطيع العميل الوصول إلى عنوان URL المُعد. الأسباب الشائعة: خدمة systemd لا تعمل، أو nginx لم يُعاد تحميله، أو جدار الحماية يحجب المنفذ 443.
2. Connection refused on 127.0.0.1:3000
خادم MCP لم يبدأ أو توقف عند الإقلاع. راجع سجلات systemd: journalctl -u mcp-server -n 50.
3. Request timed out after 30000ms
الخادم يستجيب ولكن ببطء شديد. تحقق من حجم الدليل أو امتلاء القرص (df -h). زد مهلة nginx كملاذ أخير: proxy_read_timeout 120s;.
4. 401 Unauthorized بشكل منتظم
الرمز المُرسل من العميل لا يطابق الرمز المتوقع في nginx. تحقق من دقة الرمز في إعداد العميل.
نحو بيئة ذكاء اصطناعي متكاملة على VPS
خادم MCP مكوّن واحد من مكونات عديدة في بيئة ذكاء اصطناعي ذاتية الاستضافة. على نفس VPS، يمكنك تشغيل نموذج محلي عبر Ollama، وقاعدة بيانات متجهية مثل Qdrant أو Chroma، ومنسق مثل n8n أو Flowise. تقدم ServOrbit قوالب VPS جاهزة لهذه البيئات على بنية تحتية في مراكز بيانات أوروبية مع IPv4 مخصصة ووصول root.