mcpField
C
crontap-natural-language-schedules

crontap-natural-language-schedules

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

关于 crontap-natural-language-schedules

面向需要把自然语言时间表达转换为计划的用户,指导先预览 Crontap 调度并确认时区和日历规则。预览只读,创建或更新需另行确认。

主要功能

  1. 01将自然语言表达转换为调度预览
  2. 02确认 IANA 时区与日历范围
  3. 03处理歧义并再次预览
  4. 04检查夏令时前后的运行时间
  5. 05在写入前请求用户确认

适用场景

  1. 01解析“每个工作日 09:15”等时间表达
  2. 02区分普通工作日与考虑节假日的规则
  3. 03核对夏令时切换附近的后续运行时间

MCP 相关

通过 Crontap MCP 的 preview_schedule 工具生成只读预览;创建或更新计划由单独操作完成。

安装

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

$npx skills add https://github.com/crontap/skills --skill crontap-natural-language-schedules

安装后在 Claude Code 中输入/crontap-natural-language-schedules确认已加载。

详细介绍

预览自然语言日程

在其他技能创建或更新日程之前,使用此技能解析时间安排。预览操作为只读。

前置条件

使用所需工具前,先检查它们是否可用。如果缺少任何工具,请停止并只向用户提供以下两种选择:

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

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

  • 确定用户预期使用的本地时区。
  • 询问提到工作日时,是指周一至周五,还是指考虑节假日的日历。
  • 记录任何边界要求,例如开始日期或月份最后一天。

准确描述日程

优先使用包含频率、本地时间和日历范围的表述:

  • every weekday at 09:15
  • every 6 hours
  • at 02:30 every Sunday
  • on the first day of every month at 08:00

避免使用 in the morning、twice a month、month end 或未注明时区的 weekdays 等表述。五字段 cron 无法表示所有考虑节假日的规则或最后一个工作日规则。

工作流

  1. 与用户确认精确的 IANA 时区。
  2. 使用原始频率和时区调用 preview_schedule。
  3. 如果响应需要澄清,向用户展示其中的问题和选项。
  4. 根据用户的回答再次预览。
  5. 报告解析出的 cron、时区以及返回的每个下一次运行时间。
  6. 在执行任何单独的创建或更新操作前,先征求用户确认。

MCP 示例

{
  "tool": "preview_schedule",
  "arguments": {
    "text": "every weekday at 09:15",
    "timezone": "America/New_York"
  }
}

如果响应状态为 needs_clarification 或 rejected,不要保存推测出的 cron。将返回的选项视为选择,而不是授权你替用户做决定。

DST 和日历检查

  • 验证附近夏令时切换前后的下一次运行时间。
  • 指定名称的时区会保留本地挂钟时间意图。UTC 日程则会保留固定的 UTC 时间。
  • 确认 weekday 是否只排除周六和周日。
  • 对于最后一个工作日规则,安排一个安全的候选频率,并在幂等端点中进行最终日历检查。
  • 对于一次性任务,只有在确认其精确时间戳和清理行为后,才使用一次性日程。

REST 备用方案

使用公共 API 备用方案需要 Ultra API 访问权限:

curl --fail-with-body https://api.crontap.com/v1/schedule/preview \
  -X POST \
  -H "ClientId: $CRONTAP_CLIENT_ID" \
  -H "ApiKey: $CRONTAP_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{"text":"every weekday at 09:15","timezone":"America/New_York"}'

无需 Ultra 即可使用 MCP。连接后优先使用 MCP。

安全和套餐限制

  • 预览不会占用资源容量。
  • 有效的预览仍可能产生低于账户创建下限的频率。创建操作才是最终的权限检查。
  • 如果创建操作随后返回套餐限制响应,请保留其四个选项的层级,并指出满足需求的最小套餐。
  • 切勿将只读预览推断为用户同意创建。

故障排除

  • 如果表述被拒绝,请将其简化为一种频率和一个本地时间。
  • 如果 cron 看起来正确,但下一次运行时间不对,请先检查时区。
  • 如果无法表示所需的日历规则,请将该条件移至端点,并确保端点具有幂等性。

参考资料

评论

支持 Markdown