claude-cron
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., "@claude-cronschedule a reminder to water the plants tomorrow at 9am"
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.
Claude Cron
Deferred tasks for AI coding assistants. MCP server + daemon that allows any AI coding assistant to schedule tasks for the future.
How does this compare to
/loop? Claude Code 2.1.71 added/loopfor in-session recurring tasks. It's great for ephemeral monitoring but dies when you close the terminal. claude-cron runs as an OS daemon — your tasks survive reboots and execute while you sleep. Read the full comparison.
Quickstart
bun install
bun test # 38 tests
bun run typecheck # tsc --noEmitRelated MCP server: Claude Runner MCP
Claude Code Configuration
Add to ~/.claude/settings.json:
{
"mcpServers": {
"claude-cron": {
"command": "bun",
"args": ["run", "/Users/fernando/code/claude-cron/src/index.ts"],
"env": {
"CLAUDE_CRON_DB": "/Users/fernando/.claude/claude-cron.sqlite",
"GMAIL_ADDRESS": "frr@keepcoding.io",
"GMAIL_APP_PASSWORD": "op://FRR DEV/...",
"NTFY_TOPIC": "claude-cron-frr-xxx",
"NTFY_URL": "https://ntfy.sh"
}
}
}
}Architecture
AI Assistant (Claude Code / Codex / Copilot)
│ stdio (MCP protocol)
▼
MCP Server (src/index.ts) ← Task CRUD
│ SQLite (WAL mode)
▼
Runner / Daemon (src/runner.ts) ← Loop: executes due tasks
├─ reminder → notification + email + push
├─ shell → Bun.spawn(command)
├─ claude → claude -p --output-format text "prompt"
├─ codex → codex --quiet "prompt"
└─ copilot → gh copilot suggest "prompt"MCP Tools
Tool | Description |
| Schedule a task for the future |
| List tasks (filter by status, upcoming, tags) |
| Cancel a task by ID |
| Mark a task for immediate execution |
| Register the runner as an OS service |
schedule_task
{
name: "Nightly tests",
type: "shell", // reminder | shell | claude | codex | copilot
when: "daily at 3:00", // see "When expressions" below
payload: {
command: "cd ~/code/bfclaude && make test", // shell
// message: "...", // reminder
// prompt: "...", // claude/codex/copilot
// model: "haiku",
// workingDir: "/path",
// maxBudgetUsd: 0.10,
},
notify: ["notification", "email", "push"],
notifyTo: "frr@keepcoding.io",
tags: ["ci"],
}when Expressions
Type | Examples |
Natural language |
|
Cron (5 fields) |
|
ISO 8601 |
|
Shortcuts |
|
Parsing: chrono-node (natural) + croner (cron) + regex (shortcuts). Shortcuts are evaluated before chrono-node so that "every monday at 8" is not interpreted as a single date.
Structure
src/
├── index.ts # MCP server entry point (5 tools)
├── runner.ts # Daemon: oneshot (launchd) or --loop (dev)
├── queue.ts # SQLite: schema, CRUD, getDueTasks
├── scheduler.ts # parseWhen(): chrono-node + croner + shortcuts
├── adapters/
│ ├── types.ts # AIAdapter interface
│ ├── claude.ts # claude -p --output-format text
│ ├── codex.ts # codex --quiet (stub)
│ └── copilot.ts # gh copilot suggest (stub)
├── notify/
│ ├── types.ts # NotificationAdapter interface
│ ├── desktop.ts # node-notifier (cross-platform)
│ ├── email.ts # Direct SMTP to Gmail (TLS 465)
│ └── push.ts # ntfy.sh (mobile + Apple Watch)
└── daemon/
├── types.ts # DaemonInstaller interface
├── detect.ts # process.platform → installer
├── launchd.ts # macOS: ~/Library/LaunchAgents/
├── systemd.ts # Linux: ~/.config/systemd/user/
└── schtasks.ts # Windows: Task SchedulerRunner
Two modes:
# Oneshot (for launchd StartInterval / systemd timer)
bun run src/runner.ts
# Continuous loop (for dev or KeepAlive)
bun run src/runner.ts --loopThe daemon reads SQLite every 60s (configurable via CLAUDE_CRON_INTERVAL), executes due tasks, and sends notifications.
Cron tasks are automatically rescheduled after completion (next_run recalculated). One-off tasks transition to completed or failed.
Daemon
# Install (from Claude Code via MCP tool install_daemon, or manually):
# macOS:
bun run src/daemon/launchd.ts # generates plist + launchctl load
# Verify
launchctl list | grep claude-cron
tail -f ~/Library/Logs/claude-cron.log
# Uninstall
launchctl unload ~/Library/LaunchAgents/com.claude-cron.runner.plistNotifications
Channel | Requirements | Env vars |
Desktop | node-notifier (included) | — |
Gmail App Password |
| |
Push (ntfy) | ntfy app on mobile/watch |
|
SQLite Schema
tasks (
id TEXT PRIMARY KEY, -- nanoid 12 chars
name, type, status, -- type: reminder|shell|claude|codex|copilot
run_at INTEGER, -- Unix ts (one-off)
cron TEXT, -- Cron expression (recurring)
payload TEXT, -- JSON per type
notify_via TEXT, -- JSON array: ["notification","email","push"]
notify_to TEXT, -- Destination email
next_run, last_run, -- Timestamps
run_count, last_result, -- Executions + JSON result
created_at, created_by, tags -- Metadata
)Dependencies
@modelcontextprotocol/sdk— MCP protocolchrono-node— Natural language → Datecroner— Cron parsing + next runnanoid— Short IDsnode-notifier— Cross-platform desktop notificationszod— MCP input validationbun:sqlite— built-in, zero deps
TODO
Configure MCP in real settings.json and test end-to-end
Install daemon with
install_daemonand verify full cycleSet up ntfy for push to mobile/watch
npm publish (name TBD)
CI with tests on macOS + Linux
README with real usage GIFs
This server cannot be installed
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 Servers
- Alicense-qualityDmaintenanceA robust task scheduler server built with Model Context Protocol for scheduling and managing various types of automated tasks including shell commands, API calls, AI tasks, and reminders.Last updated4MIT
- Alicense-qualityDmaintenanceAn MCP server for scheduling and executing Claude Code CLI tasks via cron expressions, featuring a web dashboard and webhook support. It enables users to dynamically create custom MCP servers, manage recurring AI jobs, and track execution history with token and cost analytics.Last updated24MIT
- Alicense-qualityCmaintenanceA portable MCP server that provides a shared persistent working state for AI coding agents, managing tasks, plans, notepads, memory, and project rules across different tools like Claude Code, OpenCode, and Cursor.Last updated10MIT
- Alicense-qualityBmaintenanceA hosted remote MCP server that lets your AI agent schedule tasks for later — reminders, delayed webhook callbacks, and recurring jobs. Read-only by design.Last updated5MIT
Related MCP Connectors
Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
MCP server for generating rough-draft project plans from natural-language prompts.
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/frr149/claude-cron'
If you have feedback or need assistance with the MCP directory API, please join our Discord server