mcpField
C
crontap-replace-vercel-cron

crontap-replace-vercel-cron

github.com/crontap云与 DevOps1938 次安装6 周前更新
代码仓库

关于 crontap-replace-vercel-cron

为将 Vercel Cron 调度迁移到 Crontap 的开发者提供操作指南,保留 Vercel 作为运行环境,并强调切换期间避免双重调度。

主要功能

  1. 01读取现有 Vercel Cron 配置
  2. 02为路由添加密钥鉴权
  3. 03迁移调度并核对时区
  4. 04提供暂停和恢复步骤
  5. 05规划回滚并验证首次运行

适用场景

  1. 01将 Vercel Cron 的时钟迁至 Crontap
  2. 02安全切换生产环境中的定时任务
  3. 03排查重复执行或调度路由错误

MCP 相关

通过 Crontap MCP 的 create_schedule 创建替代任务,并可用 pause_schedule 和 resume_schedule 管理;也说明 Ultra REST API 创建方式。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/crontap/skills --skill crontap-replace-vercel-cron

安装后在 Claude Code 中输入/crontap-replace-vercel-cron确认已加载。

详细介绍

替换 Vercel Cron

保留 Vercel 作为运行环境,只迁移定时器。Crontap 通过 HTTPS 调用已部署的路由。

前置条件

使用所需工具前,请先检查它们是否可用。如果有任何工具不可用,请停止操作,并仅向用户提供以下两个选项:

  1. 连接 Crontap MCP:https://mcp.crontap.com/mcp。所有 Crontap 套餐均支持 MCP 访问。
  2. 为原始 API 配置 $CRONTAP_CLIENT_ID 和 $CRONTAP_API_KEY。原始 API 访问需要 Ultra 套餐。

不要擅自选择路径,也不要在用户选择之前继续操作。

  • 读取现有 vercel.json 中的 cron 路径和表达式。
  • 确认生产环境主机名和路由方法。
  • 使用专用的密钥请求头保护路由。
  • 切换前确保处理程序具备幂等性。

切换工作流

  1. 在 Vercel 应用中添加或验证路由身份验证。
  2. 使用受控请求测试受保护的生产路由。
  3. 选择切换时间,并说明短暂重叠或间断的风险。
  4. 移除或停用 vercel.json 中的计划任务。
  5. 立即创建匹配的 Crontap 计划任务。
  6. 验证解析后的时区、后续运行时间以及首条历史记录。
  7. 制定回滚计划:暂停 Crontap,恢复 Vercel cron,然后部署。

不要同时启用两个定时器。即使两个调度器都正常运行,也可能造成副作用重复。

MCP 示例

创建替代计划任务:

{
  "tool": "create_schedule",
  "arguments": {
    "url": "https://app.example.com/api/cron/daily-report",
    "cron": "0 9 * * 1-5",
    "timezone": "UTC",
    "method": "GET",
    "headers": {
      "Authorization": "Bearer <secret-from-secure-store>"
    },
    "label": "Vercel daily report"
  }
}

为回滚或维护暂停计划任务:

{
  "tool": "pause_schedule",
  "arguments": {
    "scheduleId": "<schedule-id>"
  }
}

使用相同配置恢复计划任务:

{
  "tool": "resume_schedule",
  "arguments": {
    "scheduleId": "<schedule-id>"
  }
}

暂停或恢复前,请确认所选 ID。

受保护路由模式

将请求授权请求头与仅供服务器使用的环境变量进行比较。如果二者不匹配,应在执行任何工作前返回 401。不要在查询字符串或路由路径中使用密钥。

如果路由会将工作加入队列,请先将逻辑计划周期持久化为幂等键,再加入队列。只有队列接受任务后才返回成功。

REST 备用方案

创建 REST 计划任务需要 Ultra API 访问权限:

curl --fail-with-body https://api.crontap.com/v1/schedule \
  -X POST \
  -H "ClientId: $CRONTAP_CLIENT_ID" \
  -H "ApiKey: $CRONTAP_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
    "url": "https://app.example.com/api/cron/daily-report",
    "interval": "0 9 * * 1-5",
    "timezone": "UTC",
    "verb": "GET",
    "headers": {
      "Authorization": "Bearer <secret-from-secure-store>"
    },
    "label": "Vercel daily report"
  }'

非 Ultra 套餐账户请使用 MCP。

验证

  • 确认已部署配置中不存在旧的 Vercel 计划任务。
  • 确认只有一个 Crontap 计划任务指向该路由。
  • 验证没有密钥时返回 401,提供密钥时请求成功。
  • 检查首次实际运行以及应用层副作用。

安全与套餐限制

  • 切勿将生产路由密钥粘贴到技能、代码仓库或聊天中。
  • 回滚时,恢复旧调度器前先暂停 Crontap。
  • 保留原有频率的 UTC 语义,除非用户明确选择本地 IANA 时区。
  • 遇到上限或频率错误时,展示返回的四档选项,并给出满足需求的最小选项。

故障排除

  • Vercel 返回 401,表示已配置的计划任务请求头与路由密钥不一致。
  • 返回 404 通常表示被调用的主机名上没有部署该路由。
  • 输出重复表示两个定时器都处于启用状态,或端点幂等性失效。
  • 超时可能意味着需要使用持久队列,而非长时间同步处理。

参考资料

评论

支持 Markdown