CronSpell

Validate and explain cron expressions; list next/previous run times in any time zone, DST-aware.

我该使用它吗

质量与安全性

A
描述质量
100%
模式完整度
100%
命名质量
90%
投毒风险
100%
权限匹配度
100%
协议合规性
100%

基于对工具定义和协议合规性的自动分析。

上下文开销

~1,817token 数(工具定义)
~3.6 KB典型响应大小
对注意力有中等影响(占 128k 上下文窗口的 1.42%)

这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。

安装

一键安装

将以下内容添加到你的 `claude_desktop_config.json` 文件中:

{
  "mcpServers": {
    "cronspell": {
      "url": "https://cronspell.mike-tusa.workers.dev/mcp"
    }
  }
}

远程端点

https://cronspell.mike-tusa.workers.dev/mcpstreamable-http

它能做什么

工具清单

工具(4)

🟢 只读🟡 写入🔴 删除⚪ 未知
🟢validate_cron(expression)

Check whether a cron expression is valid. Returns valid true with the expanded values of every field (minute, hour, day of month, month, day of week, and seconds for 6-field expressions), or valid false with an error code, the field at fault and a message. Detects schedules that can never run (e.g. February 30). Read-only. Same engine as GET /api/validate.

输入模式

{
  "type": "object",
  "properties": {
    "expression": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Cron expression, e.g. \"0 9 * * 1-5\", \"*/15 * * * *\", \"0 30 8 * * *\" (6 fields = leading seconds) or \"@daily\"."
    }
  },
  "required": [
    "expression"
  ],
  "additionalProperties": false
}

输出模式

{
  "type": "object",
  "properties": {
    "valid": {
      "type": "boolean"
    },
    "expression": {
      "type": "string"
    },
    "normalized": {
      "type": "string"
    },
    "format": {
      "type": "string",
      "enum": [
        "standard",
        "seconds",
        "shorthand"
      ]
    },
    "dayMatching": {
      "type": "string",
      "enum": [
        "or",
        "and"
      ]
    },
    "fields": {
      "type": "object"
    },
    "description": {
      "type": "string"
    },
    "error": {
      "type": "object",
      "properties": {
        "code": {
          "type": "string"
        },
        "message": {
          "type": "string"
        },
        "field": {
          "type": "string"
        }
      },
      "required": [
        "code",
        "message"
      ]
    },
    "version": {
      "type": "string"
    }
  },
  "required": [
    "valid",
    "expression",
    "version"
  ]
}
🟢explain_cron(expression)

Explain a cron expression in plain English, e.g. "0 9 * * 1-5" → "At 09:00, on Monday through Friday." Also returns notes on cron rules that often surprise people (day-of-month OR day-of-week, seconds field, shorthand expansion). Invalid expressions return isError with the reason. Read-only. Same engine as GET /api/explain.

输入模式

{
  "type": "object",
  "properties": {
    "expression": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Cron expression, e.g. \"0 9 * * 1-5\", \"*/15 * * * *\", \"0 30 8 * * *\" (6 fields = leading seconds) or \"@daily\"."
    }
  },
  "required": [
    "expression"
  ],
  "additionalProperties": false
}

输出模式

{
  "type": "object",
  "properties": {
    "expression": {
      "type": "string"
    },
    "normalized": {
      "type": "string"
    },
    "description": {
      "type": "string"
    },
    "format": {
      "type": "string"
    },
    "dayMatching": {
      "type": "string"
    },
    "notes": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "version": {
      "type": "string"
    }
  },
  "required": [
    "expression",
    "description",
    "version"
  ]
}
🟢next_cron_runs(expression, timezone, count, from, direction)

List the next (or, with direction "previous", the most recent past) run times of a cron expression in an IANA time zone, DST-aware. Each run has the local time with its UTC offset, the UTC time, unix seconds and weekday. Default 5 runs, max 20; searches up to 50 years. Read-only. Same engine as GET /api/next and GET /api/previous.

输入模式

