Cloudflare远程MCP服务器
在具有持久对象的Cloudflare Workers上运行的模型上下文协议(MCP)服务器实现。
特性
- 远程MCP服务器:可通过互联网访问基于HTTP流传输的MCP服务器
- 耐用物品:使用Cloudflare持久对象进行有状态的请求处理
- 示例工具:MCP协议演示工具
- 示例资源:可通过MCP访问静态数据资源
- 示例提示:人工智能交互的预构建提示
- CORS支持:网络友好,跨源资源共享
建筑
┌─────────────────┐ HTTP POST + SSE ┌──────────────────┐
│ MCP Client │ ◄──────────────► │ Cloudflare │
│ (AI/Claude) │ │ Worker │
└─────────────────┘ └─────────┬────────┘
│
▼
┌──────────────────┐
│ MCPServerObject │
│ (Durable Object) │
│ │
│ • MCP Protocol │
│ • HTTP Processing│
│ • Request State │
└──────────────────┘可用功能
工具
- 回声:回显输入文本
- 获取时间:获取当前时间戳
- 随机编号:生成最小值和最大值之间的随机数
资源
- cloudflare://worker-info:有关Cloudflare Worker的信息
- cloudflare://sample-data:用于测试的JSON数据示例
鼓励
- 解释码:生成解释代码的提示
- debug_help:生成调试帮助提示
部署
- 安装依赖项:
npm install- 部署到Cloudflare:
npm run deploy- 通过已部署的URL访问您的MCP服务器
发展
- 启动本地开发:
npm run dev- 测试服务器:
# Get server info
curl http://localhost:8787/
# Test MCP endpoint with a simple request
curl -X POST http://localhost:8787/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'用法
HTTP API
GET /-服务器信息和功能POST /mcp-MCP HTTP流式传输端点
MCP连接
将MCP客户端连接到HTTP端点:
- 本地:
http://localhost:8787/mcp - 生产:
https://your-worker.your-subdomain.workers.dev/mcp
协议细节
服务器使用 HTTP流式传输:
- 请求:正文中包含JSON-RPC消息的HTTP POST
- 响应:服务器发送的事件(SSE)流
text/event-stream内容类型 - 格式:每个响应都以如下方式发送
data: {JSON}\n\n
MCP消息示例
列出工具
curl -X POST http://localhost:8787/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list"
}'呼叫工具
curl -X POST http://localhost:8787/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "echo",
"arguments": {
"text": "Hello, MCP!"
}
}
}'列出资源
curl -X POST http://localhost:8787/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 3,
"method": "resources/list"
}'配置
服务器已在中配置 wrangler.jsonc:
- 耐用物品:
MCPServerObject处理有状态的MCP请求处理 - 兼容性日期:设置为Cloudflare Workers最新功能的当前日期
开发说明
- 用途
@modelcontextprotocol/sdk用于MCP协议实现 - HTTP请求由持久对象处理以进行状态管理
- 使用服务器发送事件(SSE)流式传输响应
- CORS已启用,以实现web客户端兼容性
- 错误处理包括JSON-RPC错误响应
- 启用严格模式的TypeScript
传输协议
此实现使用 HTTP流式传输 代替WebSocket:
- 与代理和防火墙更兼容
- 使用标准HTTP语义
- 支持服务器发送事件以进行实时响应
- 更适合无状态云环境
许可证
这是一个用于教育目的的示例实现。
