استضافة خادم MCP مجانًا: خيارات Vercel وCloudflare وDocker

ثلاث طرق مجانية لنشر خادم MCP على الإنترنت: Vercel Hobby و Cloudflare Workers ومنصات Docker مثل Render و Cloud Run و Hugging Face Spaces. حدود حقيقية تم التحقق منها في أكتوبر 2026، وشيفرة عاملة، وأمان الرموز، وجدول يوضح الخيار الذي ينكسر أولًا.

استضافة خادم MCP مجانًا: خيارات Vercel وCloudflare وDocker
Cristian Da Conceicao
مؤسس Picasso IA

يعمل خادم MCP الخاص بك بشكل مثالي على حاسوبك المحمول. يشغّله Claude Desktop عبر stdio، وتجيب كل أداة، ثم تطرح سؤالًا أصعب: كيف تُمكّن Cursor على جهاز آخر، أو زميلًا لك، أو موصل ChatGPT من الوصول إلى الأدوات نفسها دون دفع ثمن خادم؟ تحتاج إلى عنوان HTTPS عام، وتتمنى أن تكون الفاتورة $0.

يمكنك استضافة خادم MCP مجانًا على ثلاث منصات مختلفة جدًا: Vercel و Cloudflare Workers وأي مستضيف Docker له طبقة مجانية. يناسب كل منصة نوعًا مختلفًا من الخوادم، ولكل منها جدار ستصطدم به في النهاية. فيما يلي الأرقام الحقيقية، المتحقق منها من الوثائق الرسمية للمزودين في أكتوبر 2026، وشيفرة عاملة لكل مسار، وقائمة قصيرة بما ينكسر أولًا.

مطوّر يكتب على حاسوب محمول على طاولة مطبخ في مساء ممطر

💡 الطبقات المجانية تتغير كثيرًا. كل حد في هذه المقالة مأخوذ من الوثائق الرسمية حتى أكتوبر 2026. راجع صفحة الأسعار قبل إطلاق أي شيء للعامة.

لماذا تصبح الخوادم المحلية غير كافية

الاتصال عبر stdio مقابل HTTP البعيد

خادم stdio هو عملية فرعية. يشغّله العميل، ويتواصل معه عبر الإدخال والإخراج القياسيين، ويوقفه عند انتهاء الجلسة. لا يغادر أي شيء جهازك، ما يجعل stdio مثاليًا لقراءة الملفات المحلية وغير مفيد للمشاركة.

يستمع الخادم البعيد عند عنوان URL واحد، عادةً /mcp أو /api/mcp، ويتحدث بروتوكول Streamable HTTP. يستطيع أي عميل يملك العنوان والرمز الصحيح استدعاءه من أي مكان. ينحسر نقل HTTP+SSE القديم: أزالته mcp-handler v2 من Vercel، ووثائق Cloudflare الحالية تصف Streamable HTTP فقط على /mcp. ابنِ وفق هذا النقل ولن تواجه إعادة كتابة العام القادم.

ما الذي يجب أن توفره الاستضافة المجانية

قبل مقارنة المنصات، دوّن ما يحتاجه خادمك فعليًا:

  • عنوان HTTPS ثابت يمكنك لصقه في إعدادات العميل
  • استيقاظ سريع، لأن العميل ذا المهلة القصيرة يفشل في المصافحة إن احتاج خادمك دقيقة للإقلاع
  • تخزين آمن للأسرار للرموز التي تستخدمها أدواتك
  • وقت معالجة CPU كافٍ لكل طلب لمنطق أدواتك، لا لتشغيل نموذج
  • سجلات قابلة للقراءة لليوم الذي يفشل فيه استدعاء ولا يعرف أحد السبب

يد توصل كابل إيثرنت بحاسوب مصغّر أسود صغير بجانب موجّه أبيض

الاستضافة مشكلة شبكات قبل أن تكون مشكلة برمجة: عنوان واحد، ومنفذ مفتوح واحد، وعملية واحدة تجيب. كل خيار أدناه يحل هذه الأمور الثلاثة بطريقة مختلفة.

نظرة سريعة على المسارات المجانية الثلاثة

تشغّل Vercel و Cloudflare شيفرتك على شكل دوال بلا خادم (serverless functions): لا آلة تديرها، والفوترة حسب الاستخدام، ومجانية حتى حد معين. تشغّل منصات Docker شيفرتك على شكل حاوية: عملية كاملة بنظام ملفات خاص وبأي لغة تريدها. هذا الفرق الواحد يحسم معظم المفاضلات.

