促进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防火墙(语义输入/输出扫描)