促进mcp的发展
作为Cloudflare Workers上的MCP服务器部署的安全强化快速工程框架。
建筑
┌─────────────────────────────────────────────────────────────────┐
│ B0: Untrusted Zone │
│ Clients, Admin UIs, External IdPs │
└──────────────────────────┬──────────────────────────────────────┘
│ HTTPS
┌──────────────────────────▼──────────────────────────────────────┐
│ B1: Edge Perimeter (Hono Router on Cloudflare Worker) │
│ ┌──────────┐ ┌──────────┐ ┌──────────────┐ ┌───────────────┐ │
│ │ CORS │→│ Rate │→│ JWT Auth │→│ RBAC │ │
│ │ Headers │ │ Limiter │ │ (alg pinned) │ │ Enforcement │ │
│ └──────────┘ └──────────┘ └──────────────┘ └───────────────┘ │
└──────────────────────────┬──────────────────────────────────────┘
│
┌──────────────────────────▼──────────────────────────────────────┐
│ B2: Controlled Execution Plane (McpAgent Durable Object) │
│ ┌─────────────┐ ┌──────────────┐ ┌────────────┐ ┌──────────┐ │
│ │ Input │→│ Structured │→│ Sandwich │→│ Prompt │ │
│ │ Sanitizer │ │ Separation │ │ Defense │ │ Builder │ │
│ └─────────────┘ └──────────────┘ └────────────┘ └────┬─────┘ │
│ │ │
│ ┌─────────────┐ ┌──────────────┐ ┌────────────┐ │ │
│ │ HITL Gate │←│ PII/Toxicity │←│ Output │←─────┘ │
│ │ (optional) │ │ Redaction │ │ Validator │ ← from B4 │
│ └─────────────┘ └──────────────┘ └────────────┘ │
└──────────────────────────┬──────────────────────────────────────┘
│
┌──────────────────────────▼──────────────────────────────────────┐
│ B3: Data Plane │
│ ┌───────────────────┐ ┌──────────────────┐ ┌────────────────┐ │
│ │ Workers KV │ │ D1 / SQLite │ │ Cold Storage │ │
│ │ Templates+Versions│ │ Audit Logs │ │ (Optional S3) │ │
│ │ HMAC-signed │ │ Guardrail Events │ │ Compliance │ │
│ └───────────────────┘ └──────────────────┘ └────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
│
┌──────────────────────────▼──────────────────────────────────────┐
│ B4: Model Execution (Untrusted) │
│ Workers AI / External LLM Providers │
│ ⚠️ Treat all outputs as untrusted — validate back in B2 │
└─────────────────────────────────────────────────────────────────┘
四层提示堆栈
每个提示都由四个结构化层编译而成:
| 层 | 目的 | 安全角色 |
|---|
| 目标 | 任务定义+成功标准 | 定义允许的范围 |
| 角色 | Persona+领域上下文 | 转换模型词汇 |
| 约束条件 | 边界+禁止行为 | 安全策略执行 |
| 输出形状 | 格式+模式+示例 | 启用Zod验证 |
快速开始
# 1. Install dependencies
npm install
# 2. Create Cloudflare resources
wrangler kv namespace create PROMPT_TEMPLATES
wrangler d1 create promptcrafting-audit
# 3. Update wrangler.jsonc with the IDs from step 2
# 4. Set secrets
wrangler secret put JWT_SECRET
wrangler secret put TEMPLATE_HMAC_KEY
# 5. Run D1 migrations
npm run db:migrate
# 6. Deploy
npm run deploy
安全控制
| 边界 | 威胁 | 缓解 | 状态 |
|---|
| B0→B1 | 欺骗 | 带算法固定的JWT(仅限HS256) | ✅ |
| B0→B1 | DoS | 身份密钥速率限制(非IP) | ✅ |
| B1→B2 | 权限升级 | RBAC与权限检查 | ✅ |
| B2 | 直接提示注入 | NFKC+正则表达式+熵分析 | ✅ |
| B2 | 间接注射 | 结构化分离+三明治防御 | ✅ |
| B2 | 代币走私 | 隐形字符剥离+规范化 | ✅ |
| B3 | 模板中毒 | HMAC-SHA256内容签名 | ✅ |
| B3 | 拒绝 | 不可篡改的D1审核日志 | ✅ |
| B4 | 提示提取 | 系统提示中的Canary令牌 | ✅ |
| B4→B2 | 模式漂移 | Zod关闭输出验证失败 | ✅ |
| B4→B2 | PII泄漏 | Regex PII检测+编辑 | ✅ |
| B4→B2 | 提示泄漏 | 系统指令模式检测 | ✅ |
| B1 | JWT混淆 | 算法固定、声明验证 | ✅ |
| B2 | HITL超时/DoS | 可配置超时(HITL_TIMEOUT_MS),过期的死信 | ✅ |
| B4 | 响应完整性 | TLS证书固定(计划中) | 🔲 |
端点
| 路径 | 方法 | 身份验证 | 描述 |
|---|
/health | GET | 否 | 健康检查 |
/mcp/* | ALL | JWT | MCP协议(流式HTTP) |
/api/v1/templates | 获取 | JWT+ template:read | 列出模板 |
/api/v1/templates/:id | 获取 | JWT+ template:read | 获取模板 |
/api/v1/templates/:id | 删除 | JWT+ template:delete | 删除模板 |
/api/v1/audit | 获取 | JWT+ audit:read | 查询审核日志 |
/api/v1/hitl | 获取 | JWT+ hitl:resolve | 列出待HITL批准的清单 |
/api/v1/hitl/:requestId | 获取 | JWT+ hitl:resolve | 获取HITL批准状态 |
/api/v1/hitl/:requestId/resolve | 帖子 | JWT+ hitl:resolve | 批准或拒绝HITL请求 |
MCP工具
| 工具 | 说明 | 注释 |
|---|
promptcraft_create_template | 创建HMAC签名的四层模板 | 写入 |
promptcraft_get_template | 检索+验证模板完整性 | 只读 |
promptcraft_list_templates | 列出分页模板 | 只读 |
promptcraft_delete_template | 软删除(保留版本) | 破坏性 |
promptcraft_execute_prompt | 全管道:消毒→ 编译→ 推断→ 验证 | 写入 |
promptcraft_validate_input | 模拟运行验证(无推理) | 只读 |
promptcraft_query_audit | 使用筛选器查询审计跟踪 | 只读 |
项目结构
promptcrafting-mcp/
├── wrangler.jsonc # Cloudflare config (all bindings)
├── package.json
├── tsconfig.json
├── migrations/
│ └── 0001_init.sql # D1 schema
└── src/
├── index.ts # Hono router (B1 perimeter)
├── mcp-agent.ts # McpAgent Durable Object (B2)
├── types.ts # Shared type definitions
├── schemas/
│ └── index.ts # Zod input schemas
├── middleware/
│ └── auth.ts # JWT, RBAC, rate limiting
├── guardrails/
│ ├── index.ts # Barrel export
│ ├── input-sanitizer.ts # NFKC, injection detection, separation, sandwich
│ └── output-validator.ts # Schema, PII, leakage, canary
├── services/
│ ├── prompt-builder.ts # Four-layer compiler, HMAC signing
│ └── audit.ts # D1 audit trail operations
└── tools/
└── prompt-tools.ts # MCP tool registrations
后续步骤
- \[\]每个边界的STRIDE威胁模型图
- \[x\] HITL门,具有可配置的超时+死信路径
- \[\]外部模型提供程序的TLS证书固定
- \[\]与MCP检查员的集成测试
- \[\]通过KV版本路由提示A/B测试
- \[\]用于AI集成的Cloudflare防火墙(语义输入/输出扫描)