CronSpell
Validate and explain cron expressions; list next/previous run times in any time zone, DST-aware.
Sollte ich dies verwenden
Qualität und Sicherheit
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"cronspell": {
"url": "https://cronspell.mike-tusa.workers.dev/mcp"
}
}
}Remote-Endpunkte
https://cronspell.mike-tusa.workers.dev/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (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.
Eingabe-Schema
{
"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
}Ausgabe-Schema
{
"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.
Eingabe-Schema
{
"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
}Ausgabe-Schema
{
"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.
Eingabe-Schema
{
"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
}Ausgabe-Schema
{
"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.
Eingabe-Schema
{
"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
}Ausgabe-Schema
{
"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"
]
}Community
Nachweis