About cron-mcp
cron-mcp is a hosted or self-hosted scheduling service for agents that need prompts delivered on a recurring schedule. It stores jobs and POSTs them to a callback when their cron expression fires, without running an LLM.
Key features
- 01Create jobs from cron expressions and prompts
- 02List, inspect, update, pause, and delete jobs
- 03POST signed job payloads to callbacks
- 04Continue schedules after callback failures
- 05Hosted or Docker Compose deployment
Use cases
- 01Trigger recurring briefings through an agent
- 02Run hourly polling tasks via a callback
- 03Deliver weekly digests on a fixed schedule
MCP support
MCP clients connect to its `/api/mcp` endpoint using a Bearer API key. They can create and manage scheduled prompt jobs.
Configuration
Remote servers need no local install. Pick your client, then copy the config or install in one click.
https://cron.regiq.in/api/mcpclaude mcp add --transport http shreyas-profile-cron https://cron.regiq.in/api/mcp{"mcpServers":{"shreyas-profile-cron":{"type":"http","url":"https://cron.regiq.in/api/mcp"}}}Open in Cursor{"servers":{"shreyas-profile-cron":{"type":"http","url":"https://cron.regiq.in/api/mcp"}}}Open in VS Code{"mcpServers":{"shreyas-profile-cron":{"type":"http","url":"https://cron.regiq.in/api/mcp"}}}{"mcpServers":{"shreyas-profile-cron":{"serverUrl":"https://cron.regiq.in/api/mcp"}}}Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.
https://cron.regiq.in/api/mcpAuth requiredTools
Details
From the project READMEcron-mcp
Cron-as-a-service MCP. Schedule any prompt on any cron expression; when it fires we POST the job to your callback URL. No LLM in our stack.
Your agent (Claude Desktop, Cursor, a custom script) does the thinking. We just:
- store the schedule + prompt + your callback URL
- match minutes against the cron expression
- POST the job body to your callback, signed with
X-Cron-Signature
That's it. Perfect for daily briefings, hourly polls, weekly digests, or anything else that repeats on a fixed schedule and needs to run through an LLM.
Hosted at cron.regiq.in or self-host with the Docker Compose below.
Use it (hosted)
-
Visit https://cron.regiq.in, sign in with Google or GitHub.
-
Generate an MCP API key on the dashboard, copy it.
-
Add to Claude Desktop's
claude_desktop_config.json(or Cursor / any MCP client):{ "mcpServers": { "cron": { "url": "https://cron.regiq.in/api/mcp", "headers": { "Authorization": "Bearer YOUR_KEY_HERE" } } } } -
Have your agent call
schedule_jobwith a cron expression, a prompt, and the URL you want us to POST to when it fires.
Tools
| Tool | Purpose |
|---|---|
schedule_job(name, cron, prompt, callbackUrl, ...) | Create a scheduled prompt. |
list_jobs() | Return every job owned by the calling key. |
get_job(id) | One job + the last 20 fire attempts. |
update_job(id, ...) | Partial update. Set isActive: false to pause. |
delete_job(id) | Permanent delete. |
Webhook payload
When a job fires, we POST:
POST <your callbackUrl>
Content-Type: application/json
X-Cron-Signature: <hex-hmac-sha256-of-body>
{
"jobId": "clx...",
"name": "daily AI news briefing",
"prompt": "summarise the top 5 AI news items from the last 24h",
"metadata": { ... },
"firedAt": "2026-07-16T08:00:00.412Z"
}
Verify the signature by re-hashing the raw body with your shared signing secret (env CRON_WEBHOOK_SIGNING_SECRET) and comparing to the X-Cron-Signature header. Return any 2xx to mark the fire as ok — anything else is logged as a failure and the schedule still advances (so a failing callback won't stop future runs).
Self-host
You'll need:
- Docker + Compose
- A Google OAuth client — Cloud Console. Scopes:
openid,email,profile. Redirect:<PUBLIC_BASE_URL>/api/auth/callback/google - A public HTTPS domain (Cloudflare Tunnel or
ngrok http 3015locally)
No LLM key required. Your callback is where inference happens.
git clone https://github.com/globalion/cron-mcp
cd cron-mcp
cp .env.example .env
# fill NEXTAUTH_SECRET, GOOGLE_*, PUBLIC_BASE_URL, CRON_WEBHOOK_SIGNING_SECRET
docker compose up -d
# open http://localhost:3015
Architecture
Your agent Your callback
│ ▲
│ schedule_job(cron, prompt, │
│ callback_url) │
▼ │
┌──────────────────────────────────────────────────┐
│ cron-mcp (Hetzner) │
│ - /api/mcp Bearer-auth JSON-RPC │
│ · schedule_job, list, get, update, delete │
│ - Postgres: User, ApiKey, Job, JobRun │
│ - Scheduler loop (60s tick) — matches cron, │
│ POSTs signed webhook to callback_url, │
│ logs a JobRun row per fire. │
└──────────────────────────────────────────────────┘
│
│ POST (signed)
▼
Your callback runs the
prompt through the LLM +
tools and delivers the result.
License
MIT. See LICENSE.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.