使用说明
MCP Server Template
Bridge any REST API to the Model Context Protocol — deployed on the Cloudflare Workers Edge.
任务
此模板为您提供了公开所需的一切 任何REST API 作为一套 模型上下文协议(MCP) 工具、资源和提示--在 Cloudflare Workers边缘 零冷启动、亚毫秒级延迟和自动缩放。
在几分钟内将Claude Desktop、Cursor、Continue.dev或任何兼容MCP的AI客户端连接到您的API。
目录
建筑
sequenceDiagram
participant Client as MCP Client<br/>(Claude / Cursor)
participant Worker as Cloudflare Worker<br/>(Hono + MCP SDK)
participant API as External REST API
Client->>Worker: GET /mcp (Authorization: Bearer <key>)
Worker-->>Client: SSE stream established (mcp-session-id header)
Client->>Worker: POST /mcp (mcp-session-id header)
Note over Worker: Routes to McpServer<br/>for this session
Worker->>API: GET /search?q=... (Bearer token)
API-->>Worker: JSON response
Worker-->>Client: SSE: tool result (markdown)
关键设计决策:
- 可流式HTTP传输 --使用MCP SDK
WebStandardStreamableHTTPServerTransport使用本机Cloudflare Workers Web Streams API - 每会话隔离 --每个
GET /mcp创建一个独立McpServer例子 - 身份验证中间件 --定时安全承载令牌检查保护所有MCP端点
- 重试+超时 —
ApiClient自动处理429/5xx的指数回退
快速入门
先决条件
| 工具 | 版本 |
|---|---|
| Node.js | >=18.x |
| pnpm | >=8.x |
| 牧马人 | >=3.x |
1.克隆和安装
# Use this template (GitHub)
gh repo create my-mcp-server --template PCWProps/mcp-server-template --private
cd my-mcp-server
# Install dependencies
pnpm install
2.配置环境
# Copy the example vars file
cp .dev.vars.example .dev.vars
编辑 .dev.vars:
TARGET_API_BASE_URL=https://api.example.com
TARGET_API_KEY=your-api-key-here
MCP_AUTH_KEY=your-mcp-auth-key-here
生成安全的MCP_AUTH_KEY:
openssl rand -hex 32
3.启动开发服务器
pnpm dev
# Wrangler starts at http://localhost:8787
4.测试MCP连接
# Health check
curl http://localhost:8787/health
# Connect to MCP streamable HTTP endpoint (SSE stream)
curl -N \
-H "Authorization: Bearer your-mcp-auth-key" \
http://localhost:8787/mcp
5.连接MCP客户端
添加到您的 克劳德桌面版 claude_desktop_config.json:
{
"mcpServers": {
"my-api": {
"url": "http://localhost:8787/mcp",
"headers": {
"Authorization": "Bearer your-mcp-auth-key"
}
}
}
}
项目结构
mcp-server-template/
├── src/
│ ├── index.ts # Hono app + SSE/message routing
│ ├── mcp/server.ts # McpServer factory
│ ├── tools/ # MCP tool implementations
│ ├── resources/ # MCP resource implementations
│ ├── prompts/ # MCP prompt templates
│ ├── api/client.ts # Type-safe HTTP client with retry
│ ├── middleware/auth.ts # Bearer token auth middleware
│ └── types/env.d.ts # Cloudflare Worker env bindings
├── scripts/
│ └── ingest-openapi.ts # OpenAPI → MCP tool generator
├── .github/ # GitHub workflows, templates, policies
├── .devcontainer/ # VS Code Dev Container config
├── wrangler.toml # Cloudflare Workers config
└── package.json
添加MCP功能
新刀具
// src/tools/my-tool.ts
import { z } from 'zod';
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
import type { ApiClient } from '../api/client.js';
export function registerMyTool(server: McpServer, client: ApiClient): void {
server.tool(
'my_tool',
'Description for the AI',
{ query: z.string().describe('Search query') },
async ({ query }) => {
const result = await client.get('/endpoint', { q: query });
return { content: [{ type: 'text', text: `Result: ${JSON.stringify(result)}` }] };
},
);
}
然后注册 src/tools/index.ts。参见 贡献.md 完整的演练。
获取API文档(OpenAPI脚本)
有OpenAPI 3.x规范吗?在几秒钟内自动生成工具骨架:
# Place your spec in the project root
cp /path/to/openapi.json ./openapi.json
# Run the ingestion script
pnpm ingest-openapi
# Review and customize generated files in src/tools/
# Then register them in src/tools/index.ts
脚本生成:
- A. Zod模式 从OpenAPI参数
- A打字 ApiClient调用 存根
- Markdown格式的响应模板
- 满的 JSDoc文件
配置
环境变量
| 变量 | 描述 | 必填 |
|---|---|---|
TARGET_API_BASE_URL |
外部API的基本URL | ✅ |
TARGET_API_KEY |
外部API的API密钥 | ✅ |
MCP_AUTH_KEY |
MCP客户端必须提供的密钥 | ✅ |
设置生产秘密:
wrangler secret put TARGET_API_KEY
wrangler secret put MCP_AUTH_KEY
部署
部署到Cloudflare Workers
# One-command deploy
pnpm deploy
# Deploy to staging environment
pnpm deploy:staging
CI/CD(GitHub操作)
所包含的工作流自动化了:
- 持续集成 --对每次推送/PR(节点18、20、22)进行皮棉、类型检查和测试
- 部署 --每次推送时自动部署到Cloudflare
main - 发布 --基于变更集的变更日志和GitHub发布
将这些秘密添加到您的GitHub存储库中:
CLOUDFLARE_API_TOKENCLOUDFLARE_ACCOUNT_ID
路线图
- [x] Cloudflare员工的SSE传输
- [x] 承载令牌认证中间件
- [x] 带重试/超时的类型安全的ApiClient
- [x] OpenAPI摄取脚本
- [x] 示例工具、资源和提示
- []持久对象支持多实例会话状态
- []OAuth 2.0/API密钥轮换支持
- []限速中间件
- []流媒体工具响应(分块SSE)
- []通过KV缓存工具结果
- []多租户支持(每个用户API密钥)
- []牧马人AI(工人AI)集成示例
- []指标和可观察性仪表板
赞助
如果此模板为您节省了时间,请考虑支持继续开发:
您的赞助资金:
- 保持依赖关系最新
- 编写教程和文档
- 构建新的示例集成
- 快速响应问题
贡献
欢迎投稿!请阅读 贡献指南 在提交PR之前。
