Skip to content
Cloudflare Docs
非官方翻译 - 此文档为非官方中文翻译版本,仅供参考。如有疑问请以 英文官方文档 为准。

传输

Model Context Protocol (MCP) 规范定义了三种标准的传输机制,用于客户端和服务器之间的通信:

  1. stdio,通过标准输入和标准输出进行通信 — 专为本地 MCP 连接设计。
  2. Server-Sent Events (SSE) — 目前被大多数远程 MCP 客户端支持,但预计随时间推移将被 Streamable HTTP 替代。它需要两个端点:一个用于发送请求,另一个用于接收流式响应。
  3. Streamable HTTP — 2025年3月引入的新传输方法。它通过使用单个 HTTP 端点进行双向消息传递来简化通信。目前在远程 MCP 客户端中正在获得采用,预计将成为未来的标准传输方式。

使用 Agents SDK 构建的 MCP 服务器可以支持两种远程传输方法(SSE 和 Streamable HTTP),McpAgent会自动处理传输配置。

实现远程 MCP 传输

如果您正在构建新的 MCP 服务器或在 Cloudflare 上升级现有服务器,我们建议同时支持两种远程传输方法(SSE 和 Streamable HTTP),以确保与所有 MCP 客户端的兼容性。

快速开始

您可以使用 "Deploy to Cloudflare" 按钮创建一个自动支持 SSE 和 Streamable HTTP 传输方法的远程 MCP 服务器。

Deploy to Workers

远程 MCP 服务器(无身份验证)

如果您手动配置 MCP 服务器,以下是如何使用 McpAgent 类来处理两种传输方法:

export default {
fetch(request: Request, env: Env, ctx: ExecutionContext) {
const { pathname } = new URL(request.url);
if (pathname.startsWith('/sse')) {
return MyMcpAgent.serveSSE('/sse').fetch(request, env, ctx);
}
if (pathname.startsWith('/mcp')) {
return MyMcpAgent.serve('/mcp').fetch(request, env, ctx);
}
},
};

带身份验证的 MCP 服务器

如果您的 MCP 服务器使用 Workers OAuth Provider 库实现身份验证和授权,那么您可以使用 apiHandlers 属性将其配置为支持两种传输方法。

export default new OAuthProvider({
apiHandlers: {
"/sse": MyMCP.serveSSE("/sse"),
"/mcp": MyMCP.serve("/mcp"),
},
// ... other OAuth configuration
});

升级现有的远程 MCP 服务器

如果您已经使用 Cloudflare Agents SDK 构建了远程 MCP 服务器,请进行以下更改以支持新的 Streamable HTTP 传输,同时保持与使用 SSE 的远程 MCP 客户端的兼容性:

  • 对现有的 SSE 传输使用 MyMcpAgent.serveSSE('/sse')。以前,这会是 MyMcpAgent.mount('/sse'),它已被保留作为别名。
  • 使用 MyMcpAgent.serve('/mcp') 添加新路径以支持新的 Streamable HTTP 传输。

如果您有一个使用 Workers OAuth Provider 进行身份验证/授权的 MCP 服务器,请更新配置以使用 apiHandlers 属性,它替代了 apiRouteapiHandler

通过这些少量更改,您的 MCP 服务器将支持两种传输方法,使其与现有和新客户端兼容。

使用 MCP 客户端进行测试

虽然大多数 MCP 客户端尚未采用新的 Streamable HTTP 传输,但您可以使用 mcp-remote 立即开始测试,这是一个适配器,让原本只支持本地连接的 MCP 客户端可以与远程 MCP 服务器协作。

按照此指南获取如何使用 mcp-remote 本地代理从 Claude Desktop、Cursor、Windsurf 和其他本地 MCP 客户端连接到远程 MCP 服务器的说明。