时区与调度服务

Chronow是一个为AI代理提供准确时区、调度和间隔操作的MCP服务器,支持DST、商业日历和跨时区转换。

  • by Hmbown
  • Rust
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 Hmbown/chronow

使用说明

克罗诺

一个MCP服务器,为AI代理提供正确的时区、调度和间隔操作。无需猜测即可处理夏令时、商务日历和跨时区转换。

为什么

LLM不知道现在是什么时间。模型会收到系统提示符注入的日期字符串——就是这样。它不知道当前时间,也不知道你的时区,而且它无法在脑海中可靠地进行日历计算。当一个克劳德告诉你“市场开放”或“这是星期四”时,它会根据日期串进行基于氛围的运算。它经常出错。

如果没有工具,模型就会猜测:

  • 现在几点了(它真的不知道)
  • 日期是星期几
  • 时区转换
  • DST是否生效
  • 日期是否为工作日

Chronow用返回正确结果的工具调用替换了这种猜测:

You: "Set up a weekly 9am standup for the next 4 weeks"

Agent calls recurrence_preview →
  Mar  2  09:00 CST  (2026-03-02T15:00:00Z)
  Mar  9  09:00 CDT  (2026-03-09T14:00:00Z)  ← DST shift, local time stays 9am
  Mar 16  09:00 CDT  (2026-03-16T14:00:00Z)
  Mar 23  09:00 CDT  (2026-03-23T14:00:00Z)

UTC瞬时在夏令时边界处偏移一小时。当地时间保持在9:00。如果没有工具,该模型可能会保持UTC不变,并将会议悄悄地移动到当地上午10点,更不用说了。

这是干什么用的

  • 代理运行时间:给出模型 now, resolve_local, recurrence_preview, interval_check 而不是让它在头脑中做时区数学。
  • DST边缘:明确的消歧策略(compatible/earlier/later/reject)而不是沉默一小时的虫子。
  • 商务日历:生成跳过您指定的周末和节假日的定期日期。
  • 多语言堆栈:865个案例一致性语料库在Rust、TypeScript和Python之间强制执行字节相同的输出。

它不是什么

  • 日历集成(它不与谷歌日历、Outlook等通信)。
  • 假日数据库(您通过以下方式提供周末/假日规则 business_calendar).
  • 一个模糊的自然语言日期解析器(这种歧义正是Chronow所避免的)。

运作原理

Chronow是一个Rust时态引擎,公开了15个纯函数操作。主界面是 MCP服务器 (chronow-mcp)它在stdio上运行——将其添加到Claude Code、Claude Desktop、Cursor或任何MCP主机中,代理就会自动获得正确的时间工具。

船舶作为 命令行界面 (chronow)以及as Types/Python适配器,所有这些都根据相同的一致性套件进行了验证。

工具

工具 它做什么
now 任何时区的当前时间(自动检测用户的时区)
resolve_local 将挂钟时间转换为UTC——显式处理夏令时间隔/折叠
format_instant 在任何时区显示UTC时刻
recurrence_preview 使用可选的业务日历(跳过周末+假期)生成重复日期(每日/每周/每月)
add_duration 使用日历或绝对算术添加天/月/年
diff_instants 两个时刻之间的日历差异(年、月、日等)
interval_check 两个时间范围是否重叠/一个包含另一个/差距是多少?
snap_to 捕捉小时、天、周、月、季度或年的开始/结束
normalize_intent 解析一个小的确定性语法(tomorrow at 09:00, next monday at 14:00, every weekday at 10:00)--拒绝任何模棱两可的东西
zone_info 时区偏移、夏令时状态、下一次转换
parse_instant 将ISO 8601/RFC 3339解析为UTC
compare_instants 比较两个时刻(-1,0,1)
parse_duration / format_duration ISO 8601持续时间往返
list_zones 列出IANA时区名称

为什么不去约会fns/dayjs/themow?

这些对于应用程序代码来说很好。Chronow是为不同的问题而构建的:

  1. 明确的DST消歧。 四项政策(compatible/earlier/later/reject)所以你可以控制缝隙和褶皱处发生的事情,而不是默默地得到错误的结果。
  2. 跨语言对等。 865案例一致性语料库在Rust、TypeScript和Python中强制执行字节相同的输出。
  3. 本地代理。 自动检测时区。 normalize_intent 故意拒绝模棱两可的输入,而不是猜测。

快速开始

1.安装

预构建二进制文件 (推荐)--从下载 发布。每个档案都包括 chronow (CLI)和 chronow-mcp (MCP服务器)适用于Linux、macOS和Windows。

来源:

cargo install --path mcp   # MCP server
cargo install --path cli   # CLI (optional)

Docker:

docker run -i ghcr.io/hmbown/chronow-mcp

python pip install chronow (要求 chronow CLI打开 $PATH 或 CHRONOW_BIN 设置)。

2.添加到您的AI客户端

替换 /path/to/chronow-mcp 与实际路径(例如。 which chronow-mcp).

克劳德代码:

claude mcp add chronow /path/to/chronow-mcp

克劳德桌面版 --设置>开发人员>编辑配置:

{
  "mcpServers": {
    "chronow": { "command": "/path/to/chronow-mcp" }
  }
}

光标 --设置>MCP,或 .cursor/mcp.json:

{
  "mcpServers": {
    "chronow": { "command": "/path/to/chronow-mcp" }
  }
}

3.验证

问你的AI客户端“现在几点了?”——它应该返回你的本地时间,而不需要你指定时区。

时区检测

MCP服务器自动检测用户的时区: CHRONOW_DEFAULT_ZONE env-var>系统时区> TZ 环境变量>UTC。要覆盖,请执行以下操作:

{
  "mcpServers": {
    "chronow": {
      "command": "/path/to/chronow-mcp",
      "env": { "CHRONOW_DEFAULT_ZONE": "America/Chicago" }
    }
  }
}

DST消歧策略

对于夏令时转换期间不明确/不存在的当地时间:

政策 模糊(折叠) 不存在(差距)
compatible 提前偏移 向前移动
earlier 较早偏移 向后移动
later 后期偏移 向前移动
reject error 错误

组件

路径 描述
crates/core Rust时态引擎(库crate+WASM cdylib)
cli chronow 用于解析、转换和重复的CLI
mcp chronow-mcp MCP服务器二进制文件
packages/ts TypeScript包(WASM+CLI适配器)
packages/python Python包(CLI桥)
conformance/cases 865个规范一致性案例(JSON)
conformance/runner 跨语言一致性矩阵运行器
conformance/upstream 上游行为提取(dayjs、luxon、钟摆)
spec/temporal-contract.md 规范性行为合同

文档

许可证

麻省理工学院