Token导航 LogoToken导航TokenDH.com
Claude scheduler logo
开发工具stdio官方级别未说明来源级核验

Claude scheduler

MCP Server

一个命令行工具,用于定时或周期性调度Claude Code SDK任务执行,支持MCP服务器访问和细粒度权限控制。

工具数

0

提示词数

0

GitHub Stars

1

资源数

0
命令行工具PythonClaude权限管理Claude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

claude-scheduler

提供方

claude-scheduler

最后核验

2026/5/17 20:22

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python3 -m venv venv

详细介绍

克劳德调度程序

安排Claude Code代理在特定时间或定期运行,具有可选的MCP服务器访问和精细的权限控制。

概述

Claude Scheduler是一个命令行工具,允许您安排Claude Code SDK任务在无人值守的情况下运行。你可以:

  • 在特定时间安排一次性任务(例如“下午2:30”)
  • 按时间间隔(例如每3600秒)安排重复任务
  • 加载MCP服务器以访问工具(电子邮件、日历、任务管理器等)
  • 预先授权用于无人值守执行的特定工具

安装

# Clone/download the project
cd claude_scheduler

# Create and activate virtual environment
python3 -m venv venv
source venv/bin/activate

# Install dependencies
pip install -r requirements.txt

快速开始

# Run the scheduler
python3 main.py

# Schedule a task
> schedule 2:30PM --mcps lookout --allow Send Alice a dad joke

# List scheduled tasks
> list

# Exit (saves state)
> exit

命令

命令描述
schedule在特定时间安排任务
periodic安排定期任务
list显示所有计划任务
unschedule按索引删除任务
save-prompt将任务提示保存到文件
mcps列出可用的MCP服务器
save将计划保存到磁盘
reload从磁盘重新加载计划
help显示帮助(使用 help 详情)
exit保存状态并退出

命令语法

日程

在特定时间安排Claude任务。

schedule  [options] 

选项:

  • --mcps name1,name2 -加载指定的MCP服务器
  • --cwd /path -设置工作目录(继承项目上下文)
  • --prompt-file /path -从文件读取提示(用于长提示)
  • --allow -预先授权所有加载的MCP,以便无人值守执行
  • --allow patterns -仅预先授权特定工具

示例:

# Basic task (will prompt for permissions if needed)
> schedule 9:00AM Check the weather

# With MCP, authorize all its tools
> schedule 2:30PM --mcps lookout --allow Send Alice a dad joke

# Authorize only specific tool
> schedule 9:00AM --mcps lookout --allow lookout:read_inbox Check my morning emails

# Multiple specific tools
> schedule 10:00AM --mcps lookout --allow lookout:read_inbox,lookout:send_mail Read and reply to urgent emails

# Wildcard tool patterns
> schedule 3:00PM --mcps lookout --allow lookout:mail_* Handle all mail tasks

# Multiple MCPs, authorize only one
> schedule 12:00PM --mcps lookout,aidderall --allow aidderall Summarize my tasks

# Long prompt from file (bypasses shell line length limits)
> schedule 9:00AM --mcps lookout --allow --prompt-file ~/prompts/morning_briefing.txt

周期性的

安排一个重复的Claude任务。

periodic  [options] 

示例:

# Every hour, check tasks
> periodic 3600 --mcps aidderall --allow Summarize my open tasks

# Every 5 minutes, check for urgent emails
> periodic 300 --mcps lookout --allow lookout:read_inbox Check for urgent emails

# Long prompt from file
> periodic 900 --mcps lookout --allow --prompt-file ~/prompts/calendar_check.txt

列表

显示所有计划任务及其索引、计划和选项。

> list

Scheduled tasks:
  0> "Send Alice a dad joke" at 02:30PM (mcps=[lookout], allow=[lookout])
  1> "Check for urgent emails" every 300s (mcps=[lookout], allow=[lookout:read_inbox])

取消安排

按索引删除任务。

> unschedule 0
Removed task 0

保存提示

将任务提示保存到文件中。可用于编辑或重新创建日程条目。

# Save task 0's prompt to a file
> save-prompt 0 ~/prompts/morning_briefing.txt
Saved prompt to /Users/you/prompts/morning_briefing.txt (847 chars)

# Edit the file, then recreate the task
> unschedule 0
> schedule 9:00AM --mcps lookout --allow --prompt-file ~/prompts/morning_briefing.txt

mcps

列出从加载的可用MCP服务器 ~/.claude.json.

> mcps
Available MCP servers (3):
  (from ~/.claude.json)

  lookout (sse)

  aidderall (stdio)

  dataremote (stdio)

  Use 'mcps --verbose' for details

> mcps --verbose
# Shows full config including source project paths

帮助

获取命令帮助。

> help
Available commands:
==================================================
  exit         - Exit the scheduler, saving state.
  help         - List all available commands with usage info.
  list         - List all scheduled tasks.
  ...
==================================================

Type 'help ' for detailed usage

> help schedule
schedule:
  Schedule a Claude task at a specific time.
  Usage: schedule  [options] 

  ...

权限系统

默认情况下,Claude在使用工具时会提示权限。对于计划/无人值守的任务,您需要使用预授权工具 --allow.

权限模式

MCP工具 (需要冒号):

模式允许
--allow (无参数)所有加载的MCP中的所有工具
--allow lookout:所有工具来自 lookout (尾部冒号=全部)
--allow lookout:send_mail只有 send_maillookout
--allow lookout:mail_*通配符匹配(例如。, mail_send, mail_read)
--allow lookout:,aidderall:多个MCP

内置工具:

模式允许
--allow BashShell命令执行
--allow Edit文件编辑
--allow Write文件创建
--allow Read文件读取
--allow Edit,Write多种内置工具

