Crontab MCP服务器
一个模型上下文协议(MCP)服务器,用于通过节点crontab库管理cron作业。此服务器使LLM能够通过MCP协议创建、读取、更新和删除cron作业。
特性
- 创建cron作业 具有自定义计划和命令
- 列出所有作业 具有过滤和分页功能
- 获得特定工作 按标识符列出的详细信息
- 更新现有作业 (计划、命令或评论)
- 删除作业 按标识符或命令模式
- 对两者的支持 JSON和Markdown 输出格式
- 特别日程 支持(@reboot、@每日、@每周等)
- 多用户支持 (具有sudo权限)
安装
npm install
npm run build工具
服务器公开了五个MCP工具:
1. crontab_list_jobs
列出所有带有可选过滤和分页的cron作业。
参数:
limit(数字,可选):要返回的最大作业数(1-100,默认值:50)offset(数字,可选):分页偏移量(默认值:0)filter_command(字符串,可选):按命令模式过滤(正则表达式)filter_comment(字符串,可选):按注释模式过滤(正则表达式)user(string,可选):目标用户的crontab(需要sudo)response_format('markdown'|'json',可选):输出格式(默认:'markdown')
例子:
{
"limit": 10,
"filter_comment": "backup"
}2. crontab_get_job
通过注释/标识符检索特定作业的详细信息。
参数:
comment(字符串,必填):作业标识符user(string,可选):目标用户的crontab(需要sudo)response_format('markdown'|'json',可选):输出格式(默认:'markdown')
例子:
{
"comment": "daily-backup"
}3. crontab_create_job
使用命令和可选计划创建新的cron作业。
参数:
command(string,必填):要执行的Shell命令schedule(字符串,可选):Cron表达式(例如“0 2\*\*\*”)或特殊计划(@day、@hourly、@week、@month、@year、@reboot、@middle、@yearly)comment(字符串,可选):作业标识符,便于参考user(string,可选):目标用户的crontab(需要sudo)response_format('markdown'|'json',可选):输出格式(默认:'markdown')
例子:
{
"command": "/usr/local/bin/backup.sh",
"schedule": "0 2 * * *",
"comment": "daily-backup"
}4. crontab_update_job
更新现有cron作业的命令、计划或注释。
参数:
comment(字符串,必填):当前作业标识符new_command(字符串,可选):新建命令new_schedule(字符串,可选):新计划new_comment(字符串,可选):新标识符user(string,可选):目标用户的crontab(需要sudo)response_format('markdown'|'json',可选):输出格式(默认:'markdown')
例子:
{
"comment": "daily-backup",
"new_schedule": "0 3 * * *"
}5. crontab_delete_job
通过注释或命令删除一个或多个cron作业。
参数:
comment(字符串,可选):要删除的作业标识符command(字符串,可选):删除命令模式(完全匹配)user(string,可选):目标用户的crontab(需要sudo)
至少一个 comment 或 command 必须提供。
例子:
{
"comment": "daily-backup"
}Cron计划格式
标准Cron表达式
五个字段: minute hour day-of-month month day-of-week
┌───────────── minute (0 - 59)
│ ┌───────────── hour (0 - 23)
│ │ ┌───────────── day of month (1 - 31)
│ │ │ ┌───────────── month (1 - 12)
│ │ │ │ ┌───────────── day of week (0 - 7) (Sunday is 0 or 7)
│ │ │ │ │
* * * * *示例:
0 2 * * *-每天凌晨2:00跑步*/15 * * * *-每15分钟跑一次0 9-17 * * 1-5-工作日上午9点至下午5点每小时运行一次0 0 1 * *-每月第一天午夜跑步
特殊时间表
@reboot-系统启动时运行一次@hourly-每小时跑一次@daily或@midnight-每天午夜跑一次@weekly-每周在周日午夜跑步一次@monthly-每月第一天午夜跑一次@yearly或@annually-每年1月1日午夜跑步一次
与MCP客户端一起使用
克劳德桌面
添加到您的 claude_desktop_config.json:
{
"mcpServers": {
"crontab": {
"command": "node",
"args": ["/path/to/crontab-mcp/dist/index.js"]
}
}
}其他MCP客户端
服务器使用stdio传输,可以与任何支持stdio的MCP客户端集成。
响应格式
Markdown格式(默认)
带有格式化文本的人类可读输出:
# Cron Jobs
Found 2 jobs (showing 2)
## daily-backup
- **Schedule**: `0 2 * * *` (Cron schedule: 0 2 * * *)
- **Command**: /usr/local/bin/backup.sh
- **Comment**: daily-backup
- **Enabled**: Yes
## weekly-cleanup
- **Schedule**: `@weekly` (Weekly at midnight Sunday)
- **Command**: rm -rf /tmp/old_files
- **Comment**: weekly-cleanup
- **Enabled**: YesJSON格式
用于程序化处理的结构化数据:
{
"total": 2,
"count": 2,
"offset": 0,
"jobs": [
{
"command": "/usr/local/bin/backup.sh",
"schedule": "0 2 * * *",
"comment": "daily-backup",
"enabled": true
},
{
"command": "rm -rf /tmp/old_files",
"schedule": "@weekly",
"comment": "weekly-cleanup",
"enabled": true
}
],
"has_more": false
}错误处理
服务器提供清晰、可操作的错误消息:
- 权限不足:表示访问crontab的权限不足
- 计划无效:显示正确的语法并列出有效的特殊计划
- 找不到作业:建议使用
crontab_list_jobs寻找可用的工作 - 重复评论:建议使用
crontab_update_job或选择其他标识符
需求
- Node.js>=18
- 安装了cron的系统
- 管理crontab的适当权限
发展
# Install dependencies
npm install
# Build TypeScript
npm run build
# Development mode with auto-reload
npm run dev
# Clean build artifacts
npm run clean安全考虑
- 服务器需要适当的系统权限来管理crontab
- 多用户操作(使用
user参数)需要sudo权限 - 所有作业删除都是永久性的,无法撤消
- 输入验证可防止常见的注入攻击
许可证
麻省理工学院
作者
根据MCP最佳实践,使用MCP Builder技能创建。
