Back to Blog
TutorialFeb 18, 202616 min read

Where to Host MCP Servers for Free: Cloudflare, Vercel, and More (2026)

NT

Nikhil Tiwari

MCP Playground

TL;DR

  • Cloudflare Workers — best free option for TypeScript/JS servers, generous free tier, global edge
  • Vercel Functions — ideal for Next.js teams, free Hobby tier, instant rollback
  • FastMCP Cloud (Prefect Horizon) — one-command deploy for Python FastMCP servers
  • mcphosting.io — zero-config free hosting with GitHub integration
  • All platforms use StreamableHTTP transport — the standard for remote MCP

You've built an MCP server. It works locally with Claude Desktop or Cursor over stdio. Now you want it accessible over the network — for your team, your agents, or the public. The first question: where do I host this, and can I do it for free?

The answer is yes. In 2026, there are several platforms offering free MCP server hosting with production-grade infrastructure. This guide compares every option, with step-by-step deployment instructions for each.

What You Need to Know First

Before choosing a platform, understand the key requirements for remote MCP hosting:

StreamableHTTP Transport

Remote MCP requires HTTP, not stdio. Your server must expose a /mcp endpoint that handles POST requests and optional SSE streaming.

Stateless by Default

Serverless platforms don't persist state between requests. Design your tools to be stateless, or use an external store like Redis for sessions.

HTTPS Required

All MCP clients expect HTTPS for remote connections. Every platform in this guide provides automatic TLS certificates.

Cold Starts

Serverless functions sleep when idle. First request after inactivity may take 1-3 seconds. Keep this in mind for latency-sensitive tools.

Platform Comparison at a Glance

Platform Language Free Tier Deploy Method Best For
Cloudflare Workers TypeScript / JS 100K req/day CLI (wrangler) Edge performance, global scale
Vercel Functions TS / JS / Python Hobby tier (100 GB-hrs) Git push / CLI Next.js teams, preview deploys
FastMCP Cloud Python (FastMCP) Free personal tier fastmcp deploy Python developers, one-command deploy
mcphosting.io Python / Node.js Totally free GitHub integration Zero-config, beginners
Railway / Render Any $5 credit / 750 hrs Git push / Docker Long-running servers, WebSockets
AWS Lambda Any 1M req/month free SAM / CDK / CLI Enterprise, existing AWS infra

Option 1: Cloudflare Workers

Cloudflare Workers run at the edge across 300+ data centers worldwide. The free tier gives you 100,000 requests per day — more than enough for most MCP servers.

WHY CLOUDFLARE

Fastest cold starts (~0ms with Workers), global edge deployment, generous free tier, and Cloudflare provides an official MCP server template.

Step 1: Create the project

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

Step 2: Define your tools

Open src/index.ts and add your tools using the MCP SDK:

import { McpAgent } from "agents/mcp";
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";

export class MyMCP extends McpAgent {
  server = new McpServer({ name: "my-server", version: "1.0.0" });

  async init() {
    this.server.tool("get_weather", "Get weather for a city",
      { city: { type: "string", description: "City name" } },
      async ({ city }) => ({
        content: [{ type: "text",
          text: `Weather in ${city}: 22°C, sunny` }],
      })
    );
  }
}

Step 3: Deploy

npx wrangler deploy

Your server is now live at https://my-mcp-server.your-subdomain.workers.dev/mcp. Connect it from any MCP client.

Step 4: Test it

Paste the URL into MCP Playground to verify your tools, prompts, and resources are working.

Option 2: Vercel Functions

Vercel is ideal if you're already in the Next.js ecosystem. Their free Hobby tier includes serverless functions with automatic scaling.

Step 1: Install the MCP handler

npm install @vercel/mcp-adapter @modelcontextprotocol/sdk

Step 2: Create the route

Create app/api/mcp/route.ts (or api/mcp.ts for Pages Router):

import { createMcpHandler } from "@vercel/mcp-adapter";
import { z } from "zod";

const handler = createMcpHandler(
  (server) => {
    server.tool(
      "get_weather",
      "Get current weather for a city",
      { city: z.string().describe("City name") },
      async ({ city }) => ({
        content: [{ type: "text",
          text: `Weather in ${city}: 22°C, sunny` }],
      })
    );
  },
  { name: "my-vercel-mcp", version: "1.0.0" },
  { basePath: "/api/mcp" }
);

export { handler as GET, handler as POST, handler as DELETE };

Step 3: Deploy

vercel --prod

Server URL: https://your-project.vercel.app/api/mcp

WATCH OUT

