MCP服务器模板
Cloudflare Workers使用无状态的生产就绪MCP服务器模板 createMcpHandler 图案。
快速开始
bun install && bun run dev
# Connect MCP Inspector to http://localhost:8787/mcp脚本
| 命令 | 描述 |
|---|---|
bun run dev | 地方发展 |
bun run test | 运行测试 |
bun run deploy | 部署到生产环境 |
bun run deploy:staging | 部署到暂存 |
环境
| 环境 | 日志 | 跟踪 | 用例 |
|---|---|---|---|
| 生产 | 10% | 1% | 针对高流量进行了成本优化 |
| 暂存 | 100% | 10% | 调试完全可见 |
采样率控制记录/跟踪的请求百分比。较低的速率可以降低成本,同时保持可观测性。
配置
环境变量
| 变量 | 描述 | 示例 |
|---|---|---|
CORS_ORIGIN | 允许的CORS源(默认值: *) | https://myapp.com |
通过wrangler设置:
wrangler secret put CORS_ORIGIN建筑
这使用了 无状态 createMcpHandler 代理SDK中的模式。这是MCP服务器的推荐方法:
- 不需要在请求之间维护状态
- 更简单,运营成本更低(无耐用物品)
- 工具、资源和提示足够
如果您需要有状态的行为(例如游戏服务器、聊天状态),请使用 McpAgent 类中的持久对象。
结构
src/
├── index.ts # Entry point with health check, CORS, and MCP handler
├── types.ts # Type definitions
└── utils/ # Logging utilities
├── logger.ts # Structured logging
└── sanitize.ts # Param sanitization添加工具
编辑 src/index.ts 并在服务器上注册您的工具:
import { z } from "zod";
server.tool(
"my_tool",
"What it does",
{ input: z.string() },
async ({ input }) => ({
content: [{ type: "text", text: JSON.stringify({ result: input }) }],
}),
);Zod模式由MCP SDK自动验证。
客户配置
开源代码
~/.config/opencode/opencode.json:
{
"mcp": {
"my-server": {
"type": "remote",
"url": "https://my-worker.workers.dev/mcp",
"enabled": true
}
}
}克劳德桌面/光标
{
"mcpServers": {
"my-server": { "url": "https://my-worker.workers.dev/mcp" }
}
}特性
- 无状态架构:无需耐用物品,更简单,成本更低
- 结构化日志记录:所有日志都包括请求ID、时间戳和上下文
- 错误跟踪:在Cloudflare Observability中捕获并可见堆栈跟踪
- 安全标头:X-Content-Type-Options、X-Frame-Options和推荐人政策
- 可配置CORS:通过以下方式限制特定来源
CORS_ORIGINenv 是 - 健康检查:
/health监控端点 - 参数消毒:日志中自动编辑敏感字段(密码、令牌、api_key)
许可证
麻省理工学院
