> Canonical URL: https://codingcat.dev/course/mcp-in-production/lesson/building-typescript-mcp-server-cloudflare-workers

# Building Your First TypeScript MCP Server on Cloudflare Workers | MCP in Production: Building & Securing Model Context Protocol Servers | CodingCat.dev Course

[🧶 MCP in Production: Building & Securing Model Context Protocol Servers](/course/mcp-in-production)Section 1.2 · Lesson 2 of 5[← Prev Lesson](/course/mcp-in-production/lesson/what-mcp-actually-is-stdio-vs-streamable-http)[Next Lesson →](/course/mcp-in-production/lesson/securing-remote-mcp-servers-oauth-better-auth)

# Building Your First TypeScript MCP Server on Cloudflare Workers

![MCP in Production Architecture Diagram](https://cdn.sanity.io/media-libraries/mlttp0BZbCpV/images/dd8b89a42ee37457891b58d39c6273a31ac013e4-1376x768.jpg?rect=6,0,1365,768&w=1920&h=1080&q=82&fit=max&auto=format)[@CodingCatDev62.5K / 100K Subscribers Goal](https://www.youtube.com/@codingcatdev?sub_confirmation=1)[Subscribe on YouTube→](https://www.youtube.com/@codingcatdev?sub_confirmation=1)[Watch on YouTube App ↗](https://www.youtube.com/watch?v=gH9Q6-b1b4Y&list=UUnKZ8gEb78zXKMi1ns-IQ2g)

## Zero-Cold-Start MCP Tool Execution in V8 Isolates

When an AI agent calls a tool mid-conversation, a 600ms container cold start ruins the user experience. Running your MCP server inside a Cloudflare Worker keeps tool latency under 10ms.

Copied! 🐾📄 src/pages/api/mcp.tstypescript

```
export async function POST({ request }: { request: Request }) {
  const body = await request.json();
  if (body.method === "tools/list") {
    return Response.json({
      jsonrpc: "2.0",
      id: body.id,
      result: {
        tools: [
          {
            name: "search_catalog",
            description: "Search CodingCat.dev courses, podcasts, and blog posts",
            inputSchema: {
              type: "object",
              properties: { query: { type: "string" } },
              required: ["query"],
            },
          },
        ],
      },
    });
  }
  return Response.json({ jsonrpc: "2.0", id: body.id, result: { ok: true } });
}
```

## Production Architecture Takeaway

Keep MCP tool input schemas flat and explicit so smaller tool-calling models never hallucinate nested arguments.

✏️ Visual Architecture Diagram

## how this course connects together.

Follow AJ from first principles to production-ready architecture.

Let’s build it!✏️ Visual Diagram: MCP in Production: Building & Securing Model Con…✓ Good PatternVISUAL DIAGRAM[Diagram Walkthrough]Step-by-step diagram breakdown for MCP in Production: Building & Securing Model Context Protocol Servers: Building Your First TypeScript MCP Server on Cloudflare Workers: start with Core Architecture & Production Implementation, implement MCP in Production: Building & Securing Model Context Protocol Servers, and ship to production.AAA Contrast Verified[Course Outline](/course/mcp-in-production)

## MCP in Production: Building & Securing Model Context Protocol Servers

2/51

### Core Architecture & Production Implementation

- [1.1What MCP Actually Is (Architecture Diagram & Stdio vs. Streamable HTTP)](/course/mcp-in-production/lesson/what-mcp-actually-is-stdio-vs-streamable-http)
- [1.2Building Your First TypeScript MCP Server on Cloudflare Workers▶](/course/mcp-in-production/lesson/building-typescript-mcp-server-cloudflare-workers)
- [1.3Securing Remote MCP Servers with OAuth 2.1 & Better-Auth](/course/mcp-in-production/lesson/securing-remote-mcp-servers-oauth-better-auth)
- [1.4Client-Side WebMCP & RFC 9727 Agent Discovery](/course/mcp-in-production/lesson/client-side-webmcp-rfc-9727-agent-discovery)
- [1.5Connecting MCP to Verified Knowledge Bases (Sanity Context vs. Naive RAG)](/course/mcp-in-production/lesson/connecting-mcp-verified-knowledge-bases-sanity-context)

@CodingCatDev on YouTube62.5K / 100K

Subscribe for new course lessons and architecture deep dives every week.

[Subscribe for New Lessons →](https://www.youtube.com/@codingcatdev?sub_confirmation=1)