الخيارالحصة المجانيةوقت الاستيقاظالاستخدام الأمثلالمحذور الرئيسي
Vercel Hobby1M استدعاء، و4 ساعات CPU، و300 ثانية لكل استدعاءقصير، والنسخ تُعاد استخدامهافرق Next.js والنشر السريعاستخدام شخصي غير تجاري فقط
Cloudflare Workers Free100,000 طلب يوميًا، و10 ms CPU لكل طلبلا يُذكر تقريبًاالأدوات الخفيفة وكثرة الاستدعاءات10 ms CPU، و50 طلبًا فرعيًا
Render Free750 ساعة نسخة شهريًانحو دقيقة بعد 15 دقيقة خمولأي Dockerfileينام عند الخمول
Google Cloud Run2 مليون طلب، و180,000 ثانية vCPUيتوسع إلى الصفر، والاستدعاء الأول أبطأالحاويات ذات حركة المرور المتقطعةيتطلب حساب فوترة
Hugging Face SpacesCPU Basic مجاني (2 vCPU، 16 GB RAM)قد تتوقف المساحات الخاملة مؤقتًاالعروض التوضيحية العامةيُعاد ضبط القرص عند إعادة التشغيل

اقرأ الجدول صفًا صفًا، لا عمودًا عمودًا. عمود وقت الاستيقاظ يتنبأ بإحساس الخادم داخل المحادثة: تجيب Workers و Vercel خلال ميلي ثوانٍ، بينما تجعل الحاوية النائمة الاستدعاء الأول معلّقًا. عمود الحصة المجانية يتنبأ بمدة بقائك مجانًا: 100,000 طلب يوميًا تبدو هائلة حتى يدور وكيل ثرثار عبر أداة أربعين مرة في كل مهمة.

💡 جميع الخيارات الخمسة تكلّف $0 في اليوم الأول، لذا فالسعر هو المعيار الخاطئ للحسم. اختر حسب ما يفعله استدعاء أداة واحد: بحث سريع، أو حساب ثقيل، أو انتظار طويل على API آخر.

Vercel: أسرع طريق من المستودع إلى عنوان URL

إن كان مشروعك مبنيًا أصلًا على تطبيق Next.js بنمط App Router، فخادم MCP ملف إضافي واحد. تشغّله Vercel على شكل Function مع Fluid compute، الذي يفوتر وحدة CPU النشطة بشكل منفصل عن زمن الذاكرة. يناسب ذلك حركة MCP جيدًا: فترات خمول طويلة، يليها اندفاع من الاستدعاءات.

التثبيت وكتابة المسار

تحتاج Node.js 20 أو أحدث. وثائق Vercel تثبّت هذه الإصدارات:

npm i mcp-handler@2.1.1 @modelcontextprotocol/server@2 zod@4

أنشئ app/api/mcp/route.ts:

import { createMcpHandler } from 'mcp-handler';
import { z } from 'zod';

const handler = createMcpHandler((server) => {
  server.registerTool(
    'roll_dice',
    {
      description: 'Roll an N-sided die',
      inputSchema: z.object({ sides: z.number().int().min(2) }),
    },
    async ({ sides }) => {
      const value = 1 + Math.floor(Math.random() * sides);
      return { content: [{ type: 'text', text: `You rolled a ${value}` }] };
    },
  );
});

export { handler as GET, handler as POST };

ادفع الشيفرة إلى Git، واستورد المستودع في Vercel، وسيجيب الخادم على https://your-app.vercel.app/api/mcp. في Cursor يكون الإعداد سطرًا واحدًا: {"mcpServers": {"dice": {"url": "https://your-app.vercel.app/api/mcp"}}}. جرّب محليًا أولًا باستخدام npx @modelcontextprotocol/inspector@latest، واختر Streamable HTTP، ووجّهه إلى http://localhost:3000/api/mcp.

لقطة من زاوية منخفضة لمطوّر يعمل في علّية مشرقة ذات جدران من الطوب الأبيض

حدود Hobby المهمة

  • 1,000,000 استدعاء دالة شهريًا
  • 4 ساعات Active CPU و360 GB-hours من الذاكرة المخصّصة
  • 300 ثانية كحد أقصى لمدة كل دالة
  • للاستخدام الشخصي غير التجاري فقط، وفق قواعد الاستخدام العادل لدى Vercel
  • إن تجاوزت حدًا فعادةً تنتظر 30 يومًا قبل أن تعمل تلك الميزة مجددًا