If you have Vercel Deployment Protection enabled, MCP clients will get blocked. Disable it for the /api/mcp route or use the production URL instead of preview URLs.

Option 3: FastMCP Cloud (Prefect Horizon)

If your server is built with Python's FastMCP framework, this is the fastest path to deployment — literally one command.

Step 1: Install FastMCP

pip install fastmcp

Step 2: Write your server

from fastmcp import FastMCP

mcp = FastMCP("my-server")

@mcp.tool
def get_weather(city: str) -> str:
    """Get current weather for a city."""
    return f"Weather in {city}: 22°C, sunny"

Step 3: Deploy

fastmcp deploy server.py

Your server is live at https://my-server.fastmcp.app/mcp. The free personal tier includes built-in OAuth, monitoring, and automatic CI/CD from your Git repo.

Option 4: mcphosting.io

The simplest option — connect your GitHub repo and it auto-deploys. Supports both Python and Node.js servers with zero configuration.

How it works

  1. Sign in with GitHub at mcphosting.io
  2. Select your repository containing the MCP server
  3. It auto-detects the entry point and installs dependencies
  4. Your server gets a public URL with HTTPS

Updates are automatic — push to your repo and the server redeploys. The free tier is generous enough for development and light production use.

Option 5: Railway or Render (Long-Running Servers)

If your MCP server needs persistent connections, WebSocket support, or runs background tasks, a container platform is better than serverless.

Railway

# In your project root with a Dockerfile
railway up

Railway gives $5 of free credit per month. Your server runs 24/7 with no cold starts. Best for servers that maintain state or need persistent database connections.

Render

Render offers 750 free hours per month for web services. Connect your GitHub repo, set the start command, and deploy. Free tier servers spin down after 15 minutes of inactivity.

Option 6: AWS Lambda (Enterprise)

AWS Lambda's free tier gives you 1 million requests per month. It's the best option if you're already on AWS or need fine-grained control.

# Using AWS SAM
sam init --runtime python3.12
# Add your MCP server code + Lambda Web Adapter
sam build && sam deploy --guided

LAMBDA TIP

Use RESPONSE_STREAM mode with Lambda Web Adapter for SSE streaming. Set function timeout to 15 minutes for long-running tool executions.

How to Choose

Use this decision tree:

Is your server Python + FastMCP? → FastMCP Cloud

Is your server TypeScript? → Cloudflare Workers

Already using Vercel / Next.js? → Vercel Functions

Want zero config? → mcphosting.io

Need persistent connections? → Railway or Render

Enterprise / existing AWS? → AWS Lambda

After Deployment: Verify Your Server

Once deployed, always verify your server is working correctly:

  1. Test with MCP Playground — paste your server URL into MCP Playground and check that tools, prompts, and resources load correctly
  2. Check the protocol logs — use the Logs panel in MCP Playground to inspect the raw JSON-RPC messages
  3. Test from a real client — configure your server URL in Claude Desktop, Cursor, or VS Code to verify end-to-end connectivity
  4. Monitor cold starts — run a few requests after a period of inactivity to measure startup latency

Test Your Hosted MCP Server

Paste your deployed server URL into MCP Playground to verify everything works

Open MCP Playground →

Related Content

Frequently Asked Questions

Can I host an MCP server for free permanently?
Yes. Cloudflare Workers (100K requests/day), mcphosting.io, and FastMCP Cloud's personal tier are free indefinitely, not trial periods. For most MCP servers handling moderate traffic, you'll never hit the limits.
Do I need to change my server code for remote hosting?
If your server currently uses stdio transport (the default for local development), you'll need to switch to StreamableHTTP transport. With FastMCP, add transport="streamable-http" to your run command. With the TypeScript SDK, use the HTTP server adapter instead of stdio.
What about authentication for my hosted server?
For public servers, you can skip auth. For private servers, add API key validation via an X-API-Key header, or implement OAuth 2.1 with PKCE (the MCP spec standard). Cloudflare, Vercel, and FastMCP Cloud all support environment variables for storing secrets.
Will serverless cold starts cause MCP connection timeouts?
Usually not. Most MCP clients have generous timeouts (30-60 seconds). Cloudflare Workers have near-zero cold starts. Vercel and Lambda cold starts are typically 1-3 seconds. If latency is critical, use a container platform like Railway instead.
Can I deploy the same server to multiple platforms?
Yes — the core MCP server logic is platform-agnostic. You'll only need to change the entry point/adapter layer for each platform. Many developers deploy to Cloudflare for production and use local stdio for development.
NT

Written by Nikhil Tiwari

15+ years in product development. AI enthusiast building developer tools that make complex technologies accessible to everyone.