Skip to main content
Glama
vistart

schedule-manager

by vistart

schedule-manager

面向 LLM 工具调用的日程管理系统,提供 MCP Server 和 CLI 两种接口。

技术栈

  • Python 3.12+

  • rhosocial-activerecord — ActiveRecord 模式 ORM

  • rhosocial-activerecord-postgres — PostgreSQL 异步后端(psycopg3)

  • MCP SDK v2 — FastMCP,提供标准 MCP 工具接口

  • python-dateutil — RFC 5545 RRULE 解析

  • Pydantic — 模型校验

Related MCP server: AI Calendar Assistant

安装

git clone https://github.com/vistart/schedule-manager.git
cd schedule-manager
python -m venv .venv
source .venv/bin/activate
pip install -e .

配置

复制 .env.example 为 .env,填入数据库连接信息:

cp .env.example .env

.env 示例:

SCHEDULE_DB_HOST=192.168.1.3
SCHEDULE_DB_PORT=17689
SCHEDULE_DB_NAME=schedule_manager_db
SCHEDULE_DB_USER=root
SCHEDULE_DB_PASSWORD=your_password

初始化数据库表:

schedule-manager-setup-db

数据模型

schedules 表结构:

字段

类型

说明

id

INTEGER (PK)

自增主键

title

TEXT

日程标题(必填,非空)

description

TEXT

详细描述

status

TEXT

状态:pending / in_progress / completed / cancelled

priority

INTEGER

优先级 1(最高)~ 5(最低),默认 3

start_time

TIMESTAMP

开始时间

due_time

TIMESTAMP

截止时间

completed_at

TIMESTAMP

完成时间

location

TEXT

地点

tags

JSONB

标签列表

rrule

TEXT

RFC 5545 循环规则

rdate

JSONB

循环例外日期

exdate

JSONB

排除日期

created_at

TIMESTAMP

创建时间(自动)

updated_at

TIMESTAMP

更新时间(自动)

deleted_at

TIMESTAMP

软删除时间(NULL = 未删除)

CLI 使用

输出格式

默认 JSON 信封格式:

{"status": "ok", "data": {...}}
{"status": "error", "error": {"code": "NOT_FOUND", "message": "..."}}

加 --human 输出人类可读文本。

全局选项

选项

说明

--human

输出人类可读文本

--describe

输出机器可读的 JSON Schema 并退出

--help

显示帮助

命令

create — 创建日程

schedule-manager create --title '团队站会' --priority 3
schedule-manager create --title '部署 v2' --due-time '2026-09-10T14:00:00' --tags 'deploy,critical'
schedule-manager create --title '每日晨会' --rrule 'FREQ=DAILY' --start-time '2026-09-06T09:00:00'

参数

类型

必填

说明

--title

string

是

标题(非空)

--description / -d

string

否

描述

--status

string

否

状态(默认 pending)

--priority

int

否

优先级 1-5(默认 3)

--start-time

string

否

ISO 8601 开始时间

--due-time

string

否

ISO 8601 截止时间

--location

string

否

地点

--tags

string

否

逗号分隔的标签

--rrule

string

否

RFC 5545 循环规则

--dry-run

flag

否

预览,不真正创建

get — 查询日程

schedule-manager get --id 1

update — 更新日程(只修改提供的字段)

schedule-manager update --id 1 --status completed
schedule-manager update --id 1 --title '新标题' --priority 1

delete — 软删除日程

schedule-manager delete --id 1

complete — 标记完成

schedule-manager complete --id 1

list — 分页列表

schedule-manager list
schedule-manager list --status pending --sort-by priority --sort-order asc
schedule-manager list --page 2 --page-size 10
schedule-manager list --keyword 会议

参数

默认值

说明

--page

1

页码

--page-size

20

每页条数(1-100)

--status

-

按状态筛选

--priority

-

按优先级筛选

--keyword

-

关键词搜索(匹配标题和描述)

--sort-by

due_time

排序字段:due_time / created_at / updated_at / priority / title

--sort-order

asc

排序方向:asc / desc

schedule-manager search --keyword deadline

退出码

退出码

含义

0

成功

1

一般错误

2

参数错误

20

资源不存在

40

校验错误

MCP Server

通过 mcp CLI 启动:

mcp run schedule_manager.mcp_server

或在 MCP 客户端配置中添加:

{
  "mcpServers": {
    "schedule-manager": {
      "command": "schedule-manager-mcp",
      "args": []
    }
  }
}

工具列表

工具

说明

create_schedule

创建日程

get_schedule

按 ID 查询

update_schedule

更新日程(只改传入的字段)

delete_schedule

软删除

list_schedules

分页列表(支持筛选、排序)

complete_schedule

标记完成

search_schedules

关键词搜索

所有工具参数均为命名参数,返回 JSON 字典。

开发

pip install -e ".[test,dev]"

测试

pytest tests/ -v

需要 PostgreSQL 数据库。测试前确保 .env 配置正确并已执行 schedule-manager-setup-db。

项目结构

src/schedule_manager/
├── __init__.py
├── config.py       # 数据库配置(从 .env 加载)
├── model.py        # Schedule ActiveRecord 模型
├── mcp_server.py   # FastMCP Server,7 个工具
├── cli.py          # CLI 入口,LLM 优化设计
└── setup_db.py     # 数据库表初始化脚本

许可证

MIT

Related MCP Connectors

Related MCP Servers