{
  "type": "object",
  "properties": {
    "expression": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Cron expression, e.g. \"0 9 * * 1-5\", \"*/15 * * * *\", \"0 30 8 * * *\" (6 fields = leading seconds) or \"@daily\"."
    },
    "timezone": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "pattern": "^[A-Za-z0-9_+\\-/]+$",
      "default": "UTC",
      "description": "IANA time zone the schedule runs in, e.g. \"America/Denver\", \"Europe/London\". Default UTC."
    },
    "count": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20,
      "default": 5,
      "description": "How many runs (1-20)."
    },
    "from": {
      "type": "string",
      "maxLength": 40,
      "description": "Start point (exclusive); default now. ISO 8601 with Z or an offset (2026-11-01T09:00:00Z), a local time read in the time zone (2026-11-01T09:00), or unix seconds."
    },
    "direction": {
      "type": "string",
      "enum": [
        "next",
        "previous"
      ],
      "default": "next",
      "description": "\"next\" (default) or \"previous\" (most recent first)."
    }
  },
  "required": [
    "expression"
  ],
  "additionalProperties": false
}

输出模式

{
  "type": "object",
  "properties": {
    "expression": {
      "type": "string"
    },
    "normalized": {
      "type": "string"
    },
    "timezone": {
      "type": "string"
    },
    "description": {
      "type": "string"
    },
    "runs": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "time": {
            "type": "string",
            "description": "Local ISO 8601 time with UTC offset"
          },
          "utc": {
            "type": "string"
          },
          "unix": {
            "type": "number"
          },
          "weekday": {
            "type": "string"
          },
          "offset": {
            "type": "string"
          },
          "dst": {
            "type": "string",
            "enum": [
              "repeated"
            ]
          }
        },
        "required": [
          "time",
          "utc",
          "unix",
          "weekday",
          "offset"
        ]
      }
    },
    "complete": {
      "type": "boolean"
    },
    "notes": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "version": {
      "type": "string"
    },
    "from": {
      "type": "string"
    },
    "direction": {
      "type": "string"
    }
  },
  "required": [
    "expression",
    "timezone",
    "runs",
    "complete",
    "notes",
    "version"
  ]
}
🟢cron_runs_between(expression, timezone, start, end, limit)

List every run of a cron expression between start and end (both inclusive) in an IANA time zone, DST-aware, oldest first. Default limit 20, max 100; truncated is true when there are more. Read-only. Same engine as GET /api/between.

输入模式

{
  "type": "object",
  "properties": {
    "expression": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Cron expression, e.g. \"0 9 * * 1-5\", \"*/15 * * * *\", \"0 30 8 * * *\" (6 fields = leading seconds) or \"@daily\"."
    },
    "timezone": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "pattern": "^[A-Za-z0-9_+\\-/]+$",
      "default": "UTC",
      "description": "IANA time zone the schedule runs in, e.g. \"America/Denver\", \"Europe/London\". Default UTC."
    },
    "start": {
      "type": "string",
      "minLength": 1,
      "maxLength": 40,
      "description": "Window start (inclusive). ISO 8601 with Z or an offset (2026-11-01T09:00:00Z), a local time read in the time zone (2026-11-01T09:00), or unix seconds."
    },
    "end": {
      "type": "string",
      "minLength": 1,
      "maxLength": 40,
      "description": "Window end (inclusive). ISO 8601 with Z or an offset (2026-11-01T09:00:00Z), a local time read in the time zone (2026-11-01T09:00), or unix seconds."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 20,
      "description": "Max runs to return (1-100)."
    }
  },
  "required": [
    "expression",
    "start",
    "end"
  ],
  "additionalProperties": false
}

输出模式

{
  "type": "object",
  "properties": {
    "expression": {
      "type": "string"
    },
    "normalized": {
      "type": "string"
    },
    "timezone": {
      "type": "string"
    },
    "description": {
      "type": "string"
    },
    "runs": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "time": {
            "type": "string",
            "description": "Local ISO 8601 time with UTC offset"
          },
          "utc": {
            "type": "string"
          },
          "unix": {
            "type": "number"
          },
          "weekday": {
            "type": "string"
          },
          "offset": {
            "type": "string"
          },
          "dst": {
            "type": "string",
            "enum": [
              "repeated"
            ]
          }
        },
        "required": [
          "time",
          "utc",
          "unix",
          "weekday",
          "offset"
        ]
      }
    },
    "complete": {
      "type": "boolean"
    },
    "notes": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "version": {
      "type": "string"
    },
    "start": {
      "type": "string"
    },
    "end": {
      "type": "string"
    },
    "truncated": {
      "type": "boolean"
    }
  },
  "required": [
    "expression",
    "timezone",
    "runs",
    "truncated",
    "notes",
    "version"
  ]
}

社区

评价此服务器

证据

最近观测

已验证未记录版本4 个工具