组合的:

# MCP + built-in tools
> schedule 9:00AM --mcps lookout --allow lookout:read_inbox,Bash Check mail and run cleanup

安全考虑

  • 仅预先授权每项任务所需的最低工具
  • 使用特定的工具模式(lookout:send_mail)而不是毯子(lookout:)
  • 内置工具,如 Bash 功能强大-请谨慎使用
  • 任务没有 --allow 将提示权限(在无人值守模式下失败)

坚持

任务计划保存到 claude_schedule.pickle 退出时恢复,启动时恢复。

> exit
Saving schedule state...
Saved 2 task(s) to claude_schedule.pickle
Goodbye!

# Later...
$ python3 main.py
Claude Scheduler v1.0
========================================
Loaded 2 task(s) from claude_schedule.pickle
...

MCP服务器配置

MCP服务器从您的Claude代码配置加载到 ~/.claude.json。首先在Claude Code中配置它们,然后它们将在调度器中可用。

调度器从Claude配置中的所有项目中抓取MCP配置-使用 mcps 命令查看可用内容。

运行测试

# Run all tests
python3 tests/test_parser.py

# Or with pytest (if installed)
python -m pytest tests/ -v

建筑

claude_scheduler/
├── main.py           # Entry point, CLI commands
├── command_line.py   # REPL command processor framework
├── scheduler.py      # Background task scheduler thread
├── claude_task.py    # ClaudeTask class (SDK integration)
├── mcp_registry.py   # MCP config loader from ~/.claude.json
└── tests/
    └── test_parser.py

框图

┌─────────────────────────────────────────────────────────────────────────────┐
│                            CLAUDE SCHEDULER                                 │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│  ┌──────────────┐         ┌─────────────────────────────────────────────┐   │
│  │   User CLI   │         │              main.py                        │   │
│  │              │────────▶│   ClaudeSchedulerCommandProcessor           │   │
│  │  > schedule  │         │                                             │   │
│  │  > periodic  │         │   Commands:                                 │   │
│  │  > list      │         │   • parse_task_args()                       │   │
│  │  > unschedule│         │   • schedule / periodic                     │   │
│  │  > mcps      │         │   • save / reload                           │   │
│  └──────────────┘         └──────────────┬──────────────────────────────┘   │
│                                          │                                  │
│                                          │ creates                          │
│                                          ▼                                  │
│  ┌───────────────────┐           ┌───────────────────┐                      │
│  │  mcp_registry.py  │           │   claude_task.py  │                      │
│  │                   │◀──────────│                   │                      │
│  │  MCPRegistry      │  lookups  │   ClaudeTask      │                      │
│  │  • ~/.claude.json │           │   • prompt        │                      │
│  │  • get()          │           │   • mcps[]        │                      │
│  │  • list_servers() │           │   • allowed_tools │                      │
│  └───────────────────┘           │   • cwd           │                      │
│                                  └─────────┬─────────┘                      │
│                                            │                                │
│                                            │ added to                       │
│                                            ▼                                │
│                                  ┌───────────────────┐                      │
│  ┌────────────────────┐          │   scheduler.py    │                      │
│  │ claude_schedule    │◀────────▶│                   │                      │
│  │    .pickle         │  save/   │   TaskScheduler   │                      │
│  │                    │  load    │   (Thread)        │                      │
│  │ Persisted tasks    │          │                   │                      │
│  └────────────────────┘          │   polls every 1s  │                      │
│                                  │   ┌───────────┐   │                      │
│                                  │   │ task_list │   │                      │
│                                  │   └─────┬─────┘   │                      │
│                                  └─────────┼─────────┘                      │
│                                            │                                │
│                                            │ when due: execute()            │
│                                            ▼                                │
│                                  ┌───────────────────┐                      │
│                                  │  Background Thread│                      │
│                                  │                   │                      │
│                                  │  _run_agent()     │                      │
│                                  │       │           │                      │
│                                  └───────┼───────────┘                      │
│                                          │                                  │
└──────────────────────────────────────────┼──────────────────────────────────┘
                                           │
                                           ▼
                               ┌───────────────────────┐
                               │   claude_code_sdk     │
                               │                       │
                               │   query(              │
                               │     prompt,           │
                               │     allowed_tools,    │
                               │     mcps              │
                               │   )                   │
                               └───────────┬───────────┘
                                           │
                        ┌──────────────────┼──────────────────┐
                        ▼                  ▼                  ▼
                 ┌────────────┐    ┌────────────┐    ┌────────────┐
                 │ MCP: mail  │    │ MCP: tasks │    │ Bash/Edit  │
                 │  (lookout) │    │ (aidderall)│    │   /Write   │
                 └────────────┘    └────────────┘    └────────────┘

流量:

  1. 用户输入命令→ parse_task_args() 提取选项
  2. ClaudeTask 使用提示、MCP、允许的工具创建
  3. 任务已添加到 TaskScheduler 线程列表
  4. 调度程序每秒轮询一次,检查 should_activate()
  5. 到期时→ 生成异步线程→ calls claude_code_sdk.query()
  6. 代理使用配置的MCP和工具权限运行

安全说明

Pickle文件:使用Python的 pickle 模块(claude_schedule.pickle).Pickle文件在加载时可以执行任意代码。 切勿从不受信任的来源加载pickle文件。 只使用你自己创建的pickle文件。

如果您需要在机器之间共享时间表,请使用 save-prompt 将提示导出为纯文本文件,然后在目标计算机上重新创建任务。

许可证

麻省理工学院

目录标签

目录标签

命令行工具PythonClaude权限管理任务调度本地部署自动化工具MCP集成

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP