Cloudflare MCP工具箱

AI代理的实用工具 -日期/时间、数学、文本处理、验证、KV存储和Workers AI集成。
基于Cloudflare Workers构建,实现零冷启动的全球边缘部署。
现场演示: https://cloudflare-mcp-toolbox.webfonts.workers.dev
______________________________________________________________________
🚀 特性
- 30实用工具 横跨6个类别
- 澳大利亚/悉尼时区 作为所有日期/时间操作的默认值
- 承载令牌身份验证 用于安全访问
- Cloudflare Workers人工智能集成 具有自动嵌入缓存功能
- 边缘部署 具有全局低延迟访问
- 符合MCP协议 (模型上下文协议)
______________________________________________________________________
📦 工具类别
| 类别 | 工具 | 描述 |
|---|---|---|
| 日期/时间 (5) | get_current_datetime、convert_timezone、calculate_duration、format_date、parse_date | 时区转换、持续时间计算、自然语言日期解析 |
| 数学 (6) | 计算、转换单位、统计、随机数、百分比、roll_dice | 安全表达式计算、单位转换、加密安全随机、骰子滚动 |
| 文本 (6) | 转换文本、编码解码、提取模式、哈希文本、计数单词、截断文本 | 文本转换、编码、模式提取、哈希 |
| 验证 (6) | validate_email、validate_url、validate_phone、validate_json、sanitize_html、validate_schema | 输入验证和净化 |
| KV存储 (4) | kv_get、kv_set、kv_delete、kv_list | 带TTL的持久键值存储 |
| 工人AI (3) | ai_chat、ai_classify、ai_embed | LLM推理、情感分析、文本嵌入 |
______________________________________________________________________
🔧 设置
先决条件
- Node.js 18+
- 启用Workers AI的Cloudflare帐户
- 牧马人CLI
安装
npm install配置
- KV命名空间:
wrangler kv namespace create MCP_TOOLBOX_CACHE更新 wrangler.jsonc 返回的ID为:
"kv_namespaces": [
{
"binding": "CACHE",
"id": "YOUR_KV_NAMESPACE_ID"
}
]- 生成AUTH_TOKEN:
node -e "console.log(require('crypto').randomBytes(32).toString('base64url'))"更新 wrangler.jsonc:
"vars": {
"AUTH_TOKEN": "YOUR_GENERATED_TOKEN_HERE"
}部署
npm run deploy本地开发
npm run dev服务器将在以下时间启动 http://localhost:8787
______________________________________________________________________
📖 用法
更好的帽子配置
添加到您的BetterChat MCP服务器配置中:
{
"url": "https://your-worker.workers.dev/mcp",
"headers": {
"Authorization": "Bearer YOUR_AUTH_TOKEN_HERE"
}
}克劳德桌面版
添加 claude_desktop_config.json:
{
"mcpServers": {
"cloudflare-toolbox": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://your-worker.workers.dev/mcp"],
"env": {
"MCP_REMOTE_HEADERS": "{\"Authorization\":\"Bearer YOUR_TOKEN\"}"
}
}
}
}MCP检验员(测试)
npx @modelcontextprotocol/inspector \
https://your-worker.workers.dev/mcp \
-H "Authorization: Bearer YOUR_TOKEN"MCP协议
初始化:
{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2024-11-05"
}
}列出工具:
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/list"
}呼叫工具:
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "get_current_datetime",
"arguments": {}
}
}______________________________________________________________________
🎯 工具调用示例
日期/时间
// Get current time in Sydney
get_current_datetime({ timezone: "Australia/Sydney", format: "readable" })
// → "Wednesday, November 6, 2025 at 2:30 PM AEDT"
// Parse natural language
parse_date({ expression: "next Friday at 3pm" })
// → "2025-11-08T15:00:00+11:00"数学
// Calculate expression
calculate({ expression: "2 + 2 * 3" })
// → "8"
// Roll dice
roll_dice({ notation: "2d6+5" })
// → { "rolls": [3, 5], "sum": 8, "total": 13 }
// Convert units
convert_units({ value: 100, from_unit: "km", to_unit: "miles" })
// → "62.137"文本
// Transform text
transform_text({ text: "Hello World", operation: "slug" })
// → "hello-world"
// Extract emails
extract_patterns({ text: "Contact us at support@example.com", pattern: "emails" })
// → ["support@example.com"]验证
// Validate email
validate_email({ email: "user@example.com" })
// → { "valid": true, "email": "user@example.com" }
// Sanitize HTML
sanitize_html({ html: "alert('xss')Hello", mode: "strip" })
// → "Hello"KV存储
// Store data
kv_set({ key: "user_prefs", value: { theme: "dark" }, ttl: 3600 })
// → { "success": true, "expires_at": 1730894400 }
// Retrieve data
kv_get({ key: "user_prefs", type: "json" })
// → { "found": true, "value": { "theme": "dark" } }工人AI
// Chat completion
ai_chat({ prompt: "What is the capital of Australia?" })
// → { "response": "The capital of Australia is Canberra.", ... }
// Sentiment analysis
ai_classify({ text: "This is amazing!" })
// → { "classification": "POSITIVE", "score": 0.9987 }
// Generate embeddings (cached)
ai_embed({ text: "Cloudflare Workers are serverless functions" })
// → { "embedding": [...], "dimensions": 768 }______________________________________________________________________
🔒 安全
- 承载令牌身份验证:所有MCP端点都需要有效
Authorization: Bearer TOKEN头球 - 输入验证:所有输入在处理前都经过验证
- 安全表达评估:数学表达式使用递归下降解析器(否
eval()或Function()) - HTML净化:通过标签剥离或实体逃逸进行XSS保护
- 速率限制:可以通过基于KV的跟踪添加(见第8阶段文件)
______________________________________________________________________
📚 文档
- API终点:参见
docs/API_ENDPOINTS.md获取完整的工具文档 - 实施:参见
docs/IMPLEMENTATION_PHASES.md用于构建阶段 - MCP协议: https://modelcontextprotocol.io
______________________________________________________________________
🛠️ 发展
项目结构
cloudflare-mcp-toolbox/
├── src/
│ ├── index.ts # Main Hono app + auth
│ ├── mcp/
│ │ ├── server.ts # MCP request handler
│ │ ├── types.ts # TypeScript types
│ │ └── tools.ts # Tool definitions (30 tools)
│ ├── handlers/ # Tool implementations
│ │ ├── datetime.ts # Date/time tools (5)
│ │ ├── math.ts # Math tools (6)
│ │ ├── text.ts # Text tools (6)
│ │ ├── validation.ts # Validation tools (6)
│ │ ├── kv.ts # KV tools (4)
│ │ └── ai.ts # AI tools (3)
│ └── utils/
│ └── responses.ts # MCP response builders
├── docs/
│ ├── API_ENDPOINTS.md # Complete tool documentation
│ └── IMPLEMENTATION_PHASES.md # Build phases
├── wrangler.jsonc # Cloudflare config
├── package.json
└── tsconfig.json添加新工具
- 在适当的位置创建处理程序函数
src/handlers/*.ts文件 - 将工具定义添加到
src/mcp/tools.ts - 电线处理机
src/mcp/server.tsswitch语句 - 本地测试
npm run dev - 使用部署
npm run deploy
______________________________________________________________________
🚦 状态
✅ 所有30个工具均已实施和测试 ✅ 部署到Cloudflare Workers ✅ 已启用承载令牌身份验证 ✅ 已配置KV命名空间 ✅ 工人AI绑定激活 ✅ 生产就绪
______________________________________________________________________
📝 许可证
麻省理工学院
______________________________________________________________________
👤 作者
杰里米·道斯(Jez) Jezweb|人工智能工程师 jeremy@jezweb.net | www.jezweb.com.au
______________________________________________________________________
🙏 构建于
- Cloudflare员工 -无服务器边缘平台
- 荣誉 -轻量级web框架
- 工人AI -边缘LLM推理
- Cloudflare KV -键值存储
- MCP协议 -模型上下文协议
______________________________________________________________________
工具总数: 30 分类: 6 全球边缘部署: ✅ 冷启动时间:0ms 认证:承载令牌 默认时区:澳大利亚/悉尼
已知问题
- 自定义域超时问题 -自定义域上的长期MCP连接超时,但仍在运行
*.workers.devURL。跟踪时间:https://github.com/cloudflare/workers-oauth-provider/issues/121
- 变通方案:使用workers.dev URL而不是自定义域
