摘要:本文基于building-mcp-server-on-cloudflare Skill,完整梳理了在Cloudflare Workers上部署MCP服务器的技术路径——从环境准备、工具定义、本地测试到生产部署,覆盖公开与OAuth认证两种模式。MCP服务器跑在Cloudflare全球边缘网络,部署即全球可达。
MCP(Model Context Protocol)正在成为AI Agent连接外部工具的标准协议。但把MCP服务器跑起来是一回事,把它部署到生产环境、让全球用户都能用、还要考虑认证和安全,是另一回事。
building-mcp-server-on-cloudflare 这个Skill要解决的,就是这件事——把MCP服务器的整个生命周期,从本地开发到全球部署,压缩成一条可重复的流水线。

为什么选Cloudflare Workers?
MCP服务器本质上是暴露一组工具接口供AI客户端调用。传统部署方式需要自己管服务器、配负载均衡、处理全球延迟。Workers跑在Cloudflare的全球边缘网络上,部署即全球可达。
更重要的是成本结构。一个Workers免费版每天有10万次请求额度,对大多数MCP服务器的调用量来说完全够用。按量付费模式的边际成本几乎为零——这对个人开发者和小团队来说,意味着可以把MCP服务器当成基础设施来用,而不是省着用。

两种部署路径:公开与认证
Cloudflare为MCP服务器提供了两条部署路径。
路径一:无认证公开服务器。这是最快的上手方式。一条命令就能拉起一个可用的MCP服务器:
npm create cloudflare@latest -- my-mcp-server --template=cloudflare/ai/demos/remote-mcp-authless cd my-mcp-server npm start
服务器跑在 http://localhost:8788/mcp,本地验证通过后一行 npx wrangler deploy 就能推上生产。
路径二:OAuth认证服务器。如果需要控制谁可以调用你的工具,可以用带认证的模板:
npm create cloudflare@latest -- my-mcp-server --template=cloudflare/ai/demos/remote-mcp-github-oauth
支持GitHub、Google、Auth0等多种OAuth提供商-4。用户需要登录才能访问工具,且可以基于用户权限控制具体工具的可调用范围。
三个核心选型决策
Agents SDK提供了三种构建MCP服务器的方式,选哪个取决于你的需求:
- createMcpHandler():无状态、最快上手。适合工具不需要跨会话保持状态、不需要持久化存储的场景。没有额外的依赖,一行代码处理所有MCP协议细节。
- McpAgent:有状态,基于Durable Objects。每个会话对应一个持久化对象,支持会话级状态管理、进度提示(elicitation),同时支持SSE和Streamable HTTP两种传输方式。适合需要跨多轮对话保持上下文的复杂Agent场景。
原始传输层:完全控制,不依赖Agents SDK。适合需要高度定制化或已有MCP SDK代码库的场景。

定义工具:核心是写函数
MCP服务器的核心是工具(Tools)——AI客户端可以调用的函数。定义方式很直接:
import { McpAgent } from "agents/mcp";
import { z } from "zod";
export class MyMCP extends McpAgent {
server = new Server({ name: "my-mcp", version: "1.0.0" });
async init() {
// 简单工具:加法
this.server.tool(
"add",
{ a: z.number(), b: z.number() },
async ({ a, b }) => ({
content: [{ type: "text", text: String(a + b) }]
})
);
// 调用外部API的工具
this.server.tool(
"get_weather",
{ city: z.string() },
async ({ city }) => {
const response = await fetch(`https://api.weather.com/${city}`);
const data = await response.json();
return { content: [{ type: "text", text: JSON.stringify(data) }] };
}
);
}
}工具用Zod定义参数类型,MCP客户端调用时自动完成参数校验。每个工具就是一个async函数,返回值会序列化成MCP协议格式返回给客户端。
部署与连接
部署只需要一行命令:
npx wrangler deploy
部署完成后,服务器会有一个公开的workers.dev域名。部署即全球可达——Cloudflare的边缘网络会自动把请求路由到离用户最近的节点。
连接MCP客户端同样简单。可以用Cloudflare AI Playground做快速测试,也可以用MCP Inspector做本地调试-。Claude Code、OpenAI Codex、Cursor等支持MCP协议的客户端都可以直接接入。
一点实践经验
这套流程走下来,有几个点值得注意。
工具粒度:MCP工具应该做得小而精。一个工具只做一件事,AI客户端更容易理解什么时候该调用它。把多个功能塞进一个工具里,反而增加了调用的复杂度。
错误处理:工具函数里一定要处理异常。MCP客户端调用工具时如果遇到未捕获的错误,整个会话可能会中断。在工具内部try-catch,返回有意义的错误信息给客户端。
本地测试:部署之前先用 npm start 跑本地服务器,用MCP Inspector连上 localhost:8788/mcp 测试每个工具的行为。一次部署失败的重试成本虽然不高,但本地验证能省下不少时间。
从零到部署,一条命令的距离
building-mcp-server-on-cloudflare 这个Skill把MCP服务器的搭建流程标准化了——从环境准备、工具定义、本地测试到生产部署,每一步都有清晰的路径。
资源 | 地址 |
Skill 主页 | https://smithery.ai/skills/cloudflare/building-mcp-server-on-cloudflare |
GitHub(Cloudflare Skills) | https://github.com/cloudflare/skills |
Cloudflare MCP 文档 | https://developers.cloudflare.com/agents/model-context-protocol/ |
MCP Inspector | https://github.com/modelcontextprotocol/inspector |
最终你得到的,是一个跑在全球边缘网络上的MCP服务器,支持OAuth认证,可以被任何支持MCP协议的AI客户端调用。从零到部署,核心路径上需要你写的代码,其实就是那几个工具函数。


