一个基于模型上下文协议(MCP)构建的强大任务调度服务器,用于调度和管理各种类型的自动化任务。
MCP 调度器是一个多功能的任务自动化系统,允许您安排并运行不同类型的任务:
调度器使用 cron 表达式进行灵活的时间控制,并提供完整的任务执行历史记录。它基于模型上下文协议(MCP)构建,使其易于与 AI 助手和其他兼容 MCP 的客户端集成。
# 对于 Mac/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# 对于 Windows(PowerShell)
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
安装 uv 后,请重启终端以确保命令可用。
# 克隆仓库
git clone https://github.com/phialsbasement/mcp-scheduler.git
cd mcp-scheduler
# 使用 uv 创建并激活虚拟环境
uv venv
source .venv/bin/activate # 在 Unix/macOS 上
# 或者
.venv\Scripts\activate # 在 Windows 上
# 使用 uv 安装依赖项
uv pip install -r requirements.txt
如果您更喜欢使用标准 pip:
# 克隆仓库
git clone https://github.com/phialsbasement/mcp-scheduler.git
cd mcp-scheduler
# 创建并激活虚拟环境
python -m venv .venv
source .venv/bin/activate # 在 Unix/macOS 上
# 或者
.venv\Scripts\activate # 在 Windows 上
# 安装依赖项
pip install -r requirements.txt
# 使用默认设置运行(stdio 传输模式)
python main.py
# 在特定端口上使用服务器传输模式运行
python main.py --transport sse --port 8080
# 使用调试模式运行以获取详细的日志记录
python main.py --debug
要将您的 MCP 调度器与 Claude Desktop 结合使用:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json{
"mcpServers": [
{
"type": "stdio",
"name": "MCP 调度器",
"command": "python",
"args": ["/path/to/your/mcp-scheduler/main.py"]
}
]
}
或者,如果您使用的是 FastMCP 库,可以使用 fastmcp 工具:
# 将您的服务器安装到 Claude Desktop
fastmcp install main.py --name "任务调度器"
--address 服务器地址(默认:localhost)
--port 服务器端口(默认:8080)
--transport 传输模式(sse 或 stdio)(默认:stdio)
--log-level 日志级别(默认:INFO)
--log-file 日志文件路径(默认:mcp_scheduler.log)
--db-path SQLite 数据库路径(默认:scheduler.db)
--config JSON 配置文件路径
--ai-model 用于 AI 任务的 AI 模型(默认:gpt-4o)
--version 显示版本信息并退出
--debug 启用调试模式,带完整回溯
--fix-json 启用畸形消息的 JSON 修复
您可以使用 JSON 配置文件代替命令行参数:
{
"server": {
"name": "mcp-scheduler",
"version": "0.1.0",
"address": "localhost",
"port": 8080,
"transport": "sse"
},
"database": {
"path": "scheduler.db"
},
"logging": {
"level": "INFO",
"file": "mcp_scheduler.log"
},
"scheduler": {
"check_interval": 5,
"execution_timeout": 300
},
"ai": {
"model": "gpt-4o",
"openai_api_key": "your-api-key"
}
}
MCP 调度器提供了以下工具:
list_tasks:获取所有已安排的任务get_task:获取特定任务的详细信息add_command_task:添加一个新的 Shell 命令任务add_api_task:添加一个新的 API 调用任务add_ai_task:添加一个新的 AI 任务add_reminder_task:添加一个新的带有桌面通知的提醒任务update_task:更新现有任务remove_task:删除任务enable_task:启用已禁用的任务disable_task:禁用活动任务run_task_now:立即运行任务get_task_executions:获取任务的执行历史get_server_info:获取服务器信息MCP 调度器使用标准的 cron 表达式进行调度。这里有一些例子:
0 0 * * * - 每天午夜0 */2 * * * - 每 2 小时0 9-17 * * 1-5 - 每周一至周五从上午 9 点到下午 5 点每小时0 0 1 * * - 每月第一天午夜0 0 * * 0 - 每周日午夜调度器可以通过环境变量进行配置:
MCP_SCHEDULER_NAME:服务器名称(默认:mcp-scheduler)MCP_SCHEDULER_VERSION:服务器版本(默认:0.1.0)MCP_SCHEDULER_ADDRESS:服务器地址(默认:localhost)MCP_SCHEDULER_PORT:服务器端口(默认:8080)MCP_SCHEDULER_TRANSPORT:传输模式(默认:stdio)MCP_SCHEDULER_LOG_LEVEL:日志级别(默认:INFO)MCP_SCHEDULER_LOG_FILE:日志文件路径MCP_SCHEDULER_DB_PATH:数据库路径(默认:scheduler.db)MCP_SCHEDULER_CHECK_INTERVAL:检查任务的频率(默认:5 秒)MCP_SCHEDULER_EXECUTION_TIMEOUT:任务执行超时时间(默认:300 秒)MCP_SCHEDULER_AI_MODEL:用于 AI 任务的 OpenAI 模型(默认:gpt-4o)OPENAI_API_KEY:用于 OpenAI 任务的 API 密钥await scheduler.add_command_task(
name="备份数据库",
schedule="0 0 * * *", # 每天午夜
command="pg_dump -U postgres mydb > /backups/mydb_$(date +%Y%m%d).sql",
description="每日数据库备份",
do_only_once=False # 循环任务
)
await scheduler.add_api_task(
name="获取天气数据",
schedule="0 */6 * * *", # 每 6 小时
api_url="https://api.weather.gov/stations/KJFK/observations/latest",
api_method="GET",
description="获取最新的天气观测数据",
do_only_once=False
)
await scheduler.add_ai_task(
name="生成每周报告",
schedule="0 9 * * 1", # 每周一上午 9 点
prompt="生成上周销售数据的总结。",
description="每周销售报告生成",
do_only_once=False
)
await scheduler.add_reminder_task(
name="团队会议",
schedule="30 9 * * 2,4", # 每周二和周四上午 9:30
message="别忘了团队站会!",
title="会议提醒",
do_only_once=False
)
当在 SSE(HTTP)模式下运行时,MCP 调度器暴露了一个众所周知的端点,用于工具/模式的自动发现:
/.well-known/mcp-schema.json(在 HTTP 端口 + 1 上,例如,如果您的服务器运行在 8080 端口,则模式位于 8081 端口)如果您运行:
python main.py --transport sse --port 8080
您可以访问模式:
http://localhost:8081/.well-known/mcp-schema.json
{
"tools": [
{
"name": "list_tasks",
"description": "列出所有已安排的任务。",
"endpoint": "list_tasks",
"method": "POST",
"parameters": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}
},
{
"name": "add_command_task",
"description": "添加一个新的 Shell 命令任务。",
"endpoint": "add_command_task",
"method": "POST",
"parameters": {
"type": "object",
"properties": {
"name": {"type": "string"},
"schedule": {"type": "string"},
"command": {"type": "string"},
"description": {"type": "string"},
"enabled": {"type": "boolean"},
"do_only_once": {"type": "boolean"}
},
"required": ["name", "schedule", "command"],
"additionalProperties": false
}
}
// ... 更多工具 ...
]
}
此模式是根据注册的 MCP 工具自动生成的,并始终反映当前服务器的功能。
如果您想贡献或进一步开发 MCP 调度器,这里有一些额外的命令:
# 安装 MCP SDK 用于开发
uv pip install "mcp[cli]>=1.4.0"
# 或者对于 FastMCP(另一种实现)
uv pip install fastmcp
# 测试您的 MCP 服务器
# 使用 MCP Inspector 工具
mcp inspect --stdio -- python main.py
# 或使用简单的 MCP 客户端
python -m mcp.client.stdio python main.py
欢迎贡献!请随意提交拉取请求。
git checkout -b feature/amazing-feature)git commit -m '添加一些精彩功能')git push origin feature/amazing-feature)本项目采用 MIT 许可证 - 详情见 LICENSE 文件。