使用说明
MCP调度器
一个使用模型上下文协议(MCP)构建的健壮的任务调度服务器,用于调度和管理各种类型的自动化任务。
概述
MCP Scheduler是一个多功能的任务自动化系统,允许您安排和运行不同类型的任务:
- shell命令:按计划执行系统命令
- API调用:向外部服务发出HTTP请求
- AI任务:通过OpenAI模型生成内容
- 提醒事项:显示带声音的桌面通知
调度器使用cron表达式实现灵活的定时,并提供任务执行的完整历史记录。它基于模型上下文协议(MCP)构建,使其易于与AI助手和其他兼容MCP的客户端集成。
特性
- 多种任务类型:支持shell命令、API调用、AI内容生成和桌面通知
- Cron调度:用于精确调度控制的熟悉cron语法
- 运行一次或重复运行:按计划只运行一次或重复运行任务的选项
- 执行历史:跟踪成功和失败的任务执行
- 交叉平台的:适用于Windows、macOS和Linux
- 交互式通知:用于提醒任务的带声音的桌面警报
- MCP集成:与人工智能助手和工具无缝连接
- 稳健的错误处理:全面的日志记录和错误恢复
安装
先决条件
- Python 3.10或更高版本
- 紫外线 (推荐包管理器)
安装uv(推荐)
# For Mac/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# For Windows (PowerShell)
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
安装uv后,重新启动终端以确保命令可用。
项目设置
# Clone the repository
git clone https://github.com/phialsbasement/mcp-scheduler.git
cd mcp-scheduler
# Create and activate a virtual environment with uv
uv venv
source .venv/bin/activate # On Unix/MacOS
# or
.venv\Scripts\activate # On Windows
# Install dependencies with uv
uv pip install -r requirements.txt
标准管道安装(备选)
如果你更喜欢使用标准pip:
# Clone the repository
git clone https://github.com/phialsbasement/mcp-scheduler.git
cd mcp-scheduler
# Create and activate a virtual environment
python -m venv .venv
source .venv/bin/activate # On Unix/MacOS
# or
.venv\Scripts\activate # On Windows
# Install dependencies
pip install -r requirements.txt
用法
运行服务器
# Run with default settings (stdio transport)
python main.py
# Run with server transport on specific port
python main.py --transport sse --port 8080
# Run with debug mode for detailed logging
python main.py --debug
与Claude Desktop或其他MCP客户端集成
要在Claude Desktop中使用MCP调度程序,请执行以下操作:
- 确保您已安装Claude Desktop
- 在以下位置打开您的Claude桌面应用程序配置:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - 窗户:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
- 如果文件不存在,请创建该文件,并添加您的服务器:
{
"mcpServers": [
{
"type": "stdio",
"name": "MCP Scheduler",
"command": "python",
"args": ["/path/to/your/mcp-scheduler/main.py"]
}
]
}
或者,使用 fastmcp 实用程序(如果您使用的是FastMCP库):
# Install your server in Claude Desktop
fastmcp install main.py --name "Task Scheduler"
命令行选项
--address Server address (default: localhost)
--port Server port (default: 8080)
--transport Transport mode (sse or stdio) (default: stdio)
--log-level Logging level (default: INFO)
--log-file Log file path (default: mcp_scheduler.log)
--db-path SQLite database path (default: scheduler.db)
--config Path to JSON configuration file
--ai-model AI model to use for AI tasks (default: gpt-4o)
--version Show version and exit
--debug Enable debug mode with full traceback
--fix-json Enable JSON fixing for malformed messages
配置文件
您可以使用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工具功能
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:获取服务器信息
Cron表达式指南
MCP调度器使用标准的cron表达式进行调度。以下是一些示例:
0 0 * * *-每天午夜0 */2 * * *-每2小时0 9-17 * * 1-5-周一至周五上午9点至下午5点每小时一次0 0 1 * *-每月第一天午夜0 0 * * 0-每周日午夜
环境变量
可以使用环境变量配置调度器:
MCP_SCHEDULER_NAME:服务器名称(默认值:mcp调度程序)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密钥
例子
添加Shell命令任务
await scheduler.add_command_task(
name="Backup Database",
schedule="0 0 * * *", # Midnight every day
command="pg_dump -U postgres mydb > /backups/mydb_$(date +%Y%m%d).sql",
description="Daily database backup",
do_only_once=False # Recurring task
)
添加API任务
await scheduler.add_api_task(
name="Fetch Weather Data",
schedule="0 */6 * * *", # Every 6 hours
api_url="https://api.weather.gov/stations/KJFK/observations/latest",
api_method="GET",
description="Get latest weather observations",
do_only_once=False
)
添加AI任务
await scheduler.add_ai_task(
name="Generate Weekly Report",
schedule="0 9 * * 1", # 9 AM every Monday
prompt="Generate a summary of the previous week's sales data.",
description="Weekly sales report generation",
do_only_once=False
)
添加提醒任务
await scheduler.add_reminder_task(
name="Team Meeting",
schedule="30 9 * * 2,4", # 9:30 AM every Tuesday and Thursday
message="Don't forget the team standup meeting!",
title="Meeting Reminder",
do_only_once=False
)
MCP自动发现端点
在SSE(HTTP)模式下运行时,MCP调度器会公开一个众所周知的端点用于工具/模式自动发现:
- 端点:
/.well-known/mcp-schema.json(在HTTP端口+1上,例如,如果您的服务器在8080上运行,则模式在8081上) - 目的: 允许客户端和AI助手自动发现所有可用的MCP工具及其参数。
示例
如果你跑步:
python main.py --transport sse --port 8080
您可以在以下位置访问架构:
http://localhost:8081/.well-known/mcp-schema.json
示例响应
{
"tools": [
{
"name": "list_tasks",
"description": "List all scheduled tasks.",
"endpoint": "list_tasks",
"method": "POST",
"parameters": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}
},
{
"name": "add_command_task",
"description": "Add a new shell command task.",
"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
}
}
// ... more tools ...
]
}
此模式由注册的MCP工具自动生成,并始终反映当前的服务器功能。
发展
如果你想进一步贡献或开发MCP调度器,这里有一些额外的命令:
# Install the MCP SDK for development
uv pip install "mcp[cli]>=1.4.0"
# Or for FastMCP (alternative implementation)
uv pip install fastmcp
# Testing your MCP server
# With the MCP Inspector tool
mcp inspect --stdio -- python main.py
# Or with a simple MCP client
python -m mcp.client.stdio python main.py
贡献
欢迎投稿!请随时提交拉取请求。
- 分叉存储库
- 创建功能分支(
git checkout -b feature/amazing-feature) - 提交您的更改(
git commit -m 'Add some amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求
许可证
此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。
致谢
- 建立在 模型上下文协议
- 用途 裙带关系者 用于cron解析
- 用途 OpenAI API 用于AI任务
- 用途 FastMCP 用于增强MCP功能
