Vercel, Cloudflare और Docker विकल्पों के साथ MCP सर्वर मुफ़्त में होस्ट करें
MCP सर्वर को ऑनलाइन लाने के तीन मुफ़्त तरीके: Vercel Hobby, Cloudflare Workers और Render, Cloud Run तथा Hugging Face Spaces जैसे Docker होस्ट। अक्टूबर 2026 में जाँची गई असली लिमिट, वर्किंग कोड, टोकन सुरक्षा और एक टेबल, जिसमें दिखता है कि कौन-सा विकल्प सबसे पहले टूटता है।
आपका MCP सर्वर आपके लैपटॉप पर बिल्कुल सही चलता है। Claude Desktop उसे stdio के ज़रिए शुरू करता है, हर टूल जवाब देता है, और फिर आप एक कठिन सवाल पूछते हैं: सर्वर के लिए पैसे दिए बिना, किसी दूसरी मशीन पर Cursor, किसी टीममेट, या ChatGPT कनेक्टर को उन्हीं टूल्स तक कैसे पहुँचाया जाए? इसके लिए आपको एक सार्वजनिक HTTPS URL चाहिए, और आप चाहेंगे कि बिल $0 दिखे।
आप तीन बहुत अलग प्लेटफ़ॉर्म पर MCP सर्वर मुफ़्त में होस्ट कर सकते हैं: Vercel, Cloudflare Workers और कोई भी Docker होस्ट जिसमें फ्री टियर हो। हर एक अलग तरह के सर्वर के लिए ठीक बैठता है, और हर एक में एक ऐसी दीवार है जिससे आप आख़िरकार टकराएँगे। नीचे आपको असली आँकड़े मिलेंगे, जो अक्टूबर 2026 में विक्रेताओं के अपने डॉक्स से मिलाए गए हैं, हर रास्ते के लिए वर्किंग कोड, और उस छोटी सूची के साथ कि सबसे पहले क्या टूटता है।
💡 फ्री टियर अक्सर बदलते हैं। इस लेख की हर लिमिट अक्टूबर 2026 तक के आधिकारिक डॉक्स से ली गई है। कुछ भी सार्वजनिक रूप से लॉन्च करने से पहले प्राइसिंग पेज दोबारा देख लें।
लोकल सर्वर क्यों काफ़ी नहीं रहते
Stdio बनाम रिमोट HTTP
stdio सर्वर एक चाइल्ड प्रोसेस होता है। क्लाइंट उसे शुरू करता है, standard input और output के ज़रिए बात करता है, और सेशन ख़त्म होने पर उसे बंद कर देता है। कुछ भी आपकी मशीन से बाहर नहीं जाता, इसलिए stdio लोकल फ़ाइलें पढ़ने के लिए बेहतरीन है, पर साझा करने के लिए बेकार।
एक रिमोट सर्वर एक URL पर सुनता है, आमतौर पर /mcp या /api/mcp, और Streamable HTTP बोलता है। जिस किसी क्लाइंट के पास पता और सही टोकन है, वह कहीं से भी उसे कॉल कर सकता है। पुराना HTTP+SSE ट्रांसपोर्ट अब धीरे-धीरे ख़त्म हो रहा है: Vercel के mcp-handler v2 ने इसे हटा दिया है, और Cloudflare के मौजूदा डॉक्स में /mcp पर सिर्फ़ Streamable HTTP का ज़िक्र है। अगर आप इसी ट्रांसपोर्ट के लिए बनाते हैं, तो अगले साल दोबारा लिखने की नौबत नहीं आएगी।
एक फ्री होस्ट को क्या देना होगा
प्लेटफ़ॉर्म की तुलना से पहले लिख लें कि आपके सर्वर को असल में क्या चाहिए:
एक स्थिर HTTPS URL जिसे आप क्लाइंट कॉन्फ़िग में चिपका सकें
तेज़ वेक-अप, क्योंकि अगर सर्वर को बूट होने में एक मिनट लगता है और क्लाइंट का टाइमआउट छोटा है, तो हैंडशेक फ़ेल हो जाता है
सीक्रेट स्टोरेज उन टोकन के लिए जिन्हें आपके टूल इस्तेमाल करते हैं
हर रिक्वेस्ट के लिए पर्याप्त CPU समय आपके टूल लॉजिक के लिए, किसी मॉडल को चलाने के लिए नहीं
पढ़ने लायक लॉग उस दिन के लिए जब कोई कॉल फ़ेल हो और किसी को वजह न पता हो
होस्टिंग कोड की समस्या से पहले एक नेटवर्किंग समस्या है: एक पता, एक खुला पोर्ट, एक प्रोसेस जो जवाब दे। नीचे के हर विकल्प ये तीनों चीज़ें अलग तरीके से हल करता है।
तीन फ्री रास्ते एक नज़र में
Vercel और Cloudflare आपके कोड को serverless functions की तरह चलाते हैं: कोई मशीन संभालनी नहीं पड़ती, इस्तेमाल के हिसाब से बिलिंग होती है, और एक सीमा तक मुफ़्त है। Docker होस्ट आपके कोड को एक container की तरह चलाते हैं: अपने फ़ाइल सिस्टम वाली पूरी प्रोसेस, और आप कोई भी भाषा चुन सकते हैं। ज़्यादातर ट्रेड-ऑफ़ इसी एक फ़र्क से तय होते हैं।
विकल्प
फ्री एलाउंस
वेक-अप
सबसे अच्छा किसके लिए
मुख्य कमी
Vercel Hobby
1M इनवोकेशन, 4 CPU घंटे, प्रति कॉल 300 s
छोटा, इंस्टेंस दोबारा इस्तेमाल होते हैं
Next.js टीमें, तेज़ डिप्लॉय
केवल व्यक्तिगत, गैर-व्यावसायिक इस्तेमाल
Cloudflare Workers Free
प्रतिदिन 100,000 requests, हर एक के लिए 10 ms CPU
नगण्य
हल्के टूल, बहुत सारी कॉल
10 ms CPU, 50 subrequests
Render Free
प्रतिमाह 750 इंस्टेंस घंटे
15 मिनट निष्क्रिय रहने के बाद लगभग 1 मिनट
कोई भी Dockerfile
निष्क्रिय होने पर सो जाता है
Google Cloud Run
2M requests, 180,000 vCPU सेकंड
शून्य तक स्केल होता है, पहली कॉल धीमी
बर्स्टी ट्रैफ़िक वाले containers
बिलिंग अकाउंट चाहिए
Hugging Face Spaces
फ्री CPU Basic (2 vCPU, 16 GB RAM)
निष्क्रिय Spaces रुक सकते हैं
सार्वजनिक डेमो
रीस्टार्ट पर डिस्क रीसेट होती है
टेबल को कॉलम से नहीं, पंक्तियों से पढ़ें। वेक-अप वाला कॉलम बताता है कि चैट के अंदर सर्वर कैसा महसूस होगा: Workers और Vercel मिलीसेकंड में जवाब देते हैं, जबकि सोया हुआ container पहली टूल कॉल को अटका देता है। फ्री एलाउंस वाला कॉलम बताता है कि आप कितने समय तक मुफ़्त रहेंगे: प्रतिदिन 100,000 requests बहुत बड़ी लगती हैं, जब तक कोई बातूनी एजेंट एक टास्क में किसी टूल के चालीस चक्कर न लगा दे।
💡 पाँचों विकल्प पहले दिन $0 लगते हैं, इसलिए फ़ैसला करने के लिए कीमत गलत आधार है। चुनाव इस आधार पर करें कि एक टूल कॉल क्या करती है: तेज़ लुकअप, भारी गणना, या किसी दूसरे API का लंबा इंतज़ार।
Vercel: रिपो से URL तक सबसे तेज़ रास्ता
अगर आपका प्रोजेक्ट पहले से Next.js App Router ऐप में है, तो MCP सर्वर बस एक अतिरिक्त फ़ाइल है। Vercel इसे Fluid compute के साथ Function की तरह चलाता है, जो सक्रिय 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 पर push करें, 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 function invocations
4 Active CPU hours और प्रोविज़न्ड मेमोरी के 360 GB-hours
प्रति function अधिकतम 300 seconds की अवधि
Vercel के fair use नियमों के अनुसार, सिर्फ़ गैर-वाणिज्यिक, निजी उपयोग
किसी लिमिट से आगे जाने पर आमतौर पर वह फ़ीचर फिर से काम करने से पहले 30 दिन का इंतज़ार करना पड़ता है
जो टूल ज़्यादातर किसी दूसरे API का इंतज़ार करता है, वह 4 घंटे के CPU एलाउंस को मुश्किल से छूता है। जो टूल बड़ी फ़ाइलें पार्स करता है, वह उसे तेज़ी से ख़र्च कर देता है। 300 सेकंड की सीमा का भी ध्यान रखें: जल्दी से एक job ID लौटाएँ और दूसरे टूल से उसकी स्थिति जाँचवाएँ, बजाय इसके कि एक कॉल को मिनटों तक खुला रखा जाए।
💡 अगर क्लाइंट JSON की जगह लॉगिन पेज पाता है, तो Deployment Protection जाँचें। Hobby प्रोजेक्ट में Vercel Authentication चालू हो सकता है, और वह अनाम कॉल करने वालों को रोकता है, जिसमें आपका MCP क्लाइंट भी शामिल है।
Cloudflare Workers: एज स्पीड के साथ मुफ़्त
Workers V8 isolates के अंदर चलते हैं, इसलिए वहाँ कोई container बूट करने की ज़रूरत नहीं होती। यह ज़्यादातर MCP सर्वरों के stateless रिक्वेस्ट और रिस्पॉन्स ढाँचे से मेल खाता है, और इसी वजह से वेक-अप समय लगभग शून्य है।
टेम्पलेट /mcp पर Streamable HTTP सर्व करता है। Cloudflare के डॉक्स अब नए सर्वरों के लिए createMcpHandler की सलाह देते हैं: यह stateless है और हर रिक्वेस्ट के लिए एक MCP सर्वर बनाता है। पुरानी McpAgent क्लास को deprecated और feature-frozen बताया गया है, इसलिए नई चीज़ के लिए उसे छोड़ दें।
हैंडलर को fetch मेथड के अंदर रैप करें। अगर आप callable को सीधे एक्सपोर्ट करते हैं, तो Wrangler फ़ंक्शन वाले डिफ़ॉल्ट एक्सपोर्ट को WorkerEntrypoint क्लास समझ लेता है और डिप्लॉय ठीक से काम नहीं करता।
फ्री प्लान के आँकड़े
रोज़ाना 100,000 रिक्वेस्ट, जो आधी रात UTC पर रीसेट होती हैं, और बर्स्ट की सीमा 1,000 रिक्वेस्ट प्रति मिनट है
हर HTTP रिक्वेस्ट पर 10 ms CPU टाइम
हर रिक्वेस्ट पर 50 सबरिक्वेस्ट
हर आइसोलेट के लिए 128 MB मेमोरी
हर अकाउंट में अधिकतम 100 Workers
किसी fetch() कॉल के इंतज़ार का समय CPU time में नहीं गिना जाता, इसलिए जो टूल किसी बाहरी API को कॉल करके जवाब लौटाता है, वह आराम से फ़िट हो जाता है। भारी पार्सिंग या इमेज प्रोसेसिंग इसमें आराम से फ़िट नहीं होती। रोज़ाना की सीमा पार होने पर Cloudflare Error 1027 लौटाता है।
यहाँ ऑथ की समस्या पहले से हल हो चुकी है। OAuth टेम्पलेट GitHub, Google, Slack, Auth0, Stytch, WorkOS और Cloudflare Access को सपोर्ट करते हैं, और सेशन रखने के लिए एक KV namespace होता है। अगर आपको स्टेट चाहिए, तो वह KV में या SQLite-backed Durable Objects में रह सकता है, जो फ्री प्लान पर उपलब्ध हैं।
Docker: जब आपको एक असली प्रोसेस चाहिए
जब आपके सर्वर को native libraries, लोकल फ़ाइलों, किसी लंबे चलने वाले job, या TypeScript के अलावा किसी भाषा की ज़रूरत हो, तब container चुनें। आप तुरंत वेक-अप की सुविधा छोड़कर आज़ादी पाते हैं।
एक न्यूनतम 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 से bind करें, localhost से नहीं। फिर सर्वर को stateless Streamable HTTP मोड में चलाएँ, ताकि कोई भी इंस्टेंस किसी भी रिक्वेस्ट का जवाब दे सके। जो होस्ट शून्य तक स्केल होते हैं, वे बिना चेतावनी के in-memory सेशन गिरा देंगे।
Render, Cloud Run और Spaces
Render Free: हर वर्कस्पेस के लिए हर महीने 750 इंस्टेंस घंटे, सिर्फ़ एक इंस्टेंस, कोई परसिस्टेंट डिस्क नहीं, कोई SSH नहीं और कोई आउटबाउंड SMTP नहीं। फ्री Postgres डेटाबेस 30 दिन बाद एक्सपायर हो जाते हैं।
Google Cloud Run: हमेशा-फ्री टियर में हर महीने 2 मिलियन रिक्वेस्ट, 180,000 vCPU-सेकंड, 360,000 GiB-सेकंड और 1 GB नॉर्थ अमेरिका egress मिलता है। यह डिफ़ॉल्ट रूप से ज़ीरो तक स्केल हो जाता है, लेकिन आपको बिलिंग अकाउंट जोड़ना ज़रूरी है।
Hugging Face Spaces: अपनी README के YAML हेडर में sdk: docker और app_port: 7860 जोड़ें। कंटेनर यूज़र 1000 के रूप में चलता है और डिस्क पर लिखा गया कोई भी डेटा रीस्टार्ट पर मिट जाता है।
Cold starts हैंडशेक तोड़ते हैं
Render का फ्री सर्विस 15 मिनट बिना ट्रैफ़िक के बीतने पर बंद हो जाता है, और उसे जगाने में लगभग एक मिनट लगता है। छोटे टाइमआउट वाला क्लाइंट पहली रिक्वेस्ट फ़ेल करता है, फिर दूसरी पर काम करता है। अगर आपको वजह पता न हो, तो यह बग ढूँढना बहुत तकलीफ़देह है।
आपके पास तीन विकल्प हैं:
स्वीकार करें और पहली कॉल दोबारा करें
सर्वर को बाँटें: जिन टूल्स में लेटेंसी ज़्यादा मायने रखती है उन्हें Workers पर रखें और भारी टूल्स को container में
हर 10 मिनट में एक health endpoint को पिंग करें। इससे एक सर्विस 750 घंटों की सीमा के भीतर जागी रहती है (31 दिन के महीने में 744 घंटे होते हैं), लेकिन इस पर भरोसा करने से पहले होस्ट के नियम जाँच लें
URL साझा करने से पहले उसे लॉक करें
MCP URL आपके टूल्स के लिए एक रिमोट कंट्रोल है। उसे जो भी मिलेगा, वह बटन दबा सकता है, और फ्री टियर में ऐसी कोई बजट सीमा नहीं होती जो किसी अजनबी को आपका कोटा जलाने से रोके।
Bearer token जोड़ें
Vercel पर हैंडलर को withMcpAuth से लपेटें, required: true सेट करें, और verifyToken से सत्यापित क्लाइंट लौटाएँ। बिना वैध टोकन की रिक्वेस्ट को 401 मिलता है। जिस टोकन में ज़रूरी scope न हो, उसे 403 मिलता है। डॉक्स का उदाहरण एनवायरनमेंट वेरिएबल से एक डेमो टोकन पढ़ता है, और कहता है कि प्रोडक्शन में issuer, audience, expiration और scopes को असली authorization server से मिलाना चाहिए। mcp-handler खुद टोकन जारी नहीं करता।
MCP स्पेक के अनुसार चलने के लिए /.well-known/oauth-protected-resource पर OAuth प्रोटेक्टेड रिसोर्स मेटाडेटा भी प्रकाशित करें, ताकि अनुरूप क्लाइंट आपके ऑथराइज़ेशन सर्वर को ढूँढ सकें।
सीक्रेट्स को रेपो से बाहर रखें
Vercel: प्रोजेक्ट के Environment Variables
Cloudflare:npx wrangler secret put PICASSOIA_TOKEN
Render और Spaces: डैशबोर्ड सीक्रेट्स, जो रनटाइम पर environment variables के रूप में पढ़े जाते हैं
टोकन को कभी किसी टूल डिस्क्रिप्शन या प्रॉम्प्ट में न डालें। क्लाइंट टूल डिस्क्रिप्शन मॉडल को दिखाते हैं, और मॉडल उन्हें दोहरा सकता है। हर टोकन के लिए कॉल काउंटर भी जोड़ें, क्योंकि फ्री कोटा हर कॉल करने वाले के बीच साझा होता है।
सही फ्री विकल्प चुनें
Vercel चुनें अगर प्रोजेक्ट पहले से Next.js पर है, ट्रैफ़िक निजी है, और आपको हर pull request के लिए preview URL चाहिए।
Cloudflare चुनें अगर आपको लगभग शून्य वेक-अप, प्रतिदिन 100,000 कॉल तक, और ऐसे टूल्स चाहिए जो ज़्यादातर रिक्वेस्ट दूसरे APIs को भेजते हैं।
Container होस्ट चुनें अगर आपको native binaries, डिस्क पर फ़ाइलें, या कोई ऐसा job चाहिए जो एक त्वरित रिक्वेस्ट से लंबा चले।
इन्हें मिलाने से कोई नहीं रोकता। एक आम सेटअप है एक Worker जो सस्ते लुकअप का जवाब देता है और भारी रिक्वेस्ट को container पर भेजता है, ताकि क्लाइंट को हमेशा तेज़ पहला जवाब मिले। जो सबसे सरल प्लेटफ़ॉर्म फ़िट बैठे, उससे शुरू करें, एक हफ़्ते तक माप लें, और तभी आगे बढ़ें जब कोई लिमिट सच में चुभने लगे।
सबसे पहले क्या टूटता है
प्लेटफ़ॉर्म
पहली दीवार जिससे आप टकराते हैं
चेतावनी का संकेत
Vercel Hobby
4 CPU hours, या गैर-वाणिज्यिक नियम
फ़ीचर बंद हो जाते हैं, 30 दिन का इंतज़ार
Workers Free
भारी टूल्स पर 10 ms CPU
पार्सिंग पर CPU limit errors
Render Free
वेक-अप में देरी
निष्क्रिय समय के बाद पहली कॉल फ़ेल
Cloud Run
फ्री एलाउंस से ज़्यादा उपयोग
इनवॉइस पर शुल्क
Spaces
डिस्क रीसेट
रीस्टार्ट के बाद स्टेट गायब
Picasso IA के साथ आज़माएँ
होस्ट किया गया सर्वर तभी काम का है जब उसके टूल्स कुछ ऐसा करें जिसे कॉल करना सार्थक हो। इमेज जनरेशन एक अच्छा पहला टूल है, क्योंकि आप एक नज़र में देख सकते हैं कि पूरा लूप काम करता है या नहीं।
एक टूल जो इमेज मॉडल को कॉल करता है
PicassoIA https://api.picassoia.com/v1 पर Replicate-style API देता है। आप pia_sk_ से शुरू होने वाले Bearer टोकन से पहचान सत्यापित करते हैं, एक prediction बनाते हैं, और फिर उसे पोल करते हैं। PicassoIA Image मॉडल एक input object लेता है, जिसमें एक prompt और एक aspect_ratio होता है:
Workers पर process.env के बजाय env से टोकन पढ़ें। Predictions असिंक्रोनस होते हैं, इसलिए काम को दो टूल्स में बाँटें: make_image prediction ID लौटाता है, और check_imageGET /v1/predictions/{id} को कॉल करके स्टेटस और output URLs लौटाता है। स्टेटस starting, processing, succeeded, failed और canceled हैं। हर कॉल मिलीसेकंड में पूरी होती है, जो Workers के 10 ms CPU बजट में फ़िट बैठती है और रिक्वेस्ट को कभी खुला नहीं रखती। अकाउंट की लिमिट है एक साथ 5 predictions, जो सभी टोकन और MCP कनेक्शनों में साझा होती है।
💡 API डॉक्स कहते हैं कि predictions अभी मुफ़्त हैं और इनमें क्रेडिट नहीं लगते, और वे यह भी कहते हैं कि इन्हें बनाने के लिए Infinite plan चाहिए। इस पर कोई सार्वजनिक टूल बनाने से पहले प्राइसिंग पेज जाँच लें।
आज रात dice सर्वर डिप्लॉय करें, फिर Picasso IA खोलें और उससे कुछ बनाएँ। एक प्रॉम्प्ट लिखें, उसे Seedream 5 Pro और Nano Banana 2 Lite पर चलाएँ, और दोनों नतीजों की साथ-साथ तुलना करें। जब आपका अपना MCP टूल किसी ऐसे सर्वर से इमेज URL लौटाएगा जिसकी कोई लागत नहीं है, तब पूरा लूप काम कर रहा होगा, और उसके बाद हर नया टूल मिनटों में बन जाएगा। कुछ प्रॉम्प्ट आज़माएँ, कुछ लिमिट जान-बूझकर तोड़कर देखें, और पता करें कि आपके प्रोजेक्ट के लिए कौन-सा फ्री होस्ट टिकता है।