MCP Marketplace logo
MCP
Back
Build · Ship · List

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.

step 1
Build

Scaffold a server with the official SDK.

step 2
Test

Run locally, hit it from Claude Code.

step 3
Deploy

Ship to Vercel, Cloudflare, or Fly.

step 4
List

Open a PR — your server lands on this site.

1
step 1

Build it

Pick your runtime, scaffold in 30 seconds.

Anthropic ships official SDKs for TypeScript and Python. Pick one and scaffold a fresh project.

terminalbash
# 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/node
src/index.tsts
import { 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);
2
step 2

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.

terminalbash
# 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 list
Inspector tip: Run npx @modelcontextprotocol/inspector npx tsx src/index.ts to debug requests and responses interactively in a browser UI.
3
step 3

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.

api/mcp/route.tsts
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);
}
terminalbash
npm i -g vercel
vercel --prod
# Your server is live at https://your-app.vercel.app/api/mcp
Auth checklist before going public: rate-limit per IP, validate every input with a schema, never log secrets, scope API keys to the minimum permissions, and treat any tool that mutates state as if a stranger could call it (because they can).
4
step 4

List 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.

Reference

Useful links