Deploy your own MCP server
From a local stdio prototype to a public HTTPS endpoint your team can install in seconds. Every step uses real, free tools.
Scaffold a server with the official SDK.
Run locally, hit it from Claude Code.
Ship to Vercel, Cloudflare, or Fly.
Open a PR — your server lands on this site.
Build it
Pick your runtime, scaffold in 30 seconds.
Anthropic ships official SDKs for TypeScript and Python. Pick one and scaffold a fresh project.
# 1. New project
mkdir my-mcp && cd my-mcp
npm init -y
# 2. Install the SDK
npm install @modelcontextprotocol/sdk zod
npm install -D typescript tsx @types/nodeimport { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";
const server = new McpServer({
name: "my-mcp",
version: "0.1.0",
});
server.tool(
"echo",
"Echoes a message back to the caller.",
{ message: z.string().describe("The message to echo") },
async ({ message }) => ({
content: [{ type: "text", text: `echo: ${message}` }],
}),
);
const transport = new StdioServerTransport();
await server.connect(transport);Test locally
Hook it into Claude Code in one command.
The fastest feedback loop: register your local server with Claude Code and watch the tools show up.
# TypeScript
claude mcp add my-mcp -- npx tsx src/index.ts
# Python
claude mcp add my-mcp -- uv run python server.py
# Verify it loaded
claude mcp listnpx @modelcontextprotocol/inspector npx tsx src/index.ts to debug requests and responses interactively in a browser UI.Deploy
Public HTTPS endpoint in under 5 minutes.
Three battle-tested paths. All free at a startup-scale tier. Pick the one that matches the runtime you used in step 1.
Best for TypeScript servers using the streamable-HTTP transport. Zero config — push the repo, Vercel detects it.
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamable-http.js";
const server = new McpServer({ name: "my-mcp", version: "0.1.0" });
// ... register tools, resources, prompts
const transport = new StreamableHTTPServerTransport({ sessionIdGenerator: undefined });
await server.connect(transport);
export async function POST(req: Request) {
return transport.handleRequest(req);
}npm i -g vercel
vercel --prod
# Your server is live at https://your-app.vercel.app/api/mcpList on this marketplace
Get discovered. Open one PR.
Once your server is on a public repo, add an entry to data/servers.seed.json. The daily auto-sync also picks up servers indexed by Glama, but a hand-curated entry gets you featured placement, richer metadata, and tool-schema previews.
Useful links
- modelcontextprotocol.io — official spec, transports, capability matrix
- TypeScript SDK
- Python SDK
- MCP Inspector — interactive debugger
- Claude Code MCP docs