Task scheduling for AI agents — cron, intervals, delays via MCP
Project description
schedulermcp
Task scheduling for AI agents -- cron, intervals, delays via MCP
Part of the MCP AI Suite.
Features
- Cron scheduling -- 5-field cron expressions (
*,*/N,N-M,N,M; weekday 0 = Monday) for recurring jobs - Interval and one-shot jobs -- fixed-interval repeats or single delayed execution
- Watch jobs -- event-driven triggers that monitor shell commands and fire on condition changes
- Condition evaluation -- rich condition syntax with numeric comparisons, contains, and variable interpolation
- Pluggable executors -- log, webhook, or kernel (routes job goals through kernelmcp)
- Pluggable stores -- in-memory or SQLite for job persistence across restarts
- Exponential backoff retry with configurable max failures
- Job lifecycle -- create, pause, resume, cancel, delete with full history tracking
Installation
pip install mcpaisuite-schedulermcp
# Optional extras:
pip install mcpaisuite-schedulermcp[dev] # Development tools
pip install mcpaisuite-schedulermcp[all] # All integrations
pip install mcpaisuite-schedulermcp[kernel] # KernelMCP executor integration
pip install mcpaisuite-schedulermcp[webhook] # Webhook executor
Quick Start
from schedulermcp import SchedulerFactory
scheduler = SchedulerFactory.create(store="sqlite", sqlite_path="scheduler.db")
job = await scheduler.schedule(
goal="Generate daily status report",
job_type="cron",
cron="0 9 * * *",
)
scheduler.start() # Start background tick loop
MCP Server
schedulermcp serve
Configuration
| Variable | Default | Description |
|---|---|---|
SCHEDULERMCP_STORE |
memory |
Job store: memory or sqlite |
SCHEDULERMCP_EXECUTOR |
log |
Executor: log, webhook, or kernel |
SCHEDULERMCP_SQLITE_PATH |
scheduler.db |
SQLite database path |
SCHEDULERMCP_TICK_INTERVAL |
15 |
Seconds between scheduler ticks |
API Reference
SchedulerPipeline
Manages scheduled jobs -- create, execute, track, persist.
await scheduler.schedule(goal, job_type="once", cron="", interval_seconds=0,
delay_seconds=0, namespace="default") -> Job
await scheduler.cancel(job_id) -> bool
await scheduler.pause(job_id) -> bool
await scheduler.resume(job_id) -> bool
await scheduler.list_jobs(namespace="", status="") -> list[Job]
await scheduler.get_history(job_id) -> list[JobResult]
await scheduler.stats(namespace="") -> SchedulerStats
scheduler.start() # Start background loop
scheduler.stop() # Stop background loop
SchedulerFactory
SchedulerFactory.default() # SQLite store, log executor
SchedulerFactory.from_env() # Build from environment variables
SchedulerFactory.create(store="sqlite", executor="kernel", kernel_pipeline=kernel, ...)
Architecture
SchedulerPipeline runs a background tick loop that checks for due jobs on each tick. Time-based jobs (cron, interval, once) are evaluated against their next_run timestamp. Watch jobs execute a shell command and evaluate a condition expression against the output. The pluggable executor system allows routing job execution through a simple logger (dev), a webhook endpoint, or the full kernelmcp pipeline for autonomous agent-driven execution.
Testing
pip install -e ".[dev]"
pytest tests/ -v
License
AGPL-3.0 — see LICENSE.
Open source for individuals and open-source projects. For commercial use in closed-source products, a commercial license is available — contact gaeldev@gmail.com.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mcpaisuite_schedulermcp-1.0.3.tar.gz.
File metadata
- Download URL: mcpaisuite_schedulermcp-1.0.3.tar.gz
- Upload date:
- Size: 43.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
440e4cfa85e0d7f02681d5efb575380c3283b73f0c7935aa42f58359be38f646
|
|
| MD5 |
139415448c3f213b211e17797a9aadac
|
|
| BLAKE2b-256 |
8028b9760b3a3eeb5d19804a613be06bb06e5421d880d807f2b313c46c8ce1c2
|
Provenance
The following attestation bundles were made for mcpaisuite_schedulermcp-1.0.3.tar.gz:
Publisher:
release.yml on gashel01/schedulermcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mcpaisuite_schedulermcp-1.0.3.tar.gz -
Subject digest:
440e4cfa85e0d7f02681d5efb575380c3283b73f0c7935aa42f58359be38f646 - Sigstore transparency entry: 1841160550
- Sigstore integration time:
-
Permalink:
gashel01/schedulermcp@e5300c585babc559dfeb357f31ef54a603626e7c -
Branch / Tag:
refs/tags/v1.0.3 - Owner: https://github.com/gashel01
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@e5300c585babc559dfeb357f31ef54a603626e7c -
Trigger Event:
push
-
Statement type:
File details
Details for the file mcpaisuite_schedulermcp-1.0.3-py3-none-any.whl.
File metadata
- Download URL: mcpaisuite_schedulermcp-1.0.3-py3-none-any.whl
- Upload date:
- Size: 37.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f2920302e600edec28262c29b001d3a982a8e58c3e11c321c8fa3e6d814f48dc
|
|
| MD5 |
986756e7982df5dfba8da8196c62ed84
|
|
| BLAKE2b-256 |
b9e1ddeec19b471a35b27330a998cc64903de9500948c4bb99160c5bdeb55b55
|
Provenance
The following attestation bundles were made for mcpaisuite_schedulermcp-1.0.3-py3-none-any.whl:
Publisher:
release.yml on gashel01/schedulermcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mcpaisuite_schedulermcp-1.0.3-py3-none-any.whl -
Subject digest:
f2920302e600edec28262c29b001d3a982a8e58c3e11c321c8fa3e6d814f48dc - Sigstore transparency entry: 1841160586
- Sigstore integration time:
-
Permalink:
gashel01/schedulermcp@e5300c585babc559dfeb357f31ef54a603626e7c -
Branch / Tag:
refs/tags/v1.0.3 - Owner: https://github.com/gashel01
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@e5300c585babc559dfeb357f31ef54a603626e7c -
Trigger Event:
push
-
Statement type: