AI代理工具集

Cloudflare MCP Toolbox 是一个基于Cloudflare Workers的无服务器工具集,提供日期/时间、数学计算、文本处理、验证、KV存储和Workers AI集成等功能,适用于AI代理的开发和部署。

  • by jezweb
  • TypeScript
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 jezweb/cloudflare-mcp-toolbox

使用说明

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

配置

  1. KV命名空间:

    wrangler kv namespace create MCP_TOOLBOX_CACHE
    

    更新 wrangler.jsonc 返回的ID为:

    "kv_namespaces": [
      {
        "binding": "CACHE",
        "id": "YOUR_KV_NAMESPACE_ID"
      }
    ]
    
  2. 生成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: "<script>alert('xss')</script>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

添加新工具

  1. 在适当的位置创建处理程序函数 src/handlers/*.ts 文件
  2. 将工具定义添加到 src/mcp/tools.ts
  3. 电线处理机 src/mcp/server.ts switch语句
  4. 本地测试 npm run dev
  5. 使用部署 npm run deploy

🚦 状态

✅ 所有30个工具均已实施和测试 ✅ 部署到Cloudflare Workers ✅ 已启用承载令牌身份验证 ✅ 已配置KV命名空间 ✅ 工人AI绑定激活 ✅ 生产就绪


📝 许可证

麻省理工学院


👤 作者

杰里米·道斯(Jez) Jezweb|人工智能工程师 jeremy@jezweb.net | www.jezweb.com.au


🙏 构建于


工具总数: 30 分类: 6 全球边缘部署: ✅ 冷启动时间:0ms 认证:承载令牌 默认时区:澳大利亚/悉尼

已知问题

  • 自定义域超时问题 -自定义域上的长期MCP连接超时,但仍在运行 *.workers.dev URL。跟踪时间:https://github.com/cloudflare/workers-oauth-provider/issues/121
    • 变通方案:使用workers.dev URL而不是自定义域