الأداة التي تنتظر في معظم الوقت API آخر بالكاد تمسّ حصة 4 ساعات من CPU. أما الأداة التي تحلّل ملفات كبيرة فتستنفدها بسرعة. خطّط أيضًا حول سقف 300 ثانية: أعِد معرّف المهمة بسرعة، ودع أداة ثانية تتحقق منه، بدلًا من إبقاء استدعاء واحد مفتوحًا لدقائق.

💡 إن تلقّى العميل صفحة تسجيل دخول بدلًا من JSON، فتحقق من Deployment Protection. قد يكون Vercel Authentication مفعّلًا في مشاريع Hobby، وهو يحجب المتصلين المجهولين، بمن فيهم عميل MCP الخاص بك.

Cloudflare Workers: مجانية بسرعة الحافة

تعمل Workers داخل V8 isolates، لذا لا توجد حاوية تحتاج إلى إقلاع. يتوافق ذلك مع شكل الطلب والرد عديم الحالة لمعظم خوادم MCP، ولهذا يكون وقت الاستيقاظ قريبًا من الصفر.

الإعداد الأولي بأمر واحد

npm create cloudflare@latest -- remote-mcp-server-authless --template=cloudflare/ai/demos/remote-mcp-authless

يقدّم القالب Streamable HTTP على /mcp. توصي وثائق Cloudflare الآن باستخدام createMcpHandler للخوادم الجديدة: فهو عديم الحالة ويبني خادم MCP واحدًا لكل طلب. فئة McpAgent الأقدم موثّقة كمهجورة ومجمّدة الميزات، لذا تجنّبها لأي شيء جديد.

export default {
  fetch(request, env, ctx) {
    return createMcpHandler(createServer)(request, env, ctx);
  },
} satisfies ExportedHandler;

لفّ المعالج داخل طريقة fetch. إن صدّرت الدالة القابلة للاستدعاء مباشرة، فإن Wrangler يقرأ دالة التصدير الافتراضية كفئة WorkerEntrypoint ويتصرف النشر بشكل خاطئ.

منظر متماثل لممر بين رفوف خوادم في مركز بيانات نظيف

أرقام الخطة المجانية

  • 100,000 طلب يوميًا، يُعاد ضبطها عند منتصف الليل بتوقيت UTC، مع حد اندفاع قدره 1,000 طلب في الدقيقة
  • 10 ms من وقت CPU لكل طلب HTTP
  • 50 طلبًا فرعيًا لكل طلب
  • 128 MB من الذاكرة لكل isolate
  • حتى 100 Workers لكل حساب

الانتظار على استدعاء fetch() لا يُحتسب ضمن وقت CPU، لذا تتسع أداة تستدعي API خارجيًا وتعيد الإجابة براحة. أما التحليل الثقيل أو معالجة الصور فلا. وبعد تجاوز الحد اليومي، يعيد Cloudflare Error 1027.

المصادقة محلولة هنا أصلًا. تدعم قوالب OAuth كلًا من GitHub و Google و Slack و Auth0 و Stytch و WorkOS و Cloudflare Access، مع مساحة أسماء KV تحتفظ بالجلسات. ويمكن أن تُحفظ الحالة، إن احتجتها، في KV أو في كائنات Durable Objects المعتمدة على SQLite، وهي متاحة في الخطة المجانية.

Docker: عندما تحتاج عملية حقيقية

اختر حاوية حين يحتاج خادمك إلى مكتبات أصلية، أو ملفات محلية، أو مهمة طويلة التشغيل، أو لغة غير TypeScript. أنت تبادل الاستيقاظ الفوري بالحرية.

Dockerfile بسيط

FROM node:22-slim AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

FROM node:22-slim
WORKDIR /app
COPY package*.json ./
RUN npm ci --omit=dev
COPY --from=build /app/dist ./dist
ENV PORT=8080
EXPOSE 8080
CMD ["node", "dist/http.js"]

قاعدتان مهمتان. استمع على المنفذ الذي تمنحه إياك المنصة بقراءة PORT، واربط الخادم بالعنوان 0.0.0.0 لا بالعنوان localhost. ثم شغّل الخادم في وضع Streamable HTTP عديم الحالة، حتى يستطيع أي نسخة أن تجيب على أي طلب. المنصات التي تُصغّر إلى الصفر ستُسقط الجلسات الموجودة في الذاكرة دون إنذار.

منظر جوي لحاويات شحن ملوّنة مرصوصة في ميناء تحت ضوء ذهبي

Render و Cloud Run و Spaces

  • Render Free: 750 ساعة نسخة شهريًا لكل مساحة عمل، ونسخة واحدة، بلا قرص دائم، وبلا SSH، وبلا SMTP صادر. تنتهي صلاحية قواعد Postgres المجانية بعد 30 يومًا.
  • Google Cloud Run: توفر الطبقة المجانية الدائمة شهريًا 2 مليون طلب، و180,000 ثانية vCPU، و360,000 ثانية GiB، و1 GB من حركة الخروج لأمريكا الشمالية. تتوسع إلى الصفر افتراضيًا، لكن يجب أن تربط حساب فوترة.
  • Hugging Face Spaces: أضف sdk: docker و app_port: 7860 إلى ترويسة YAML في ملف README. تعمل الحاوية بالمستخدم 1000، وكل ما يُكتب على القرص يُفقد عند إعادة التشغيل.

البدايات الباردة تكسر المصافحات

تتوقف خدمة Render المجانية عن العمل بعد 15 دقيقة دون حركة مرور، وإيقاظها يستغرق نحو دقيقة. العميل ذو المهلة القصيرة يفشل في الطلب الأول، ثم ينجح في الثاني. هذا الخلل مزعج جدًا في تتبعه إن لم تعرف السبب.

إصبع يضغط زر التشغيل على لوحة دوائر صغيرة فوق طاولة عمل

لديك ثلاثة خيارات:

  1. اقبله وأعد المحاولة للاستدعاء الأول
  2. قسّم الخادم: ضع الأدوات الحساسة للتأخير على Workers والثقيلة في الحاوية
  3. أرسل نبضة إلى نقطة فحص الصحة كل 10 دقائق. فتبقى خدمة واحدة مستيقظة ضمن 750 ساعة (شهر من 31 يومًا فيه 744 ساعة)، لكن تحقق من قواعد المنصة قبل أن تعتمد عليه

أحكم القفل قبل مشاركة عنوان URL

عنوان MCP هو جهاز تحكم عن بعد لكل ما تستطيع أدواتك فعله. أي شخص يجده يستطيع الضغط على الأزرار، والخطط المجانية لا تملك سقف ميزانية يوقف غريبًا عن استنزاف حصتك.

أضف رمز Bearer

على Vercel، لُفّ المعالج بدالة withMcpAuth، واضبط required: true، وأعِد العميل المتحقق منه من verifyToken. تحصل الطلبات التي لا تحمل رمزًا صالحًا على 401. والرمز الذي ينقصه نطاق مطلوب يحصل على 403. يقرأ مثال الوثائق رمزًا تجريبيًا من متغير بيئة، ويقول إن الإنتاج يجب أن يتحقق من المُصدِر والجمهور وتاريخ الانتهاء والنطاقات مقابل خادم تفويض حقيقي. mcp-handler لا يُصدر الرموز بنفسه.

لتلبية مواصفة MCP، انشر أيضًا بيانات OAuth الوصفية لمورد محمي على /.well-known/oauth-protected-resource، حتى يجد العملاء المتوافقون خادم التفويض الخاص بك.

قفل نحاسي على سلسلة فولاذية مع قطرات مطر على بوابة خشبية

أبقِ الأسرار خارج المستودع

  • Vercel: متغيرات البيئة (Environment Variables) في المشروع
  • Cloudflare: npx wrangler secret put PICASSOIA_TOKEN
  • Render و Spaces: أسرار لوحة التحكم، تُقرأ كمتغيرات بيئة عند التشغيل

لا تلصق رمزًا أبدًا في وصف أداة أو في أمر نصي. العملاء يعرضون أوصاف الأدوات على النموذج، والنموذج قد يكرّرها. أضف أيضًا عدّادًا للاستدعاءات لكل رمز، لأن الحصة المجانية مشتركة بين كل المتصلين.

اختر الخيار المجاني المناسب

منظر من الأعلى لدفتر بخطوط شبكية مرسومة يدويًا بجانب فنجان قهوة

  • اختر Vercel إذا كان المشروع يعمل بالفعل على Next.js، وكانت الحركة شخصية، وتريد عنوان URL للمعاينة لكل طلب سحب.
  • اختر Cloudflare إذا أردت وقت استيقاظ شبه معدوم، وما يصل إلى 100,000 استدعاء يوميًا، وأدوات تعيد توجيه الطلبات في معظمها إلى API آخر.
  • اختر مستضيف حاويات إذا احتجت إلى ملفات ثنائية أصلية، أو ملفات على القرص، أو مهمة تستغرق وقتًا أطول من طلب سريع.

لا شيء يمنعك من الجمع بينها. الإعداد الشائع هو Worker يجيب على عمليات البحث الخفيفة ويعيد توجيه الطلبات الثقيلة إلى حاوية، فيحصل العميل دائمًا على رد أول سريع. ابدأ بأبسط منصة تناسبك، وقِس لمدة أسبوع، وانتقل فقط عندما يبدأ حد فعلًا في إعاقتك.

ما الذي ينكسر أولًا

المنصةأول جدار تصطدم بهعلامة التحذير
Vercel Hobby4 ساعات CPU، أو قاعدة الاستخدام غير التجاريميزات متوقفة، وانتظار 30 يومًا
Workers Free10 ms CPU على الأدوات الثقيلةأخطاء حد CPU عند التحليل
Render Freeتأخير الاستيقاظيفشل الاستدعاء الأول بعد فترة خمول
Cloud Runالاستخدام فوق الحصة المجانيةرسوم تظهر في الفاتورة
Spacesإعادة ضبط القرصتختفي الحالة بعد إعادة التشغيل

جرّبه مع Picasso IA

الخادم المستضاف لا يفيد إلا إذا كانت أدواته تفعل شيئًا يستحق الاستدعاء. توليد الصور أداة أولى جيدة، لأنك ترى فورًا إن كانت الحلقة كاملة تعمل.

أداة تستدعي نموذج صور

يوفّر PicassoIA واجهة API على غرار Replicate عند https://api.picassoia.com/v1. تصادق باستخدام رمز Bearer الذي يبدأ بالنص pia_sk_، ثم تنشئ تنبؤًا وتستعلم عنه بشكل متكرر. نموذج PicassoIA Image يقبل كائنًا input يتضمن prompt و aspect_ratio:

server.registerTool(
  'make_image',
  {
    description: 'Start an image generation from a text prompt',
    inputSchema: z.object({ prompt: z.string().min(10) }),
  },
  async ({ prompt }) => {
    const res = await fetch(
      'https://api.picassoia.com/v1/models/picassoia/picassoia-image/predictions',
      {
        method: 'POST',
        headers: {
          Authorization: `Bearer ${process.env.PICASSOIA_TOKEN}`,
          'Content-Type': 'application/json',
        },
        body: JSON.stringify({ input: { prompt, aspect_ratio: '16:9' } }),
      },
    );
    if (!res.ok) {
      return { isError: true, content: [{ type: 'text', text: `API error ${res.status}` }] };
    }
    const prediction = await res.json();
    return {
      content: [{ type: 'text', text: `Prediction ${prediction.id} is ${prediction.status}` }],
    };
  },
);

في Workers، اقرأ الرمز من env بدلًا من process.env. التنبؤات غير متزامنة، لذا قسّم العمل إلى أداتين: make_image يعيد معرّف التنبؤ، و check_image يستدعي GET /v1/predictions/{id} ويعيد الحالة وعناوين URL للمخرجات. الحالات هي starting، processing، succeeded، failed و canceled. كل استدعاء ينتهي خلال ميلي ثوانٍ، وهذا يتسع داخل ميزانية Workers البالغة 10 ms CPU، ولا يبقي الطلب مفتوحًا أبدًا. حد الحساب هو 5 تنبؤات في وقت واحد، مشتركة بين الرموز واتصالات MCP.

💡 تقول وثائق API إن التنبؤات مجانية حاليًا ولا تستهلك نقاطًا، وتقول أيضًا إن خطة Infinite مطلوبة لإنشائها. تحقّق من صفحة الأسعار قبل أن تبني عليها أداة عامة.

نماذج تستحق الربط

مصوّر يراجع صورًا مطبوعة معلّقة على جدار في استوديو مشرق

انشر خادم النرد الليلة، ثم افتح Picasso IA وأنجز شيئًا به. اكتب أمرًا نصيًا واحدًا، ومرّره عبر Seedream 5 Pro وNano Banana 2 Lite، وقارن النتيجتين جنبًا إلى جنب. حين تعيد أداة MCP الخاصة بك عنوان URL لصورة من خادم لا يكلّف شيئًا، تكون الحلقة كاملة تعمل، وكل أداة جديدة بعدها تستغرق دقائق. جرّب عدة أوامر نصية، وتجاوز بعض الحدود عمدًا، وانظر أي مضيف مجاني يصمد لمشروعك.

شارك هذا المقال

اختر لغتك

مقالات ذات صلة