cron-mcp
The cron-mcp server helps AI agents parse, validate, explain, and preview cron expressions to prevent common scheduling bugs. It provides four main tools:
parse_cron: Convert cron expressions into plain-English descriptions of when they fire, supporting standard 5-field syntax plus extensions like
L(last day),W(nearest weekday),#(nth weekday), and named months/days.validate_cron: Perform deep validation to catch silent failures, including impossible schedules (e.g., Feb 30), OR-semantics traps, midnight spikes, uneven steps, and leap-year edge cases. Returns warnings, suggestions, and an estimated yearly run count.
next_runs: Compute the next N future fire times (up to 50) as ISO-8601 timestamps with relative offsets (e.g., +5m), optionally from a custom start time.
cron_presets: Access a library of common, proven cron schedules (e.g., every 5 min, hourly, weekdays at 9am) for quick, reliable starting points.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@cron-mcpValidate this cron: 0 0 30 2 *"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
cron-mcp
An MCP (Model Context Protocol) server that lets AI coding agents — Claude, Cursor, Copilot, Cline — parse, validate, explain, and preview cron expressions.
Built to catch silent cron bugs (impossible schedules, OR-semantics gotchas, midnight spikes) before a job is deployed — a class of mistake that's easy to make and hard to notice until a critical job silently fails to fire.
Why
Cron expressions are deceptively tricky. Common silent failures:
0 0 30 2 *→ never runs (February has no 30th). Syntactically valid, semantically dead.0 0 1,15 * 1→ fires on the 1st OR 15th OR Monday, not "the 1st and 15th if Monday" (the classic dom+dow OR-semantics trap).*/7 * * * *→ uneven step; intervals drift (:00, :07, :14, …, :56, :00— not "every 7 minutes" cleanly).0 0 * * *→ midnight spike; every job in the system competes at 00:00.
cron-mcp surfaces these as warnings, observations, and suggestions that the AI agent can act on — before you ship the schedule.
Related MCP server: mcp-time-tools
Tools exposed
Tool | Description |
| Parse a cron expression → plain-English description of when it fires. Supports 5-field standard cron + |
| Deep validation: impossible schedules, OR-semantics, midnight spikes, uneven steps, leap-year edges, frequency estimate (~runs/year). |
| Compute the next N fire times as ISO-8601 + relative offsets. |
| Library of common, proven schedules (every 5 min, hourly, weekdays 9am, monthly, quarterly, …). |
Install
npm install -g cron-mcp-serverPublished links
npm package — installable release
0.1.2Official MCP Registry — registry record
GitHub release — downloadable source checkpoint
Configure
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or the equivalent on your OS:
{
"mcpServers": {
"cron": {
"command": "cron-mcp-server",
"args": []
}
}
}Cursor
Add to .cursor/mcp.json (or ~/.cursor/mcp.json for global):
{
"mcpServers": {
"cron": {
"command": "cron-mcp-server"
}
}
}VS Code (Copilot)
{
"mcp.servers": {
"cron": {
"type": "stdio",
"command": "cron-mcp-server"
}
}
}Direct (no install)
npx cron-mcp-serverExample usage
Once connected, just ask the agent in natural language:
"Validate this cron:
0 0 30 2 *""When does
*/5 * * * *next fire?""Give me a cron for every weekday at 9am"
"Is there anything risky about
0 0 1,15 * 1?"
The agent calls the tools and returns structured, actionable results.
Engine
The cron engine is battle-tested: 638 lines, zero dependencies, originally extracted from a browser-based cron generator and hardened with 69 unit tests. This MCP server is a thin tool wrapper around it.
License
MIT © takeaseatventure
Available Tools
4 toolscron_presetsA
Return a library of common cron expression presets (every 5 min, hourly, daily at midnight, weekdays 9am, monthly, quarterly, yearly, etc.) with their plain-English labels. Use this when a user asks for a "common" or "standard" schedule and you want to offer proven starting points.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It describes the operation as returning a library with labels, but does not disclose any potential side effects, limits, or detailed output format. Acceptable for a simple read-only tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states purpose with examples, second gives usage guidance. No unnecessary words; every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters, no output schema, and sibling tools, the description adequately covers purpose and usage. It does not detail the exact output structure, but the mention of 'plain-English labels' implies a basic format, which is sufficient for the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist (0 params, schema coverage 100%), so baseline is 4. The description adds meaning by specifying the content of the library (common presets with labels) beyond the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a library of common cron expression presets with examples (every 5 min, hourly, etc.) and explicitly distinguishes it from siblings like parse_cron, validate_cron, and next_runs by focusing on presets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance: 'Use this when a user asks for a common or standard schedule'. Does not explicitly state when not to use, but context with sibling tools implies alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
next_runsA
Compute the next N scheduled run times for a cron expression. Returns ISO-8601 timestamps with relative offsets (+5m, +1h, +2d). Use this to preview when a job will actually fire before committing it.
| Name | Required | Description | Default |
|---|---|---|---|
| from | No | ISO-8601 start time (defaults to now). | |
| count | No | How many future runs to compute (default 5, max 50). | |
| expression | Yes | The cron expression. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It only mentions return format (ISO-8601 with offsets) but lacks disclosure on side effects, error conditions, timezone handling, or any constraints beyond count max. For a read-only preview tool, more transparency is expected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler. First sentence defines action and output; second gives usage guidance. Efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 3 simple parameters and no output schema, the description adds enough context about output format and use case. Slight gap on timezone details, but overall complete for this tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all parameters (100% coverage). Description adds value by specifying that output includes relative offsets, which supplements the parameter descriptions. Baseline 3 for high coverage, plus extra meaning justifies 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool computes next scheduled run times for a cron expression. Verb 'compute' and resource 'cron expression' are specific. Sibling tools (parse_cron, validate_cron, cron_presets) have distinct purposes, and the description implies differentiation without explicit mention.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use this tool to preview when a job will fire before committing. Provides clear context, but no when-not-to-use guidance or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
parse_cronA
Parse a cron expression and return a human-readable description of when it fires. Supports 5-field standard cron (min hour dom month dow) plus extensions: L (last day/weekday), W (nearest weekday), # (nth weekday), and named months/days (JAN..DEC, SUN..SAT). Use this to explain any cron schedule in plain English.
| Name | Required | Description | Default |
|---|---|---|---|
| expression | Yes | The cron expression to parse, e.g. "*/5 * * * *" or "0 9 * * 1-5". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but the description makes clear this is a parse-only operation that produces text. It does not mention side effects or destruction, and given the nature (parsing), that is sufficient transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences that efficiently convey purpose, supported features, and usage guidance. No redundant or vague wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no required output schema), the description fully covers what the agent needs to know: what it does, what it accepts, and when to use it. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one parameter, but the schema's description is just an example. The tool's description adds valuable detail about supported extensions (L, W, #, named months/days), which helps the agent construct valid inputs beyond basic cron syntax.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool parses a cron expression and returns a human-readable description. It specifies the supported formats (5-field standard plus extensions) and explicitly says 'Use this to explain any cron schedule,' making purpose and scope clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for explaining cron schedules in plain English, which distinguishes it from siblings like validate_cron (syntax check) and next_runs (future times). However, it does not explicitly state when not to use it or provide alternatives, so a slight deduction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_cronA
Deeply validate a cron expression for correctness and common mistakes. Catches: impossible schedules (e.g. day 31 in Feb), OR-semantics gotchas (dom AND dow both restricted = either matches, not both), midnight scheduling spikes, uneven step values (*/7), leap-year edge cases, weekday-only warnings, and more. Returns warnings, observations, optimization suggestions, and an estimated yearly run count. Use this BEFORE deploying a cron job to catch silent failures.
| Name | Required | Description | Default |
|---|---|---|---|
| expression | Yes | The cron expression to validate. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes specific catches (impossible schedules, OR-semantics, etc.) and output types (warnings, observations, optimization suggestions, yearly run count). No annotations provided, so description carries burden well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then lists caught issues, then output. Slightly verbose but each sentence adds value. Could be tighter, but effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Describes various edge cases and output clearly. No output schema, but explanation of return types (warnings, observations, etc.) is sufficient for agent to understand tool behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter 'expression' with schema coverage 100%. Description adds no further detail beyond the schema description. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'validate' and resource 'cron expression', lists specific checks (impossible schedules, OR-semantics, etc.), and distinguishes from siblings like parse_cron and next_runs which have different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly recommends use 'BEFORE deploying a cron job to catch silent failures'. Context implies when not to use (when parsing or generating runs), but no explicit when-not or alternative tool names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool serves a distinct purpose: parse (human-readable description), validate (error detection), next_runs (future schedule preview), and cron_presets (common schedules). No overlaps.
All tool names follow a consistent verb_noun pattern in snake_case: parse_cron, validate_cron, next_runs, cron_presets.
With 4 tools, the server covers the essential operations for a cron utility: parsing, validation, preview, and preset library. Not too few or too many.
The tool set covers core cron tasks (parse, validate, preview, presets). Minor gaps include no tool to generate a cron expression from natural language or handle timezones explicitly, but these are not critical.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Deterministic time tools for AI agents: timezone conversion, business-day math, cron interpretation.
Validates cron expressions and finds DST bugs that make jobs silently skip or double-fire.
Cron expression parser: explains any cron + returns next N fire times. Timezone-aware.
Current time, timezone conversion & date math for AI agents. On Cloudflare Workers.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables exploration, explanation, and management of crontab entries, including translating cron expressions into plain English and calculating upcoming execution times.84MIT
- AlicenseNot gradedqualityDmaintenanceProvides date, time, and timezone tools for AI agents via MCP, including timezone conversion, date calculation, cron parsing, timestamp conversion, and duration formatting.54MIT
- AlicenseNot gradedqualityBmaintenanceParse, validate, and explain cron expressions with pay-per-call via x402 (USDC on Base L2), returning next run times in any timezone.1MIT
- AlicenseNot gradedqualityDmaintenanceParses cron expressions, returns next fire times, and provides an English description.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/takeaseatventure/cron-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server